Re: pgsql: Use FLEXIBLE_ARRAY_MEMBER in a bunch more places.

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Andres Freund <andres(at)2ndquadrant(dot)com>
Cc: pgsql-committers(at)postgresql(dot)org, Michael Paquier <michael(dot)paquier(at)gmail(dot)com>
Subject: Re: pgsql: Use FLEXIBLE_ARRAY_MEMBER in a bunch more places.
Date: 2015-02-20 22:59:24
Message-ID: 21330.1424473164@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Andres Freund <andres(at)2ndquadrant(dot)com> writes:
> Even after that I get:
> /home/andres/src/postgresql/src/backend/utils/adt/tsrank.c:201:2: warning: flexible array initialization is a GNU extension
> [-Wgnu-flexible-array-initializer]
> {0}
> ^
> /home/andres/src/postgresql/src/include/tsearch/ts_type.h:66:15: note: initialized flexible array member 'pos' is here
> WordEntryPos pos[FLEXIBLE_ARRAY_MEMBER];
> ^

I cleaned that up, and also committed most of Michael's other changes.

What remains is the patch that flexible-izes HeapTupleHeaderData.t_bits.
I think we should do that, but I'm not happy with the widespread
changes like this:

- MAXALIGN(sizeof(HeapTupleHeaderData));
+ MAXALIGN(offsetof(HeapTupleHeaderData, t_bits));

I think this coding exposes much more knowledge about the innards of
HeapTupleHeaderData than we really want floating around in the places
that currently use sizeof(HeapTupleHeaderData). Most of them are not
that excited about having an exact answer anyway, and to the extent
that it does need to be exact this would not give the same result as
before.

A relevant technique that's been used in a lot of our code is to define
an intermediate macro, along the lines of

#define SizeofHeapTupleHeader offsetof(HeapTupleHeaderData, t_bits)

or maybe it would better be called HeapTupleHeaderFixedSize or
HeapTupleHeaderOverhead. Not sure what reads most nicely.

regards, tom lane

In response to

Responses

Browse pgsql-committers by date

  From Date Subject
Next Message Alvaro Herrera 2015-02-21 01:16:16 Re: pgsql: Use FLEXIBLE_ARRAY_MEMBER in a bunch more places.
Previous Message Tom Lane 2015-02-20 22:50:23 pgsql: Fix statically allocated struct with FLEXIBLE_ARRAY_MEMBER membe