Re: SendRowDescriptionMessage() is slow for queries with a lot of columns
Andres Freund <andres@anarazel.de>
From: Andres Freund <andres@anarazel.de>
To: Alvaro Herrera <alvherre@alvh.no-ip.org>
Cc: Robert Haas <robertmhaas@gmail.com>, "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>
Date: 2017-10-11T15:54:10Z
Lists: pgsql-hackers
On 2017-10-11 10:53:56 +0200, Alvaro Herrera wrote: > Andres Freund wrote: > > Hi, > > > > On 2017-10-03 13:58:37 -0400, Robert Haas wrote: > > > On Tue, Oct 3, 2017 at 12:23 PM, Andres Freund <andres@anarazel.de> wrote: > > > > Makes sense? > > > > > > Yes. > > > > Here's an updated version of this patchset. > > Maybe it'd be a good idea to push 0001 with some user of restrict ahead > of the rest, just to see how older msvc reacts. Can do. Not quite sure which older user yet, but I'm sure I can find something. > I wonder if it'd be a good idea to nag external users about pq_sendint > usage (is a #warning possible?). Think we'd need some separate infrastructure, i.e. for gcc ending up with __attribute__((deprecated)). I don't quite see this being worth adding it, but ... > OTOH, do we really need to keep it > around? Maybe we should ditch it, since obviously the compat shim can > be installed locally in each extension that really needs it (thinking > that most external code can simply be adjusted to the new functions). That seems like causing unnecessary pain - we're talking about a few lines in a header here, right? It's not like they'll be trivially converting to pq_sendint$width anytime soon, unless we backpatch this. > I'm scared about the not-null-terminated stringinfo stuff. Is it > possible to create bugs by polluting a stringinfo with it, then having > the stringinfo be used by unsuspecting code? Admittedly, you can break > things already with the binary appends, so probably not an issue. All of the converted sites already add integers into the StringInfo - and most of the those integers consist out of a couple bytes of 0, because they're lengths. So I don't think there's a huge danger here. Greetings, Andres Freund
Commits
-
Replace remaining uses of pq_sendint with pq_sendint{8,16,32}.
- 31079a4a8e66 11.0 landed
-
Improve performance of SendRowDescriptionMessage.
- 4c119fbcd49b 11.0 landed
-
Use one stringbuffer for all rows printed in printtup.c.
- f2dec34e19d3 11.0 landed
-
Add configure infrastructure to detect support for C99's restrict.
- 0b974dba2d6b 11.0 landed
-
Add more efficient functions to pqformat API.
- 1de09ad8eb1f 11.0 landed
-
Allow to avoid NUL-byte management for stringinfos and use in format.c.
- 70c2d1be2b1e 11.0 landed
-
Replace most usages of ntoh[ls] and hton[sl] with pg_bswap.h.
- 0ba99c84e8c7 11.0 landed
-
Extend & revamp pg_bswap.h infrastructure.
- 510b8cbff15f 11.0 landed