Re: pgsql: Improve performance of SendRowDescriptionMessage.
Noah Misch <noah@leadboat.com>
From: Noah Misch <noah@leadboat.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Andres Freund <andres@anarazel.de>, pgsql-committers@postgresql.org
Date: 2017-10-13T07:02:47Z
Lists: pgsql-hackers
Attachments
- extraneous-xlc-aix.pqtrace (text/plain)
- normal-gcc-gnu.pqtrace (text/plain)
In an earlier message, I said I didn't see the problem with xlc 13.1.3. I withdraw that statement. I had tested old code (commit c629324, 20 Aug), rendering the test invalid. xlc 13.1.3 does break commit 91d5f1a, and removing "restrict" fixes things as it did the older version. On Thu, Oct 12, 2017 at 10:44:20PM -0400, Tom Lane wrote: > Noah Misch <noah@leadboat.com> writes: > > On Thu, Oct 12, 2017 at 04:08:44PM -0700, Andres Freund wrote: > >> Noah, any chance you could force restrict to off on that animal? > > > I can confirm it allows "make check" to pass. > > So that leaves us with two theories: > > 1. hornet's compiler contains a bug that causes it to misoptimize > in the presence of "restrict". > > 2. There's a bug in the way HEAD is applying "restrict", which happens > not to manifest on other platforms. > > While I have to agree with Andres' evident feeling that it's probably > #1, I do not think we should dismiss #2 without inquiring a bit > harder. It would be really useful, I think, if we could characterize > exactly how the RowDescription output is broken in that build. > Noah, could you capture some of those messages somehow? I hacked psql to call PQtrace() and ran "psql -Xc 'select true'" in the defective configuration and in a working x64 GNU/Linux configuration. I've attached both PQtrace() products.
Commits
-
Force "restrict" not to be used when compiling with xlc.
- d133982d598c 11.0 landed
-
Rely on sizeof(typename) rather than sizeof(variable) in pqformat.h.
- 5229db6c6f92 11.0 landed
-
Use C99 restrict via pg_restrict, rather than restrict directly.
- 91d5f1a4a3e8 11.0 cited
-
Improve performance of SendRowDescriptionMessage.
- 4c119fbcd49b 11.0 cited
-
Partially flatten struct tupleDesc so that it can be used in DSM.
- c6293249dc17 11.0 cited
-
Remove useless duplicate inclusions of system header files.
- 9e3755ecb2d0 10.0 cited