Consolidate ItemPointer to Datum conversion functions
authorPeter Eisentraut <peter@eisentraut.org>
Mon, 13 Feb 2023 08:50:14 +0000 (09:50 +0100)
committerPeter Eisentraut <peter@eisentraut.org>
Mon, 13 Feb 2023 08:57:15 +0000 (09:57 +0100)
Instead of defining the same set of macros several times, define it
once in an appropriate header file.  In passing, convert to inline
functions.

Reviewed-by: Heikki Linnakangas <hlinnaka@iki.fi>
Discussion: https://www.postgresql.org/message-id/flat/844dd4c5-e5a1-3df1-bfaf-d1e1c2a16e45%40enterprisedb.com

contrib/pageinspect/btreefuncs.c
contrib/pageinspect/ginfuncs.c
contrib/pageinspect/gistfuncs.c
src/backend/utils/adt/tid.c
src/include/storage/itemptr.h

index e4e5dc3c81ee700cfa150047dd441a329ac05bfc..9cdc8e182b48363e843aa09e9bc5e072e4b32d30 100644 (file)
@@ -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
index efaa47e86de46054a2c13b4b5bbb51e577a04da4..0f846988dff8011b3474f52a9d91d4b7e58f22f3 100644 (file)
@@ -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);
index 3a947c82afc0a7f4567b2a41059f0752e6c8ea3e..100697814dcf47fc9858907a4c41729cd24ba3ed 100644 (file)
@@ -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)
index 251219a1ef2e547bf969b5906dc8fec868f5e6c6..77fb74ab0c16729b1ec758eb82e8c044eff6e9be 100644 (file)
 #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)
-
 #define LDELIM                 '('
 #define RDELIM                 ')'
 #define DELIM                  ','
index 354e50e68bebcfcfdcd692092a7279b06912a485..fafefa14cd8cb60dcbfb887c61e75e3420ef2abe 100644 (file)
@@ -222,4 +222,24 @@ 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);
+}
+
+#define PG_GETARG_ITEMPOINTER(n) DatumGetItemPointer(PG_GETARG_DATUM(n))
+#define PG_RETURN_ITEMPOINTER(x) return ItemPointerGetDatum(x)
+
 #endif                                                 /* ITEMPTR_H */