diff options
| author | Peter Eisentraut | 2022-09-12 17:57:07 +0000 |
|---|---|---|
| committer | Peter Eisentraut | 2022-09-12 17:57:07 +0000 |
| commit | e8d78581bb864369035c736a82ecfb57482a1a09 (patch) | |
| tree | b6881a0046c905ad671e0b43d60a42a119f4a3d4 /src/include/utils | |
| parent | 595836e99bf1ee6d43405b885fb69bb8c6d3ee23 (diff) | |
Revert "Convert *GetDatum() and DatumGet*() macros to inline functions"
This reverts commit 595836e99bf1ee6d43405b885fb69bb8c6d3ee23.
It has problems when USE_FLOAT8_BYVAL is off.
Diffstat (limited to 'src/include/utils')
| -rw-r--r-- | src/include/utils/cash.h | 14 | ||||
| -rw-r--r-- | src/include/utils/date.h | 42 | ||||
| -rw-r--r-- | src/include/utils/expandeddatum.h | 13 | ||||
| -rw-r--r-- | src/include/utils/expandedrecord.h | 16 | ||||
| -rw-r--r-- | src/include/utils/geo_decls.h | 98 | ||||
| -rw-r--r-- | src/include/utils/inet.h | 49 | ||||
| -rw-r--r-- | src/include/utils/jsonb.h | 31 | ||||
| -rw-r--r-- | src/include/utils/jsonpath.h | 14 | ||||
| -rw-r--r-- | src/include/utils/multirangetypes.h | 23 | ||||
| -rw-r--r-- | src/include/utils/numeric.h | 21 | ||||
| -rw-r--r-- | src/include/utils/pg_lsn.h | 13 | ||||
| -rw-r--r-- | src/include/utils/rangetypes.h | 23 | ||||
| -rw-r--r-- | src/include/utils/timestamp.h | 44 | ||||
| -rw-r--r-- | src/include/utils/uuid.h | 15 | ||||
| -rw-r--r-- | src/include/utils/varbit.h | 21 | ||||
| -rw-r--r-- | src/include/utils/xid8.h | 14 | ||||
| -rw-r--r-- | src/include/utils/xml.h | 13 |
17 files changed, 78 insertions, 386 deletions
diff --git a/src/include/utils/cash.h b/src/include/utils/cash.h index 55d45fadd48..2e332d83b1c 100644 --- a/src/include/utils/cash.h +++ b/src/include/utils/cash.h @@ -17,18 +17,8 @@ typedef int64 Cash; /* Cash is pass-by-reference if and only if int64 is */ -static inline Cash -DatumGetCash(Datum X) -{ - return DatumGetInt64(X); -} - -static inline Datum -CashGetDatum(Cash X) -{ - return Int64GetDatum(X); -} - +#define DatumGetCash(X) ((Cash) DatumGetInt64(X)) +#define CashGetDatum(X) Int64GetDatum(X) #define PG_GETARG_CASH(n) DatumGetCash(PG_GETARG_DATUM(n)) #define PG_RETURN_CASH(x) return CashGetDatum(x) diff --git a/src/include/utils/date.h b/src/include/utils/date.h index 0bbe8891285..3991da41f0f 100644 --- a/src/include/utils/date.h +++ b/src/include/utils/date.h @@ -45,46 +45,18 @@ typedef struct #define MAX_TIME_PRECISION 6 /* - * Functions for fmgr-callable functions. + * Macros for fmgr-callable functions. * * For TimeADT, we make use of the same support routines as for int64. * Therefore TimeADT is pass-by-reference if and only if int64 is! */ -static inline DateADT -DatumGetDateADT(Datum X) -{ - return (DateADT) DatumGetInt32(X); -} - -static inline TimeADT -DatumGetTimeADT(Datum X) -{ - return (TimeADT) DatumGetInt64(X); -} - -static inline TimeTzADT * -DatumGetTimeTzADTP(Datum X) -{ - return (TimeTzADT *) DatumGetPointer(X); -} +#define DatumGetDateADT(X) ((DateADT) DatumGetInt32(X)) +#define DatumGetTimeADT(X) ((TimeADT) DatumGetInt64(X)) +#define DatumGetTimeTzADTP(X) ((TimeTzADT *) DatumGetPointer(X)) -static inline Datum -DateADTGetDatum(DateADT X) -{ - return Int32GetDatum(X); -} - -static inline Datum -TimeADTGetDatum(TimeADT X) -{ - return Int64GetDatum(X); -} - -static inline Datum -TimeTzADTPGetDatum(const TimeTzADT *X) -{ - return PointerGetDatum(X); -} +#define DateADTGetDatum(X) Int32GetDatum(X) +#define TimeADTGetDatum(X) Int64GetDatum(X) +#define TimeTzADTPGetDatum(X) PointerGetDatum(X) #define PG_GETARG_DATEADT(n) DatumGetDateADT(PG_GETARG_DATUM(n)) #define PG_GETARG_TIMEADT(n) DatumGetTimeADT(PG_GETARG_DATUM(n)) diff --git a/src/include/utils/expandeddatum.h b/src/include/utils/expandeddatum.h index c4818eb0541..ffdb0c45bdf 100644 --- a/src/include/utils/expandeddatum.h +++ b/src/include/utils/expandeddatum.h @@ -133,17 +133,8 @@ struct ExpandedObjectHeader * (More of these might be worth inlining later.) */ -static inline Datum -EOHPGetRWDatum(const struct ExpandedObjectHeader *eohptr) -{ - return PointerGetDatum(eohptr->eoh_rw_ptr); -} - -static inline Datum -EOHPGetRODatum(const struct ExpandedObjectHeader *eohptr) -{ - return PointerGetDatum(eohptr->eoh_ro_ptr); -} +#define EOHPGetRWDatum(eohptr) PointerGetDatum((eohptr)->eoh_rw_ptr) +#define EOHPGetRODatum(eohptr) PointerGetDatum((eohptr)->eoh_ro_ptr) /* Does the Datum represent a writable expanded object? */ #define DatumIsReadWriteExpandedObject(d, isnull, typlen) \ diff --git a/src/include/utils/expandedrecord.h b/src/include/utils/expandedrecord.h index aaf5b6bfd1b..be60e2ce530 100644 --- a/src/include/utils/expandedrecord.h +++ b/src/include/utils/expandedrecord.h @@ -138,20 +138,10 @@ typedef struct ExpandedRecordHeader MemoryContextCallback er_mcb; } ExpandedRecordHeader; -/* fmgr functions and macros for expanded record objects */ -static inline Datum -ExpandedRecordGetDatum(const ExpandedRecordHeader *erh) -{ - return EOHPGetRWDatum(&erh->hdr); -} - -static inline Datum -ExpandedRecordGetRODatum(const ExpandedRecordHeader *erh) -{ - return EOHPGetRODatum(&erh->hdr); -} - +/* fmgr macros for expanded record objects */ #define PG_GETARG_EXPANDED_RECORD(n) DatumGetExpandedRecord(PG_GETARG_DATUM(n)) +#define ExpandedRecordGetDatum(erh) EOHPGetRWDatum(&(erh)->hdr) +#define ExpandedRecordGetRODatum(erh) EOHPGetRODatum(&(erh)->hdr) #define PG_RETURN_EXPANDED_RECORD(x) PG_RETURN_DATUM(ExpandedRecordGetDatum(x)) /* assorted other macros */ diff --git a/src/include/utils/geo_decls.h b/src/include/utils/geo_decls.h index 05726778adb..719030777e4 100644 --- a/src/include/utils/geo_decls.h +++ b/src/include/utils/geo_decls.h @@ -166,112 +166,48 @@ typedef struct } CIRCLE; /* - * fmgr interface functions + * fmgr interface macros * * Path and Polygon are toastable varlena types, the others are just * fixed-size pass-by-reference types. */ -static inline Point * -DatumGetPointP(Datum X) -{ - return (Point *) DatumGetPointer(X); -} -static inline Datum -PointPGetDatum(const Point *X) -{ - return PointerGetDatum(X); -} +#define DatumGetPointP(X) ((Point *) DatumGetPointer(X)) +#define PointPGetDatum(X) PointerGetDatum(X) #define PG_GETARG_POINT_P(n) DatumGetPointP(PG_GETARG_DATUM(n)) #define PG_RETURN_POINT_P(x) return PointPGetDatum(x) -static inline LSEG * -DatumGetLsegP(Datum X) -{ - return (LSEG *) DatumGetPointer(X); -} -static inline Datum -LsegPGetDatum(const LSEG *X) -{ - return PointerGetDatum(X); -} +#define DatumGetLsegP(X) ((LSEG *) DatumGetPointer(X)) +#define LsegPGetDatum(X) PointerGetDatum(X) #define PG_GETARG_LSEG_P(n) DatumGetLsegP(PG_GETARG_DATUM(n)) #define PG_RETURN_LSEG_P(x) return LsegPGetDatum(x) -static inline PATH * -DatumGetPathP(Datum X) -{ - return (PATH *) PG_DETOAST_DATUM(X); -} -static inline PATH * -DatumGetPathPCopy(Datum X) -{ - return (PATH *) PG_DETOAST_DATUM_COPY(X); -} -static inline Datum -PathPGetDatum(const PATH *X) -{ - return PointerGetDatum(X); -} +#define DatumGetPathP(X) ((PATH *) PG_DETOAST_DATUM(X)) +#define DatumGetPathPCopy(X) ((PATH *) PG_DETOAST_DATUM_COPY(X)) +#define PathPGetDatum(X) PointerGetDatum(X) #define PG_GETARG_PATH_P(n) DatumGetPathP(PG_GETARG_DATUM(n)) #define PG_GETARG_PATH_P_COPY(n) DatumGetPathPCopy(PG_GETARG_DATUM(n)) #define PG_RETURN_PATH_P(x) return PathPGetDatum(x) -static inline LINE * -DatumGetLineP(Datum X) -{ - return (LINE *) DatumGetPointer(X); -} -static inline Datum -LinePGetDatum(const LINE *X) -{ - return PointerGetDatum(X); -} +#define DatumGetLineP(X) ((LINE *) DatumGetPointer(X)) +#define LinePGetDatum(X) PointerGetDatum(X) #define PG_GETARG_LINE_P(n) DatumGetLineP(PG_GETARG_DATUM(n)) #define PG_RETURN_LINE_P(x) return LinePGetDatum(x) -static inline BOX * -DatumGetBoxP(Datum X) -{ - return (BOX *) DatumGetPointer(X); -} -static inline Datum -BoxPGetDatum(const BOX *X) -{ - return PointerGetDatum(X); -} +#define DatumGetBoxP(X) ((BOX *) DatumGetPointer(X)) +#define BoxPGetDatum(X) PointerGetDatum(X) #define PG_GETARG_BOX_P(n) DatumGetBoxP(PG_GETARG_DATUM(n)) #define PG_RETURN_BOX_P(x) return BoxPGetDatum(x) -static inline POLYGON * -DatumGetPolygonP(Datum X) -{ - return (POLYGON *) PG_DETOAST_DATUM(X); -} -static inline POLYGON * -DatumGetPolygonPCopy(Datum X) -{ - return (POLYGON *) PG_DETOAST_DATUM_COPY(X); -} -static inline Datum -PolygonPGetDatum(const POLYGON *X) -{ - return PointerGetDatum(X); -} +#define DatumGetPolygonP(X) ((POLYGON *) PG_DETOAST_DATUM(X)) +#define DatumGetPolygonPCopy(X) ((POLYGON *) PG_DETOAST_DATUM_COPY(X)) +#define PolygonPGetDatum(X) PointerGetDatum(X) #define PG_GETARG_POLYGON_P(n) DatumGetPolygonP(PG_GETARG_DATUM(n)) #define PG_GETARG_POLYGON_P_COPY(n) DatumGetPolygonPCopy(PG_GETARG_DATUM(n)) #define PG_RETURN_POLYGON_P(x) return PolygonPGetDatum(x) -static inline CIRCLE * -DatumGetCircleP(Datum X) -{ - return (CIRCLE *) DatumGetPointer(X); -} -static inline Datum -CirclePGetDatum(const CIRCLE *X) -{ - return PointerGetDatum(X); -} +#define DatumGetCircleP(X) ((CIRCLE *) DatumGetPointer(X)) +#define CirclePGetDatum(X) PointerGetDatum(X) #define PG_GETARG_CIRCLE_P(n) DatumGetCircleP(PG_GETARG_DATUM(n)) #define PG_RETURN_CIRCLE_P(x) return CirclePGetDatum(x) diff --git a/src/include/utils/inet.h b/src/include/utils/inet.h index 5438cfaba54..b1ec9723dfb 100644 --- a/src/include/utils/inet.h +++ b/src/include/utils/inet.h @@ -119,58 +119,23 @@ typedef struct macaddr8 /* * fmgr interface macros */ -static inline inet * -DatumGetInetPP(Datum X) -{ - return (inet *) PG_DETOAST_DATUM_PACKED(X); -} - -static inline Datum -InetPGetDatum(const inet *X) -{ - return PointerGetDatum(X); -} - +#define DatumGetInetPP(X) ((inet *) PG_DETOAST_DATUM_PACKED(X)) +#define InetPGetDatum(X) PointerGetDatum(X) #define PG_GETARG_INET_PP(n) DatumGetInetPP(PG_GETARG_DATUM(n)) #define PG_RETURN_INET_P(x) return InetPGetDatum(x) - /* obsolescent variants */ -static inline inet * -DatumGetInetP(Datum X) -{ - return (inet *) PG_DETOAST_DATUM(X); -} +#define DatumGetInetP(X) ((inet *) PG_DETOAST_DATUM(X)) #define PG_GETARG_INET_P(n) DatumGetInetP(PG_GETARG_DATUM(n)) /* macaddr is a fixed-length pass-by-reference datatype */ -static inline macaddr * -DatumGetMacaddrP(Datum X) -{ - return (macaddr *) DatumGetPointer(X); -} - -static inline Datum -MacaddrPGetDatum(const macaddr *X) -{ - return PointerGetDatum(X); -} - +#define DatumGetMacaddrP(X) ((macaddr *) DatumGetPointer(X)) +#define MacaddrPGetDatum(X) PointerGetDatum(X) #define PG_GETARG_MACADDR_P(n) DatumGetMacaddrP(PG_GETARG_DATUM(n)) #define PG_RETURN_MACADDR_P(x) return MacaddrPGetDatum(x) /* macaddr8 is a fixed-length pass-by-reference datatype */ -static inline macaddr8 * -DatumGetMacaddr8P(Datum X) -{ - return (macaddr8 *) DatumGetPointer(X); -} - -static inline Datum -Macaddr8PGetDatum(const macaddr8 *X) -{ - return PointerGetDatum(X); -} - +#define DatumGetMacaddr8P(X) ((macaddr8 *) DatumGetPointer(X)) +#define Macaddr8PGetDatum(X) PointerGetDatum(X) #define PG_GETARG_MACADDR8_P(n) DatumGetMacaddr8P(PG_GETARG_DATUM(n)) #define PG_RETURN_MACADDR8_P(x) return Macaddr8PGetDatum(x) diff --git a/src/include/utils/jsonb.h b/src/include/utils/jsonb.h index bdd1c9c75d8..4cbe6edf218 100644 --- a/src/include/utils/jsonb.h +++ b/src/include/utils/jsonb.h @@ -67,6 +67,14 @@ typedef enum #define JGINFLAG_HASHED 0x10 /* OR'd into flag if value was hashed */ #define JGIN_MAXLENGTH 125 /* max length of text part before hashing */ +/* Convenience macros */ +#define DatumGetJsonbP(d) ((Jsonb *) PG_DETOAST_DATUM(d)) +#define DatumGetJsonbPCopy(d) ((Jsonb *) PG_DETOAST_DATUM_COPY(d)) +#define JsonbPGetDatum(p) PointerGetDatum(p) +#define PG_GETARG_JSONB_P(x) DatumGetJsonbP(PG_GETARG_DATUM(x)) +#define PG_GETARG_JSONB_P_COPY(x) DatumGetJsonbPCopy(PG_GETARG_DATUM(x)) +#define PG_RETURN_JSONB_P(x) PG_RETURN_POINTER(x) + typedef struct JsonbPair JsonbPair; typedef struct JsonbValue JsonbValue; @@ -367,29 +375,6 @@ typedef struct JsonbIterator } JsonbIterator; -/* Convenience macros */ -static inline Jsonb * -DatumGetJsonbP(Datum d) -{ - return (Jsonb *) PG_DETOAST_DATUM(d); -} - -static inline Jsonb * -DatumGetJsonbPCopy(Datum d) -{ - return (Jsonb *) PG_DETOAST_DATUM_COPY(d); -} - -static inline Datum -JsonbPGetDatum(const Jsonb *p) -{ - return PointerGetDatum(p); -} - -#define PG_GETARG_JSONB_P(x) DatumGetJsonbP(PG_GETARG_DATUM(x)) -#define PG_GETARG_JSONB_P_COPY(x) DatumGetJsonbPCopy(PG_GETARG_DATUM(x)) -#define PG_RETURN_JSONB_P(x) PG_RETURN_POINTER(x) - /* Support functions */ extern uint32 getJsonbOffset(const JsonbContainer *jc, int index); extern uint32 getJsonbLength(const JsonbContainer *jc, int index); diff --git a/src/include/utils/jsonpath.h b/src/include/utils/jsonpath.h index 13f60cdc09b..cd0b5d5b61c 100644 --- a/src/include/utils/jsonpath.h +++ b/src/include/utils/jsonpath.h @@ -29,18 +29,8 @@ typedef struct #define JSONPATH_LAX (0x80000000) #define JSONPATH_HDRSZ (offsetof(JsonPath, data)) -static inline JsonPath * -DatumGetJsonPathP(Datum d) -{ - return (JsonPath *) PG_DETOAST_DATUM(d); -} - -static inline JsonPath * -DatumGetJsonPathPCopy(Datum d) -{ - return (JsonPath *) PG_DETOAST_DATUM_COPY(d); -} - +#define DatumGetJsonPathP(d) ((JsonPath *) DatumGetPointer(PG_DETOAST_DATUM(d))) +#define DatumGetJsonPathPCopy(d) ((JsonPath *) DatumGetPointer(PG_DETOAST_DATUM_COPY(d))) #define PG_GETARG_JSONPATH_P(x) DatumGetJsonPathP(PG_GETARG_DATUM(x)) #define PG_GETARG_JSONPATH_P_COPY(x) DatumGetJsonPathPCopy(PG_GETARG_DATUM(x)) #define PG_RETURN_JSONPATH_P(p) PG_RETURN_POINTER(p) diff --git a/src/include/utils/multirangetypes.h b/src/include/utils/multirangetypes.h index 23bce0005ff..915330f990b 100644 --- a/src/include/utils/multirangetypes.h +++ b/src/include/utils/multirangetypes.h @@ -42,26 +42,11 @@ typedef struct #define MultirangeIsEmpty(mr) ((mr)->rangeCount == 0) /* - * fmgr functions for multirange type objects + * fmgr macros for multirange type objects */ -static inline MultirangeType * -DatumGetMultirangeTypeP(Datum X) -{ - return (MultirangeType *) PG_DETOAST_DATUM(X); -} - -static inline MultirangeType * -DatumGetMultirangeTypePCopy(Datum X) -{ - return (MultirangeType *) PG_DETOAST_DATUM_COPY(X); -} - -static inline Datum -MultirangeTypePGetDatum(const MultirangeType *X) -{ - return PointerGetDatum(X); -} - +#define DatumGetMultirangeTypeP(X) ((MultirangeType *) PG_DETOAST_DATUM(X)) +#define DatumGetMultirangeTypePCopy(X) ((MultirangeType *) PG_DETOAST_DATUM_COPY(X)) +#define MultirangeTypePGetDatum(X) PointerGetDatum(X) #define PG_GETARG_MULTIRANGE_P(n) DatumGetMultirangeTypeP(PG_GETARG_DATUM(n)) #define PG_GETARG_MULTIRANGE_P_COPY(n) DatumGetMultirangeTypePCopy(PG_GETARG_DATUM(n)) #define PG_RETURN_MULTIRANGE_P(x) return MultirangeTypePGetDatum(x) diff --git a/src/include/utils/numeric.h b/src/include/utils/numeric.h index 88c62c5348b..3caa74dfe7a 100644 --- a/src/include/utils/numeric.h +++ b/src/include/utils/numeric.h @@ -56,24 +56,9 @@ typedef struct NumericData *Numeric; * fmgr interface macros */ -static inline Numeric -DatumGetNumeric(Datum X) -{ - return (Numeric) PG_DETOAST_DATUM(X); -} - -static inline Numeric -DatumGetNumericCopy(Datum X) -{ - return (Numeric) PG_DETOAST_DATUM_COPY(X); -} - -static inline Datum -NumericGetDatum(Numeric X) -{ - return PointerGetDatum(X); -} - +#define DatumGetNumeric(X) ((Numeric) PG_DETOAST_DATUM(X)) +#define DatumGetNumericCopy(X) ((Numeric) PG_DETOAST_DATUM_COPY(X)) +#define NumericGetDatum(X) PointerGetDatum(X) #define PG_GETARG_NUMERIC(n) DatumGetNumeric(PG_GETARG_DATUM(n)) #define PG_GETARG_NUMERIC_COPY(n) DatumGetNumericCopy(PG_GETARG_DATUM(n)) #define PG_RETURN_NUMERIC(x) return NumericGetDatum(x) diff --git a/src/include/utils/pg_lsn.h b/src/include/utils/pg_lsn.h index 5313afbfe2e..7b708f10736 100644 --- a/src/include/utils/pg_lsn.h +++ b/src/include/utils/pg_lsn.h @@ -18,17 +18,8 @@ #include "access/xlogdefs.h" #include "fmgr.h" -static inline XLogRecPtr -DatumGetLSN(Datum X) -{ - return (XLogRecPtr) DatumGetInt64(X); -} - -static inline Datum -LSNGetDatum(XLogRecPtr X) -{ - return Int64GetDatum((int64) X); -} +#define DatumGetLSN(X) ((XLogRecPtr) DatumGetInt64(X)) +#define LSNGetDatum(X) (Int64GetDatum((int64) (X))) #define PG_GETARG_LSN(n) DatumGetLSN(PG_GETARG_DATUM(n)) #define PG_RETURN_LSN(x) return LSNGetDatum(x) diff --git a/src/include/utils/rangetypes.h b/src/include/utils/rangetypes.h index 661e4892ece..993fad4fc2a 100644 --- a/src/include/utils/rangetypes.h +++ b/src/include/utils/rangetypes.h @@ -68,26 +68,11 @@ typedef struct } RangeBound; /* - * fmgr functions for range type objects + * fmgr macros for range type objects */ -static inline RangeType * -DatumGetRangeTypeP(Datum X) -{ - return (RangeType *) PG_DETOAST_DATUM(X); -} - -static inline RangeType * -DatumGetRangeTypePCopy(Datum X) -{ - return (RangeType *) PG_DETOAST_DATUM_COPY(X); -} - -static inline Datum -RangeTypePGetDatum(const RangeType *X) -{ - return PointerGetDatum(X); -} - +#define DatumGetRangeTypeP(X) ((RangeType *) PG_DETOAST_DATUM(X)) +#define DatumGetRangeTypePCopy(X) ((RangeType *) PG_DETOAST_DATUM_COPY(X)) +#define RangeTypePGetDatum(X) PointerGetDatum(X) #define PG_GETARG_RANGE_P(n) DatumGetRangeTypeP(PG_GETARG_DATUM(n)) #define PG_GETARG_RANGE_P_COPY(n) DatumGetRangeTypePCopy(PG_GETARG_DATUM(n)) #define PG_RETURN_RANGE_P(x) return RangeTypePGetDatum(x) diff --git a/src/include/utils/timestamp.h b/src/include/utils/timestamp.h index 3602638bdc5..edf3a973186 100644 --- a/src/include/utils/timestamp.h +++ b/src/include/utils/timestamp.h @@ -19,46 +19,18 @@ /* - * Functions for fmgr-callable functions. + * Macros for fmgr-callable functions. * * For Timestamp, we make use of the same support routines as for int64. * Therefore Timestamp is pass-by-reference if and only if int64 is! */ -static inline Timestamp -DatumGetTimestamp(Datum X) -{ - return (Timestamp) DatumGetInt64(X); -} - -static inline TimestampTz -DatumGetTimestampTz(Datum X) -{ - return (TimestampTz) DatumGetInt64(X); -} - -static inline Interval * -DatumGetIntervalP(Datum X) -{ - return (Interval *) DatumGetPointer(X); -} - -static inline Datum -TimestampGetDatum(Timestamp X) -{ - return Int64GetDatum(X); -} - -static inline Datum -TimestampTzGetDatum(TimestampTz X) -{ - return Int64GetDatum(X); -} - -static inline Datum -IntervalPGetDatum(const Interval *X) -{ - return PointerGetDatum(X); -} +#define DatumGetTimestamp(X) ((Timestamp) DatumGetInt64(X)) +#define DatumGetTimestampTz(X) ((TimestampTz) DatumGetInt64(X)) +#define DatumGetIntervalP(X) ((Interval *) DatumGetPointer(X)) + +#define TimestampGetDatum(X) Int64GetDatum(X) +#define TimestampTzGetDatum(X) Int64GetDatum(X) +#define IntervalPGetDatum(X) PointerGetDatum(X) #define PG_GETARG_TIMESTAMP(n) DatumGetTimestamp(PG_GETARG_DATUM(n)) #define PG_GETARG_TIMESTAMPTZ(n) DatumGetTimestampTz(PG_GETARG_DATUM(n)) diff --git a/src/include/utils/uuid.h b/src/include/utils/uuid.h index 69f4332d0fb..0029da4e7f6 100644 --- a/src/include/utils/uuid.h +++ b/src/include/utils/uuid.h @@ -23,20 +23,9 @@ typedef struct pg_uuid_t } pg_uuid_t; /* fmgr interface macros */ -static inline Datum -UUIDPGetDatum(const pg_uuid_t *X) -{ - return PointerGetDatum(X); -} - +#define UUIDPGetDatum(X) PointerGetDatum(X) #define PG_RETURN_UUID_P(X) return UUIDPGetDatum(X) - -static inline pg_uuid_t * -DatumGetUUIDP(Datum X) -{ - return (pg_uuid_t *) DatumGetPointer(X); -} - +#define DatumGetUUIDP(X) ((pg_uuid_t *) DatumGetPointer(X)) #define PG_GETARG_UUID_P(X) DatumGetUUIDP(PG_GETARG_DATUM(X)) #endif /* UUID_H */ diff --git a/src/include/utils/varbit.h b/src/include/utils/varbit.h index e65e7f65e7e..039ba860cfc 100644 --- a/src/include/utils/varbit.h +++ b/src/include/utils/varbit.h @@ -41,24 +41,9 @@ typedef struct * BIT and BIT VARYING are toastable varlena types. They are the same * as far as representation goes, so we just have one set of macros. */ -static inline VarBit * -DatumGetVarBitP(Datum X) -{ - return (VarBit *) PG_DETOAST_DATUM(X); -} - -static inline VarBit * -DatumGetVarBitPCopy(Datum X) -{ - return (VarBit *) PG_DETOAST_DATUM_COPY(X); -} - -static inline Datum -VarBitPGetDatum(const VarBit *X) -{ - return PointerGetDatum(X); -} - +#define DatumGetVarBitP(X) ((VarBit *) PG_DETOAST_DATUM(X)) +#define DatumGetVarBitPCopy(X) ((VarBit *) PG_DETOAST_DATUM_COPY(X)) +#define VarBitPGetDatum(X) PointerGetDatum(X) #define PG_GETARG_VARBIT_P(n) DatumGetVarBitP(PG_GETARG_DATUM(n)) #define PG_GETARG_VARBIT_P_COPY(n) DatumGetVarBitPCopy(PG_GETARG_DATUM(n)) #define PG_RETURN_VARBIT_P(x) return VarBitPGetDatum(x) diff --git a/src/include/utils/xid8.h b/src/include/utils/xid8.h index 9c5ce241db0..b702fc1a910 100644 --- a/src/include/utils/xid8.h +++ b/src/include/utils/xid8.h @@ -14,18 +14,8 @@ #include "access/transam.h" -static inline FullTransactionId -DatumGetFullTransactionId(Datum X) -{ - return FullTransactionIdFromU64(DatumGetUInt64(X)); -} - -static inline Datum -FullTransactionIdGetDatum(FullTransactionId X) -{ - return UInt64GetDatum(U64FromFullTransactionId(X)); -} - +#define DatumGetFullTransactionId(X) (FullTransactionIdFromU64(DatumGetUInt64(X))) +#define FullTransactionIdGetDatum(X) (UInt64GetDatum(U64FromFullTransactionId(X))) #define PG_GETARG_FULLTRANSACTIONID(X) DatumGetFullTransactionId(PG_GETARG_DATUM(X)) #define PG_RETURN_FULLTRANSACTIONID(X) return FullTransactionIdGetDatum(X) diff --git a/src/include/utils/xml.h b/src/include/utils/xml.h index c71174d2041..6620a626191 100644 --- a/src/include/utils/xml.h +++ b/src/include/utils/xml.h @@ -47,17 +47,8 @@ typedef enum /* struct PgXmlErrorContext is private to xml.c */ typedef struct PgXmlErrorContext PgXmlErrorContext; -static inline xmltype * -DatumGetXmlP(Datum X) -{ - return (xmltype *) PG_DETOAST_DATUM(X); -} - -static inline Datum -XmlPGetDatum(const xmltype *X) -{ - return PointerGetDatum(X); -} +#define DatumGetXmlP(X) ((xmltype *) PG_DETOAST_DATUM(X)) +#define XmlPGetDatum(X) PointerGetDatum(X) #define PG_GETARG_XML_P(n) DatumGetXmlP(PG_GETARG_DATUM(n)) #define PG_RETURN_XML_P(x) PG_RETURN_POINTER(x) |
