Re: pgsql: Use FLEXIBLE_ARRAY_MEMBER in a bunch more places. - Mailing list pgsql-committers

From Tom Lane
Subject Re: pgsql: Use FLEXIBLE_ARRAY_MEMBER in a bunch more places.
Date
Msg-id 21330.1424473164@sss.pgh.pa.us
Whole thread Raw
In response to Re: pgsql: Use FLEXIBLE_ARRAY_MEMBER in a bunch more places.  (Andres Freund <andres@2ndquadrant.com>)
Responses Re: pgsql: Use FLEXIBLE_ARRAY_MEMBER in a bunch more places.
List pgsql-committers
Andres Freund <andres@2ndquadrant.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


pgsql-committers by date:

Previous
From: Tom Lane
Date:
Subject: pgsql: Fix statically allocated struct with FLEXIBLE_ARRAY_MEMBER membe
Next
From: Alvaro Herrera
Date:
Subject: Re: pgsql: Use FLEXIBLE_ARRAY_MEMBER in a bunch more places.