mirror of
https://github.com/postgres/postgres.git
synced 2025-10-24 01:29:19 +03:00
Convert *GetDatum() and DatumGet*() macros to inline functions
The previous macro implementations just cast the argument to a target type but did not check whether the input type was appropriate. The function implementation can do better type checking of the input type. For the *GetDatumFast() macros, converting to an inline function doesn't work in the !USE_FLOAT8_BYVAL case, but we can use AssertVariableIsOfTypeMacro() to get a similar level of type checking. Reviewed-by: Aleksander Alekseev <aleksander@timescale.com> Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us> Discussion: https://www.postgresql.org/message-id/flat/8528fb7e-0aa2-6b54-85fb-0c0886dbd6ed%40enterprisedb.com
This commit is contained in:
@@ -62,8 +62,18 @@ typedef char GinTernaryValue;
|
||||
#define GIN_MAYBE 2 /* don't know if item is present / don't know
|
||||
* if matches */
|
||||
|
||||
#define DatumGetGinTernaryValue(X) ((GinTernaryValue)(X))
|
||||
#define GinTernaryValueGetDatum(X) ((Datum)(X))
|
||||
static inline GinTernaryValue
|
||||
DatumGetGinTernaryValue(Datum X)
|
||||
{
|
||||
return (GinTernaryValue) X;
|
||||
}
|
||||
|
||||
static inline Datum
|
||||
GinTernaryValueGetDatum(GinTernaryValue X)
|
||||
{
|
||||
return (Datum) X;
|
||||
}
|
||||
|
||||
#define PG_RETURN_GIN_TERNARY_VALUE(x) return GinTernaryValueGetDatum(x)
|
||||
|
||||
/* GUC parameters */
|
||||
|
||||
Reference in New Issue
Block a user