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
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)
#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 */