diff options
Diffstat (limited to 'src/include/postgres.h')
-rw-r--r-- | src/include/postgres.h | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/include/postgres.h b/src/include/postgres.h index 453147e1f0b..cde939b7cab 100644 --- a/src/include/postgres.h +++ b/src/include/postgres.h @@ -630,6 +630,33 @@ extern Datum Int64GetDatum(int64 X); #endif /* + * DatumGetUInt64 + * Returns 64-bit unsigned integer value of a datum. + * + * Note: this macro hides whether int64 is pass by value or by reference. + */ + +#ifdef USE_FLOAT8_BYVAL +#define DatumGetUInt64(X) ((uint64) GET_8_BYTES(X)) +#else +#define DatumGetUInt64(X) (* ((uint64 *) DatumGetPointer(X))) +#endif + +/* + * UInt64GetDatum + * Returns datum representation for a 64-bit unsigned integer. + * + * Note: if int64 is pass by reference, this function returns a reference + * to palloc'd space. + */ + +#ifdef USE_FLOAT8_BYVAL +#define UInt64GetDatum(X) ((Datum) SET_8_BYTES(X)) +#else +#define UInt64GetDatum(X) Int64GetDatum((int64) (X)) +#endif + +/* * DatumGetFloat4 * Returns 4-byte floating point value of a datum. * |