From 11227ec513c9f6fd05d8286156c63ebc9c200017 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Mon, 6 Feb 2023 10:48:32 +0100 Subject: [PATCH] Consolidate ItemPointer to Datum conversion functions Instead of defining the same set of macros several times, define it once in an appropriate header file. In passing, convert to inline functions. --- contrib/pageinspect/btreefuncs.c | 2 -- contrib/pageinspect/ginfuncs.c | 3 --- contrib/pageinspect/gistfuncs.c | 2 -- src/backend/utils/adt/tid.c | 2 -- src/include/storage/itemptr.h | 17 +++++++++++++++++ 5 files changed, 17 insertions(+), 9 deletions(-) diff --git a/contrib/pageinspect/btreefuncs.c b/contrib/pageinspect/btreefuncs.c index e4e5dc3c81..9cdc8e182b 100644 --- a/contrib/pageinspect/btreefuncs.c +++ b/contrib/pageinspect/btreefuncs.c @@ -50,8 +50,6 @@ PG_FUNCTION_INFO_V1(bt_multi_page_stats); #define IS_INDEX(r) ((r)->rd_rel->relkind == RELKIND_INDEX) #define IS_BTREE(r) ((r)->rd_rel->relam == BTREE_AM_OID) -#define DatumGetItemPointer(X) ((ItemPointer) DatumGetPointer(X)) -#define ItemPointerGetDatum(X) PointerGetDatum(X) /* ------------------------------------------------ * structure for single btree page statistics diff --git a/contrib/pageinspect/ginfuncs.c b/contrib/pageinspect/ginfuncs.c index efaa47e86d..0f846988df 100644 --- a/contrib/pageinspect/ginfuncs.c +++ b/contrib/pageinspect/ginfuncs.c @@ -21,9 +21,6 @@ #include "utils/builtins.h" #include "utils/rel.h" -#define DatumGetItemPointer(X) ((ItemPointer) DatumGetPointer(X)) -#define ItemPointerGetDatum(X) PointerGetDatum(X) - PG_FUNCTION_INFO_V1(gin_metapage_info); PG_FUNCTION_INFO_V1(gin_page_opaque_info); diff --git a/contrib/pageinspect/gistfuncs.c b/contrib/pageinspect/gistfuncs.c index 3a947c82af..100697814d 100644 --- a/contrib/pageinspect/gistfuncs.c +++ b/contrib/pageinspect/gistfuncs.c @@ -31,8 +31,6 @@ PG_FUNCTION_INFO_V1(gist_page_items_bytea); #define IS_GIST(r) ((r)->rd_rel->relam == GIST_AM_OID) -#define ItemPointerGetDatum(X) PointerGetDatum(X) - Datum gist_page_opaque_info(PG_FUNCTION_ARGS) diff --git a/src/backend/utils/adt/tid.c b/src/backend/utils/adt/tid.c index 251219a1ef..7c64b0d693 100644 --- a/src/backend/utils/adt/tid.c +++ b/src/backend/utils/adt/tid.c @@ -37,8 +37,6 @@ #include "utils/varlena.h" -#define DatumGetItemPointer(X) ((ItemPointer) DatumGetPointer(X)) -#define ItemPointerGetDatum(X) PointerGetDatum(X) #define PG_GETARG_ITEMPOINTER(n) DatumGetItemPointer(PG_GETARG_DATUM(n)) #define PG_RETURN_ITEMPOINTER(x) return ItemPointerGetDatum(x) diff --git a/src/include/storage/itemptr.h b/src/include/storage/itemptr.h index 354e50e68b..0715ba0d17 100644 --- a/src/include/storage/itemptr.h +++ b/src/include/storage/itemptr.h @@ -222,4 +222,21 @@ extern int32 ItemPointerCompare(ItemPointer arg1, ItemPointer arg2); extern void ItemPointerInc(ItemPointer pointer); extern void ItemPointerDec(ItemPointer pointer); +/* ---------------- + * Datum conversion functions + * ---------------- + */ + +static inline ItemPointer +DatumGetItemPointer(Datum X) +{ + return (ItemPointer) DatumGetPointer(X); +} + +static inline Datum +ItemPointerGetDatum(const ItemPointerData *X) +{ + return PointerGetDatum(X); +} + #endif /* ITEMPTR_H */ -- 2.39.1