Re: PgStat_HashKey padding issue when passed by reference - Mailing list pgsql-hackers

From Michael Paquier
Subject Re: PgStat_HashKey padding issue when passed by reference
Date
Msg-id aL4weYYAsm9CcnR2@paquier.xyz
Whole thread Raw
In response to Re: PgStat_HashKey padding issue when passed by reference  (Michael Paquier <michael@paquier.xyz>)
Responses Re: PgStat_HashKey padding issue when passed by reference
Re: PgStat_HashKey padding issue when passed by reference
List pgsql-hackers
On Sat, Sep 06, 2025 at 10:35:58AM +0900, Michael Paquier wrote:
> One idea would be, for example, that keys used with simplehash should
> never have any padding at all, and we could force a check in the shape
> of a static assertion to force a failure when attempting to compile
> code that attempts to do so.  That would give us a way to check in a
> broader way if some code path do that currently, scaling better with
> the expectations we could have in the whole tree or even out-of-core
> extension code.

Doing some research here, I have noticed this one:
https://en.cppreference.com/w/cpp/types/has_unique_object_representations.html

I was also wondering about some use of pg_attribute_packed() here, or
perhaps enforce a check based on offsetof() and the structure size,
but I doubt that any of that would be really portable across the
buildfarm.

Another idea would be to make sure that the sizeof() of the structure
matches with the sum of the sizeof() for the individual fields in it.
That's cumbersome to rely on, still simpler.  Perhaps we could do
something among these lines for pgstat_shmem.c, or just document that
the structure should never have any padding.
--
Michael

Attachment

pgsql-hackers by date:

Previous
From: Tender Wang
Date:
Subject: Re: Reduce "Var IS [NOT] NULL" quals during constant folding
Next
From: Michael Paquier
Date:
Subject: Re: [PATCH] Update parser README to include parse_jsontable.c