Re: SendRowDescriptionMessage() is slow for queries with a lot of columns
Andres Freund <andres@anarazel.de>
From: Andres Freund <andres@anarazel.de>
To: pgsql-hackers@postgresql.org
Date: 2017-10-03T07:55:22Z
Lists: pgsql-hackers
Attachments
Hi, Attached is a revised version of this patchset. I'd like to get some input on two points: 1) Does anybody have a better idea than the static buffer in SendRowDescriptionMessage()? That's not particularly pretty, but there's not really a convenient stringbuffer to use when called from exec_describe_portal_message(). We could instead create a local buffer for exec_describe_portal_message(). An alternative idea would be to have one reeusable buffer created for each transaction command, but I'm not sure that's really better. 2) There's a lot of remaining pq_sendint() callers in other parts of the tree. If others are ok with that, I'd do a separate pass over them. I'd say that even after doing that, we should keep pq_sendint(), because a lot of extension code is using that. 3) The use of restrict, with a configure based fallback, is something we've not done before, but it's C99 and delivers significantly more efficient code. Any arguments against? Regards, Andres
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