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

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: Peter Eisentraut <peter.eisentraut@enterprisedb.com>
Cc: Julien Rouhaud <rjuju123@gmail.com>, Aleksander Alekseev <aleksander@timescale.com>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2022-09-27T20:13:36Z
Lists: pgsql-hackers
Peter Eisentraut <peter.eisentraut@enterprisedb.com> writes:
> 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.

> (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.)

Yeah.  I had sort of expected to need a UInt64GetDatumFast variant
that would accept uint64, but there doesn't appear to be anyplace
that wants that today.  We should be willing to add it if anyone
complains, though.

			regards, tom lane



Commits

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

  2. Fix incorrect uses of Datum conversion macros