v2-0001-Remove-some-uses-of-the-Pointer-type.patch

text/plain

Filename: v2-0001-Remove-some-uses-of-the-Pointer-type.patch
Type: text/plain
Part: 0
Message: Re: get rid of Pointer type, mostly

Patch

Same data as JSON: GET /api/v1/attachments/:id/patch the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes. API reference →
Format: format-patch
Series: patch v2-0001
Subject: Remove some uses of the Pointer type
File+
contrib/amcheck/verify_heapam.c 1 1
src/backend/access/common/heaptuple.c 1 1
src/backend/access/common/toast_internals.c 1 1
src/backend/access/heap/heaptoast.c 1 1
src/backend/nodes/tidbitmap.c 2 2
src/backend/replication/logical/reorderbuffer.c 2 2
src/backend/utils/adt/rangetypes.c 3 3
src/bin/initdb/initdb.c 2 2
src/include/postgres.h 2 2
From 32d2ac63d30532096467a8579f4034a63718150a Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter@eisentraut.org>
Date: Mon, 24 Nov 2025 11:02:35 +0100
Subject: [PATCH v2 1/2] Remove some uses of the Pointer type

everywhere except GIN

Reviewed-by: Chao Li <li.evan.chao@gmail.com>
Reviewed-by: Bertrand Drouvot <bertranddrouvot.pg@gmail.com>
Discussion: https://www.postgresql.org/message-id/4154950a-47ae-4223-bd01-1235cc50e933%40eisentraut.org
---
 contrib/amcheck/verify_heapam.c                 | 2 +-
 src/backend/access/common/heaptuple.c           | 2 +-
 src/backend/access/common/toast_internals.c     | 2 +-
 src/backend/access/heap/heaptoast.c             | 2 +-
 src/backend/nodes/tidbitmap.c                   | 4 ++--
 src/backend/replication/logical/reorderbuffer.c | 4 ++--
 src/backend/utils/adt/rangetypes.c              | 6 +++---
 src/bin/initdb/initdb.c                         | 4 ++--
 src/include/postgres.h                          | 4 ++--
 9 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/contrib/amcheck/verify_heapam.c b/contrib/amcheck/verify_heapam.c
