Re: pgsql: Improve performance of SendRowDescriptionMessage.

Andres Freund <andres@anarazel.de>

From: Andres Freund <andres@anarazel.de>
To: Noah Misch <noah@leadboat.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, pgsql-committers@postgresql.org
Date: 2017-10-13T07:32:43Z
Lists: pgsql-hackers
On 2017-10-12 19:35:36 -0700, Noah Misch wrote:
> On Thu, Oct 12, 2017 at 04:08:44PM -0700, Andres Freund wrote:
> > So we've two animals (hornet, sungazer) that are:
> > #define SIZEOF_SIZE_T 8
> > #define WORDS_BIGENDIAN 1
> > #define restrict __restrict
> > 
> > one compiled with xlc that fails and one with gcc that succeeds. I'm
> > hesitant to reach for that, but I wonder if there's a compiler
> > bug. Alternatively there could be some undefined behaviour here that
> > only triggers on xlc 64bit, but I'm not quite seeing it.
> > 
> > Noah, any chance you could force restrict to off on that animal?
> 
> I can confirm it allows "make check" to pass.  Specifically, I did this
> against commit 91d5f1a:
> 
> --- src/include/pg_config.h~    2017-10-12 18:11:33.000000000 -0700
> +++ src/include/pg_config.h     2017-10-12 18:22:34.000000000 -0700
> @@ -929 +929 @@
> - #define pg_restrict __restrict
> + #define pg_restrict
> @@ -934 +934 @@
> - #define restrict __restrict
> + #define restrict
> 
> I have no reason to believe this is specific to hornet's installation, so I
> recommend against altering hornet's configuration.  It's too likely that the
> next xlc user will need to do the same thing.

Yea, I wasn't trying to propose that - I just thought it'd be easier to
narrow down with access to the machine than 6h cycle buildfarm
debugging.


> > Otherwise I can push a platform fix that disables it.
> 
> This sounds reasonable.

I'm not getting a great vibe about the aix/xlc quality in this thread :(


Greetings,

Andres Freund


Commits

  1. Force "restrict" not to be used when compiling with xlc.

  2. Rely on sizeof(typename) rather than sizeof(variable) in pqformat.h.

  3. Use C99 restrict via pg_restrict, rather than restrict directly.

  4. Improve performance of SendRowDescriptionMessage.

  5. Partially flatten struct tupleDesc so that it can be used in DSM.

  6. Remove useless duplicate inclusions of system header files.