summaryrefslogtreecommitdiff
path: root/src/include/utils
diff options
context:
space:
mode:
authorPeter Eisentraut2022-09-12 17:57:07 +0000
committerPeter Eisentraut2022-09-12 17:57:07 +0000
commite8d78581bb864369035c736a82ecfb57482a1a09 (patch)
treeb6881a0046c905ad671e0b43d60a42a119f4a3d4 /src/include/utils
parent595836e99bf1ee6d43405b885fb69bb8c6d3ee23 (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.h14
-rw-r--r--src/include/utils/date.h42
-rw-r--r--src/include/utils/expandeddatum.h13
-rw-r--r--src/include/utils/expandedrecord.h16
-rw-r--r--src/include/utils/geo_decls.h98
-rw-r--r--src/include/utils/inet.h49
-rw-r--r--src/include/utils/jsonb.h31
-rw-r--r--src/include/utils/jsonpath.h14
-rw-r--r--src/include/utils/multirangetypes.h23
-rw-r--r--src/include/utils/numeric.h21
-rw-r--r--src/include/utils/pg_lsn.h13
-rw-r--r--src/include/utils/rangetypes.h23
-rw-r--r--src/include/utils/timestamp.h44
-rw-r--r--src/include/utils/uuid.h15
-rw-r--r--src/include/utils/varbit.h21
-rw-r--r--src/include/utils/xid8.h14
-rw-r--r--src/include/utils/xml.h13
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)