index a090e18c697..7cf58db20ef 100644
--- a/contrib/amcheck/verify_heapam.c
+++ b/contrib/amcheck/verify_heapam.c
@@ -1557,7 +1557,7 @@ check_toast_tuple(HeapTuple toasttup, HeapCheckContext *ctx,
 {
 	int32		chunk_seq;
 	int32		last_chunk_seq = (extsize - 1) / TOAST_MAX_CHUNK_SIZE;
-	Pointer		chunk;
+	void	   *chunk;
 	bool		isnull;
 	int32		chunksize;
 	int32		expected_size;
diff --git a/src/backend/access/common/heaptuple.c b/src/backend/access/common/heaptuple.c
index 1967b047020..062aadacb12 100644
--- a/src/backend/access/common/heaptuple.c
+++ b/src/backend/access/common/heaptuple.c
@@ -321,7 +321,7 @@ fill_val(CompactAttribute *att,
 	else if (att->attlen == -1)
 	{
 		/* varlena */
-		Pointer		val = DatumGetPointer(datum);
+		void	   *val = DatumGetPointer(datum);
 
 		*infomask |= HEAP_HASVARWIDTH;
 		if (VARATT_IS_EXTERNAL(val))
diff --git a/src/backend/access/common/toast_internals.c b/src/backend/access/common/toast_internals.c
index 63b848473f8..ba6ef6f4e72 100644
--- a/src/backend/access/common/toast_internals.c
+++ b/src/backend/access/common/toast_internals.c
@@ -128,7 +128,7 @@ toast_save_datum(Relation rel, Datum value,
 	int32		chunk_seq = 0;
 	char	   *data_p;
 	int32		data_todo;
-	Pointer		dval = DatumGetPointer(value);
+	void	   *dval = DatumGetPointer(value);
 	int			num_indexes;
 	int			validIndex;
 
diff --git a/src/backend/access/heap/heaptoast.c b/src/backend/access/heap/heaptoast.c
index 60e765fbfce..a049d7c7e81 100644
--- a/src/backend/access/heap/heaptoast.c
+++ b/src/backend/access/heap/heaptoast.c
@@ -696,7 +696,7 @@ heap_fetch_toast_slice(Relation toastrel, Oid valueid, int32 attrsize,
 	while ((ttup = systable_getnext_ordered(toastscan, ForwardScanDirection)) != NULL)
 	{
 		int32		curchunk;
-		Pointer		chunk;
+		void	   *chunk;
 		bool		isnull;
 		char	   *chunkdata;
 		int32		chunksize;
diff --git a/src/backend/nodes/tidbitmap.c b/src/backend/nodes/tidbitmap.c
index 1f83d0d55f5..0d11ec001c1 100644
--- a/src/backend/nodes/tidbitmap.c
+++ b/src/backend/nodes/tidbitmap.c
@@ -1546,11 +1546,11 @@ tbm_calculate_entries(Size maxbytes)
 	/*
 	 * Estimate number of hashtable entries we can have within maxbytes. This
 	 * estimates the hash cost as sizeof(PagetableEntry), which is good enough
-	 * for our purpose.  Also count an extra Pointer per entry for the arrays
+	 * for our purpose.  Also count an extra pointer per entry for the arrays
 	 * created during iteration readout.
 	 */
 	nbuckets = maxbytes /
-		(sizeof(PagetableEntry) + sizeof(Pointer) + sizeof(Pointer));
+		(sizeof(PagetableEntry) + sizeof(void *) + sizeof(void *));
 	nbuckets = Min(nbuckets, INT_MAX - 1);	/* safety limit */
 	nbuckets = Max(nbuckets, 16);	/* sanity limit */
 
diff --git a/src/backend/replication/logical/reorderbuffer.c b/src/backend/replication/logical/reorderbuffer.c
index eb6a84554b7..a014ef72aca 100644
--- a/src/backend/replication/logical/reorderbuffer.c
+++ b/src/backend/replication/logical/reorderbuffer.c
@@ -5003,7 +5003,7 @@ ReorderBufferToastAppendChunk(ReorderBuffer *rb, ReorderBufferTXN *txn,
 	bool		found;
 	int32		chunksize;
 	bool		isnull;
-	Pointer		chunk;
+	void	   *chunk;
 	TupleDesc	desc = RelationGetDescr(relation);
 	Oid			chunk_id;
 	int32		chunk_seq;
@@ -5192,7 +5192,7 @@ ReorderBufferToastReplace(ReorderBuffer *rb, ReorderBufferTXN *txn,
 			bool		cisnull;
 			ReorderBufferChange *cchange;
 			HeapTuple	ctup;
-			Pointer		chunk;
+			void	   *chunk;
 
 			cchange = dlist_container(ReorderBufferChange, node, it.cur);
 			ctup = cchange->data.tp.newtuple;
diff --git a/src/backend/utils/adt/rangetypes.c b/src/backend/utils/adt/rangetypes.c
index d8e5130d642..b887f21f10e 100644
--- a/src/backend/utils/adt/rangetypes.c
+++ b/src/backend/utils/adt/rangetypes.c
@@ -1962,7 +1962,7 @@ range_serialize(TypeCacheEntry *typcache, RangeBound *lower, RangeBound *upper,
 	RangeType  *range;
 	int			cmp;
 	Size		msize;
-	Pointer		ptr;
+	char	   *ptr;
 	int16		typlen;
 	bool		typbyval;
 	char		typalign;
@@ -2070,7 +2070,7 @@ range_serialize(TypeCacheEntry *typcache, RangeBound *lower, RangeBound *upper,
 						  typstorage);
 	}
 
-	*((char *) ptr) = flags;
+	*ptr = flags;
 
 	return range;
 }
@@ -2953,7 +2953,7 @@ datum_write(char *ptr, Datum datum, bool typbyval, char typalign,
 	else if (typlen == -1)
 	{
 		/* varlena */
-		Pointer		val = DatumGetPointer(datum);
+		void	   *val = DatumGetPointer(datum);
 
 		if (VARATT_IS_EXTERNAL(val))
 		{
diff --git a/src/bin/initdb/initdb.c b/src/bin/initdb/initdb.c
index 92fe2f531f7..30fce0d5f37 100644
--- a/src/bin/initdb/initdb.c
+++ b/src/bin/initdb/initdb.c
@@ -1574,11 +1574,11 @@ bootstrap_template1(void)
 	sprintf(buf, "%d", NAMEDATALEN);
 	bki_lines = replace_token(bki_lines, "NAMEDATALEN", buf);
 
-	sprintf(buf, "%d", (int) sizeof(Pointer));
+	sprintf(buf, "%d", (int) sizeof(void *));
 	bki_lines = replace_token(bki_lines, "SIZEOF_POINTER", buf);
 
 	bki_lines = replace_token(bki_lines, "ALIGNOF_POINTER",
-							  (sizeof(Pointer) == 4) ? "i" : "d");
+							  (sizeof(void *) == 4) ? "i" : "d");
 
 	bki_lines = replace_token(bki_lines, "POSTGRES",
 							  escape_quotes_bki(username));
diff --git a/src/include/postgres.h b/src/include/postgres.h
index 357cbd6fd96..5f1c6b0a79e 100644
--- a/src/include/postgres.h
+++ b/src/include/postgres.h
@@ -318,10 +318,10 @@ CommandIdGetDatum(CommandId X)
  * DatumGetPointer
  *		Returns pointer value of a datum.
  */
-static inline Pointer
+static inline void *
 DatumGetPointer(Datum X)
 {
-	return (Pointer) (uintptr_t) X;
+	return (void *) (uintptr_t) X;
 }
 
 /*
-- 
2.52.0