Re: Convert *GetDatum() and DatumGet*() macros to inline functions

Peter Eisentraut <peter.eisentraut@enterprisedb.com>

From: Peter Eisentraut <peter.eisentraut@enterprisedb.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Julien Rouhaud <rjuju123@gmail.com>, Aleksander Alekseev <aleksander@timescale.com>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2022-09-27T19:26:20Z
Lists: pgsql-hackers
On 26.09.22 19:34, Tom Lane wrote:
> I think we can do this while still having reasonable type-safety
> by adding AssertVariableIsOfTypeMacro() checks to the macros.
> An advantage of that solution is that we verify that the code
> will be safe for a 32-bit build even in 64-bit builds.  (Of
> course, it's just checking the variable's type not its lifespan,
> but this is still a step forward.)
> 
> 0001 attached is what you committed, 0002 is a proposed delta
> to fix the Fast macros.

Thanks, I committed it like that.

(I had looked into AssertVariableIsOfTypeMacro() for an earlier variant 
of this patch, before I had the idea with the inline functions.  It's in 
general a bit too strict, such as with short vs int, and signed vs 
unsigned, but it should work ok for this limited set of uses.)




Commits

  1. Convert *GetDatum() and DatumGet*() macros to inline functions

  2. Fix incorrect uses of Datum conversion macros