0001-Remove-PointerIsValid.patch

text/plain

Filename: 0001-Remove-PointerIsValid.patch
Type: text/plain
Part: 0
Message: Remove PointerIsValid()

Patch

Format: format-patch
Series: patch 0001
Subject: Remove PointerIsValid()
File+
src/backend/access/common/reloptions.c 4 4
src/backend/access/common/tupdesc.c 5 5
src/backend/access/index/indexam.c 3 3
src/backend/access/transam/xact.c 9 9
src/backend/catalog/index.c 4 4
src/backend/catalog/objectaddress.c 1 1
src/backend/catalog/pg_proc.c 1 1
src/backend/catalog/pg_type.c 1 1
src/backend/commands/foreigncmds.c 7 7
src/backend/commands/tablecmds.c 2 2
src/backend/nodes/outfuncs.c 1 1
src/backend/postmaster/autovacuum.c 1 1
src/backend/storage/ipc/sinvaladt.c 1 1
src/backend/storage/large_object/inv_api.c 7 7
src/backend/utils/adt/acl.c 1 1
src/backend/utils/adt/arrayfuncs.c 1 1
src/backend/utils/adt/datum.c 2 2
src/backend/utils/adt/xml.c 1 1
src/backend/utils/cache/catcache.c 1 1
src/backend/utils/cache/relcache.c 2 2
src/backend/utils/cache/syscache.c 12 20
src/backend/utils/error/assert.c 1 2
src/backend/utils/mmgr/aset.c 2 8
src/backend/utils/mmgr/bump.c 1 1
src/backend/utils/mmgr/generation.c 2 2
src/backend/utils/mmgr/portalmem.c 9 9
src/backend/utils/mmgr/slab.c 2 2
src/include/access/genam.h 0 6
src/include/access/heapam.h 0 6
src/include/access/htup.h 1 1
src/include/access/itup.h 1 1
src/include/c.h 0 6
src/include/lib/radixtree.h 1 1
src/include/storage/itemid.h 1 1
src/include/storage/itemptr.h 7 7
src/include/utils/portal.h 1 1
src/include/utils/rel.h 1 3
From af26264d850a40e5c9c4e73fea81189ca9f6bb6a Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter@eisentraut.org>
Date: Wed, 17 Sep 2025 07:11:05 +0200
Subject: [PATCH] Remove PointerIsValid()

This doesn't provide any value over the standard style of checking the
pointer directly or comparing against NULL.

Also remove related:
- AllocPointerIsValid() [unused]
- IndexScanIsValid() [had one user]
- HeapScanIsValid() [unused]
- InvalidRelation [unused]

Leaving HeapTupleIsValid(), ItemIdIsValid(), PortalIsValid(),
RelationIsValid for now, to reduce code churn.

Discussion: https://www.postgresql.org/message-id/CA+hUKG+NFKnr=K4oybwDvT35dW=VAjAAfiuLxp+5JeZSOV3nBg@mail.gmail.com
Discussion: https://www.postgresql.org/message-id/bccf2803-5252-47c2-9ff0-340502d5bd1c@iki.fi
---
 src/backend/access/common/reloptions.c     |  8 +++---
 src/backend/access/common/tupdesc.c        | 10 +++----
 src/backend/access/index/indexam.c         |  6 ++--
 src/backend/access/transam/xact.c          | 18 ++++++------
 src/backend/catalog/index.c                |  8 +++---
 src/backend/catalog/objectaddress.c        |  2 +-
 src/backend/catalog/pg_proc.c              |  2 +-
 src/backend/catalog/pg_type.c              |  2 +-
 src/backend/commands/foreigncmds.c         | 14 +++++-----
 src/backend/commands/tablecmds.c           |  4 +--
 src/backend/nodes/outfuncs.c               |  2 +-
 src/backend/postmaster/autovacuum.c        |  2 +-
 src/backend/storage/ipc/sinvaladt.c        |  2 +-
 src/backend/storage/large_object/inv_api.c | 14 +++++-----
 src/backend/utils/adt/acl.c                |  2 +-
 src/backend/utils/adt/arrayfuncs.c         |  2 +-
 src/backend/utils/adt/datum.c              |  4 +--
 src/backend/utils/adt/xml.c                |  2 +-
 src/backend/utils/cache/catcache.c         |  2 +-
 src/backend/utils/cache/relcache.c         |  4 +--
 src/backend/utils/cache/syscache.c         | 32 ++++++++--------------
 src/backend/utils/error/assert.c           |  3 +-
 src/backend/utils/mmgr/aset.c              | 10 ++-----
 src/backend/utils/mmgr/bump.c              |  2 +-
 src/backend/utils/mmgr/generation.c        |  4 +--
 src/backend/utils/mmgr/portalmem.c         | 18 ++++++------
 src/backend/utils/mmgr/slab.c              |  4 +--
 src/include/access/genam.h                 |  6 ----
 src/include/access/heapam.h                |  6 ----
 src/include/access/htup.h                  |  2 +-
 src/include/access/itup.h                  |  2 +-
 src/include/c.h                            |  6 ----
 src/include/lib/radixtree.h                |  2 +-
 src/include/storage/itemid.h               |  2 +-
 src/include/storage/itemptr.h              | 14 +++++-----
 src/include/utils/portal.h                 |  2 +-
 src/include/utils/rel.h                    |  4 +--
 37 files changed, 97 insertions(+), 132 deletions(-)

diff --git a/src/backend/access/common/reloptions.c b/src/backend/access/common/reloptions.c
index 0af3fea68fa..35150bf237b 100644
--- a/src/backend/access/common/reloptions.c
+++ b/src/backend/access/common/reloptions.c
@@ -1179,7 +1179,7 @@ transformRelOptions(Datum oldOptions, List *defList, const char *nameSpace,
 	astate = NULL;
 
 	/* Copy any oldOptions that aren't to be replaced */
-	if (PointerIsValid(DatumGetPointer(oldOptions)))
+	if (DatumGetPointer(oldOptions) != NULL)
 	{
 		ArrayType  *array = DatumGetArrayTypeP(oldOptions);
 		Datum	   *oldoptions;
@@ -1357,7 +1357,7 @@ untransformRelOptions(Datum options)
 	int			i;
 
 	/* Nothing to do if no options */
-	if (!PointerIsValid(DatumGetPointer(options)))
+	if (DatumGetPointer(options) == NULL)
 		return result;
 
 	array = DatumGetArrayTypeP(options);
@@ -1549,7 +1549,7 @@ parseRelOptions(Datum options, bool validate, relopt_kind kind,
 	}
 
 	/* Done if no options */
-	if (PointerIsValid(DatumGetPointer(options)))
+	if (DatumGetPointer(options) != NULL)
 		parseRelOptionsInternal(options, validate, reloptions, numoptions);
 
 	*numrelopts = numoptions;
@@ -2092,7 +2092,7 @@ index_reloptions(amoptions_function amoptions, Datum reloptions, bool validate)
 	Assert(amoptions != NULL);
 
 	/* Assume function is strict */
-	if (!PointerIsValid(DatumGetPointer(reloptions)))
+	if (DatumGetPointer(reloptions) == NULL)
 		return NULL;
 
 	return amoptions(reloptions, validate);
diff --git a/src/backend/access/common/tupdesc.c b/src/backend/access/common/tupdesc.c
index 568edacb9bd..d715c345dd8 100644
--- a/src/backend/access/common/tupdesc.c
+++ b/src/backend/access/common/tupdesc.c
@@ -474,8 +474,8 @@ TupleDescCopyEntry(TupleDesc dst, AttrNumber dstAttno,
 	/*
 	 * sanity checks
 	 */
-	Assert(PointerIsValid(src));
-	Assert(PointerIsValid(dst));
+	Assert(src);
+	Assert(dst);
 	Assert(srcAttno >= 1);
 	Assert(srcAttno <= src->natts);
 	Assert(dstAttno >= 1);
@@ -853,7 +853,7 @@ TupleDescInitEntry(TupleDesc desc,
 	/*
 	 * sanity checks
 	 */
-	Assert(PointerIsValid(desc));
+	Assert(desc);
 	Assert(attributeNumber >= 1);
 	Assert(attributeNumber <= desc->natts);
 	Assert(attdim >= 0);
@@ -925,7 +925,7 @@ TupleDescInitBuiltinEntry(TupleDesc desc,
 	Form_pg_attribute att;
 
 	/* sanity checks */
-	Assert(PointerIsValid(desc));
+	Assert(desc);
 	Assert(attributeNumber >= 1);
 	Assert(attributeNumber <= desc->natts);
 	Assert(attdim >= 0);
@@ -1030,7 +1030,7 @@ TupleDescInitEntryCollation(TupleDesc desc,
 	/*
 	 * sanity checks
 	 */
-	Assert(PointerIsValid(desc));
+	Assert(desc);
 	Assert(attributeNumber >= 1);
 	Assert(attributeNumber <= desc->natts);
 
diff --git a/src/backend/access/index/indexam.c b/src/backend/access/index/indexam.c
index 86d11f4ec79..0492d92d23b 100644
--- a/src/backend/access/index/indexam.c
+++ b/src/backend/access/index/indexam.c
@@ -75,7 +75,7 @@
 #define RELATION_CHECKS \
 do { \
 	Assert(RelationIsValid(indexRelation)); \
-	Assert(PointerIsValid(indexRelation->rd_indam)); \
+	Assert(indexRelation->rd_indam); \
 	if (unlikely(ReindexIsProcessingIndex(RelationGetRelid(indexRelation)))) \
 		ereport(ERROR, \
 				(errcode(ERRCODE_FEATURE_NOT_SUPPORTED), \
@@ -85,9 +85,9 @@ do { \
 
 #define SCAN_CHECKS \
 ( \
-	AssertMacro(IndexScanIsValid(scan)), \
+	AssertMacro(scan), \
 	AssertMacro(RelationIsValid(scan->indexRelation)), \
-	AssertMacro(PointerIsValid(scan->indexRelation->rd_indam)) \
+	AssertMacro(scan->indexRelation->rd_indam) \
 )
 
 #define CHECK_REL_PROCEDURE(pname) \
diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c
index b46e7e9c2a6..2cf3d4e92b7 100644
--- a/src/backend/access/transam/xact.c
+++ b/src/backend/access/transam/xact.c
@@ -4535,13 +4535,13 @@ ReleaseSavepoint(const char *name)
 			break;
 	}
 
-	for (target = s; PointerIsValid(target); target = target->parent)
+	for (target = s; target; target = target->parent)
 	{
-		if (PointerIsValid(target->name) && strcmp(target->name, name) == 0)
+		if (target->name && strcmp(target->name, name) == 0)
 			break;
 	}
 
-	if (!PointerIsValid(target))
+	if (!target)
 		ereport(ERROR,
 				(errcode(ERRCODE_S_E_INVALID_SPECIFICATION),
 				 errmsg("savepoint \"%s\" does not exist", name)));
@@ -4565,7 +4565,7 @@ ReleaseSavepoint(const char *name)
 		if (xact == target)
 			break;
 		xact = xact->parent;
-		Assert(PointerIsValid(xact));
+		Assert(xact);
 	}
 }
 
@@ -4644,13 +4644,13 @@ RollbackToSavepoint(const char *name)
 			break;
 	}
 
-	for (target = s; PointerIsValid(target); target = target->parent)
+	for (target = s; target; target = target->parent)
 	{
-		if (PointerIsValid(target->name) && strcmp(target->name, name) == 0)
+		if (target->name && strcmp(target->name, name) == 0)
 			break;
 	}
 
-	if (!PointerIsValid(target))
+	if (!target)
 		ereport(ERROR,
 				(errcode(ERRCODE_S_E_INVALID_SPECIFICATION),
 				 errmsg("savepoint \"%s\" does not exist", name)));
@@ -4679,7 +4679,7 @@ RollbackToSavepoint(const char *name)
 			elog(FATAL, "RollbackToSavepoint: unexpected state %s",
 				 BlockStateAsString(xact->blockState));
 		xact = xact->parent;
-		Assert(PointerIsValid(xact));
+		Assert(xact);
 	}
 
 	/* And mark the target as "restart pending" */
@@ -5700,7 +5700,7 @@ ShowTransactionStateRec(const char *str, TransactionState s)
 	ereport(DEBUG5,
 			(errmsg_internal("%s(%d) name: %s; blockState: %s; state: %s, xid/subid/cid: %u/%u/%u%s%s",
 							 str, s->nestingLevel,
-							 PointerIsValid(s->name) ? s->name : "unnamed",
+							 s->name ? s->name : "unnamed",
 							 BlockStateAsString(s->blockState),
 							 TransStateAsString(s->state),
 							 (unsigned int) XidFromFullTransactionId(s->fullTransactionId),
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index c4029a4f3d3..5d9db167e59 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -3014,9 +3014,9 @@ index_build(Relation heapRelation,
 	 * sanity checks
 	 */
 	Assert(RelationIsValid(indexRelation));
-	Assert(PointerIsValid(indexRelation->rd_indam));
-	Assert(PointerIsValid(indexRelation->rd_indam->ambuild));
-	Assert(PointerIsValid(indexRelation->rd_indam->ambuildempty));
+	Assert(indexRelation->rd_indam);
+	Assert(indexRelation->rd_indam->ambuild);
+	Assert(indexRelation->rd_indam->ambuildempty);
 
 	/*
 	 * Determine worker process details for parallel CREATE INDEX.  Currently,
@@ -3077,7 +3077,7 @@ index_build(Relation heapRelation,
 	 */
 	stats = indexRelation->rd_indam->ambuild(heapRelation, indexRelation,
 											 indexInfo);
-	Assert(PointerIsValid(stats));
+	Assert(stats);
 
 	/*
 	 * If this is an unlogged index, we may need to write out an init fork for
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 91f3018fd0a..c75b7131ed7 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4849,7 +4849,7 @@ getObjectIdentityParts(const ObjectAddress *object,
 	 * will be initialized in all cases inside the switch; but we do it anyway
 	 * so that we can test below that no branch leaves it unset.
 	 */
-	Assert(PointerIsValid(objname) == PointerIsValid(objargs));
+	Assert((objname != NULL) == (objargs != NULL));
 	if (objname)
 	{
 		*objname = NIL;
diff --git a/src/backend/catalog/pg_proc.c b/src/backend/catalog/pg_proc.c
index 75b17fed15e..b89b9ccda0e 100644
--- a/src/backend/catalog/pg_proc.c
+++ b/src/backend/catalog/pg_proc.c
@@ -149,7 +149,7 @@ ProcedureCreate(const char *procedureName,
 	/*
 	 * sanity checks
 	 */
-	Assert(PointerIsValid(prosrc));
+	Assert(prosrc);
 
 	parameterCount = parameterTypes->dim1;
 	if (parameterCount < 0 || parameterCount > FUNC_MAX_ARGS)
diff --git a/src/backend/catalog/pg_type.c b/src/backend/catalog/pg_type.c
index 3cd9b69edc5..257c7da8568 100644
--- a/src/backend/catalog/pg_type.c
+++ b/src/backend/catalog/pg_type.c
@@ -66,7 +66,7 @@ TypeShellMake(const char *typeName, Oid typeNamespace, Oid ownerId)
 	NameData	name;
 	ObjectAddress address;
 
-	Assert(PointerIsValid(typeName));
+	Assert(typeName);
 
 	/*
 	 * open pg_type
diff --git a/src/backend/commands/foreigncmds.c b/src/backend/commands/foreigncmds.c
index 77f8461f42e..536065dc515 100644
--- a/src/backend/commands/foreigncmds.c
+++ b/src/backend/commands/foreigncmds.c
@@ -632,7 +632,7 @@ CreateForeignDataWrapper(ParseState *pstate, CreateFdwStmt *stmt)
 										 stmt->options,
 										 fdwvalidator);
 
-	if (PointerIsValid(DatumGetPointer(fdwoptions)))
+	if (DatumGetPointer(fdwoptions) != NULL)
 		values[Anum_pg_foreign_data_wrapper_fdwoptions - 1] = fdwoptions;
 	else
 		nulls[Anum_pg_foreign_data_wrapper_fdwoptions - 1] = true;
@@ -783,7 +783,7 @@ AlterForeignDataWrapper(ParseState *pstate, AlterFdwStmt *stmt)
 										stmt->options,
 										fdwvalidator);
 
-		if (PointerIsValid(DatumGetPointer(datum)))
+		if (DatumGetPointer(datum) != NULL)
 			repl_val[Anum_pg_foreign_data_wrapper_fdwoptions - 1] = datum;
 		else
 			repl_null[Anum_pg_foreign_data_wrapper_fdwoptions - 1] = true;
@@ -943,7 +943,7 @@ CreateForeignServer(CreateForeignServerStmt *stmt)
 										 stmt->options,
 										 fdw->fdwvalidator);
 
-	if (PointerIsValid(DatumGetPointer(srvoptions)))
+	if (DatumGetPointer(srvoptions) != NULL)
 		values[Anum_pg_foreign_server_srvoptions - 1] = srvoptions;
 	else
 		nulls[Anum_pg_foreign_server_srvoptions - 1] = true;
@@ -1051,7 +1051,7 @@ AlterForeignServer(AlterForeignServerStmt *stmt)
 										stmt->options,
 										fdw->fdwvalidator);
 
-		if (PointerIsValid(DatumGetPointer(datum)))
+		if (DatumGetPointer(datum) != NULL)
 			repl_val[Anum_pg_foreign_server_srvoptions - 1] = datum;
 		else
 			repl_null[Anum_pg_foreign_server_srvoptions - 1] = true;
@@ -1187,7 +1187,7 @@ CreateUserMapping(CreateUserMappingStmt *stmt)
 										 stmt->options,
 										 fdw->fdwvalidator);
 
-	if (PointerIsValid(DatumGetPointer(useoptions)))
+	if (DatumGetPointer(useoptions) != NULL)
 		values[Anum_pg_user_mapping_umoptions - 1] = useoptions;
 	else
 		nulls[Anum_pg_user_mapping_umoptions - 1] = true;
@@ -1301,7 +1301,7 @@ AlterUserMapping(AlterUserMappingStmt *stmt)
 										stmt->options,
 										fdw->fdwvalidator);
 
-		if (PointerIsValid(DatumGetPointer(datum)))
+		if (DatumGetPointer(datum) != NULL)
 			repl_val[Anum_pg_user_mapping_umoptions - 1] = datum;
 		else
 			repl_null[Anum_pg_user_mapping_umoptions - 1] = true;
@@ -1464,7 +1464,7 @@ CreateForeignTable(CreateForeignTableStmt *stmt, Oid relid)
 										stmt->options,
 										fdw->fdwvalidator);
 
-	if (PointerIsValid(DatumGetPointer(ftoptions)))
+	if (DatumGetPointer(ftoptions) != NULL)
 		values[Anum_pg_foreign_table_ftoptions - 1] = ftoptions;
 	else
 		nulls[Anum_pg_foreign_table_ftoptions - 1] = true;
diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c
index 3be2e051d32..fc89352b661 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -15995,7 +15995,7 @@ ATExecAlterColumnGenericOptions(Relation rel,
 									options,
 									fdw->fdwvalidator);
 
-	if (PointerIsValid(DatumGetPointer(datum)))
+	if (DatumGetPointer(datum) != NULL)
 		repl_val[Anum_pg_attribute_attfdwoptions - 1] = datum;
 	else
 		repl_null[Anum_pg_attribute_attfdwoptions - 1] = true;
@@ -18673,7 +18673,7 @@ ATExecGenericOptions(Relation rel, List *options)
 									options,
 									fdw->fdwvalidator);
 
-	if (PointerIsValid(DatumGetPointer(datum)))
+	if (DatumGetPointer(datum) != NULL)
 		repl_val[Anum_pg_foreign_table_ftoptions - 1] = datum;
 	else
 		repl_null[Anum_pg_foreign_table_ftoptions - 1] = true;
diff --git a/src/backend/nodes/outfuncs.c b/src/backend/nodes/outfuncs.c
index eaf391fc2ab..d9fe21a07e0 100644
--- a/src/backend/nodes/outfuncs.c
+++ b/src/backend/nodes/outfuncs.c
@@ -363,7 +363,7 @@ outDatum(StringInfo str, Datum value, int typlen, bool typbyval)
 	else
 	{
 		s = (char *) DatumGetPointer(value);
-		if (!PointerIsValid(s))
+		if (!s)
 			appendStringInfoString(str, "0 [ ]");
 		else
 		{
diff --git a/src/backend/postmaster/autovacuum.c b/src/backend/postmaster/autovacuum.c
index dce4c8c45b9..fb5d3b27224 100644
--- a/src/backend/postmaster/autovacuum.c
+++ b/src/backend/postmaster/autovacuum.c
@@ -3107,7 +3107,7 @@ relation_needs_vacanalyze(Oid relid,
 	 * vacuuming only, so don't vacuum (or analyze) anything that's not being
 	 * forced.
 	 */
-	if (PointerIsValid(tabentry) && AutoVacuumingActive())
+	if (tabentry && AutoVacuumingActive())
 	{
 		float4		pcnt_unfrozen = 1;
 		float4		reltuples = classForm->reltuples;
diff --git a/src/backend/storage/ipc/sinvaladt.c b/src/backend/storage/ipc/sinvaladt.c
index c5748b690f4..d7a845e2c22 100644
--- a/src/backend/storage/ipc/sinvaladt.c
+++ b/src/backend/storage/ipc/sinvaladt.c
@@ -331,7 +331,7 @@ CleanupInvalidationState(int status, Datum arg)
 	ProcState  *stateP;
 	int			i;
 
-	Assert(PointerIsValid(segP));
+	Assert(segP);
 
 	LWLockAcquire(SInvalWriteLock, LW_EXCLUSIVE);
 
diff --git a/src/backend/storage/large_object/inv_api.c b/src/backend/storage/large_object/inv_api.c
index a874000c8ca..f6d2f9dba13 100644
--- a/src/backend/storage/large_object/inv_api.c
+++ b/src/backend/storage/large_object/inv_api.c
@@ -298,7 +298,7 @@ inv_open(Oid lobjId, int flags, MemoryContext mcxt)
 void
 inv_close(LargeObjectDesc *obj_desc)
 {
-	Assert(PointerIsValid(obj_desc));
+	Assert(obj_desc);
 	pfree(obj_desc);
 }
 
@@ -344,7 +344,7 @@ inv_getsize(LargeObjectDesc *obj_desc)
 	SysScanDesc sd;
 	HeapTuple	tuple;
 
-	Assert(PointerIsValid(obj_desc));
+	Assert(obj_desc);
 
 	open_lo_relation();
 
@@ -389,7 +389,7 @@ inv_seek(LargeObjectDesc *obj_desc, int64 offset, int whence)
 {
 	int64		newoffset;
 
-	Assert(PointerIsValid(obj_desc));
+	Assert(obj_desc);
 
 	/*
 	 * We allow seek/tell if you have either read or write permission, so no
@@ -436,7 +436,7 @@ inv_seek(LargeObjectDesc *obj_desc, int64 offset, int whence)
 int64
 inv_tell(LargeObjectDesc *obj_desc)
 {
-	Assert(PointerIsValid(obj_desc));
+	Assert(obj_desc);
 
 	/*
 	 * We allow seek/tell if you have either read or write permission, so no
@@ -459,7 +459,7 @@ inv_read(LargeObjectDesc *obj_desc, char *buf, int nbytes)
 	SysScanDesc sd;
 	HeapTuple	tuple;
 
-	Assert(PointerIsValid(obj_desc));
+	Assert(obj_desc);
 	Assert(buf != NULL);
 
 	if ((obj_desc->flags & IFS_RDLOCK) == 0)
@@ -569,7 +569,7 @@ inv_write(LargeObjectDesc *obj_desc, const char *buf, int nbytes)
 	bool		replace[Natts_pg_largeobject];
 	CatalogIndexState indstate;
 
-	Assert(PointerIsValid(obj_desc));
+	Assert(obj_desc);
 	Assert(buf != NULL);
 
 	/* enforce writability because snapshot is probably wrong otherwise */
@@ -760,7 +760,7 @@ inv_truncate(LargeObjectDesc *obj_desc, int64 len)
 	bool		replace[Natts_pg_largeobject];
 	CatalogIndexState indstate;
 
-	Assert(PointerIsValid(obj_desc));
+	Assert(obj_desc);
 
 	/* enforce writability because snapshot is probably wrong otherwise */
 	if ((obj_desc->flags & IFS_WRLOCK) == 0)
diff --git a/src/backend/utils/adt/acl.c b/src/backend/utils/adt/acl.c
index 7dadaefdfc1..fbcd64a2609 100644
--- a/src/backend/utils/adt/acl.c
+++ b/src/backend/utils/adt/acl.c
@@ -5159,7 +5159,7 @@ roles_is_member_of(Oid roleid, enum RoleRecurseType type,
 	MemoryContext oldctx;
 	bloom_filter *bf = NULL;
 
-	Assert(OidIsValid(admin_of) == PointerIsValid(admin_role));
+	Assert(OidIsValid(admin_of) == (admin_role != NULL));
 	if (admin_role != NULL)
 		*admin_role = InvalidOid;
 
diff --git a/src/backend/utils/adt/arrayfuncs.c b/src/backend/utils/adt/arrayfuncs.c
index c833e7df1fd..e5f3e2da35c 100644
--- a/src/backend/utils/adt/arrayfuncs.c
+++ b/src/backend/utils/adt/arrayfuncs.c
@@ -4601,7 +4601,7 @@ array_create_iterator(ArrayType *arr, int slice_ndim, ArrayMetaState *mstate)
 	/*
 	 * Sanity-check inputs --- caller should have got this right already
 	 */
-	Assert(PointerIsValid(arr));
+	Assert(arr);
 	if (slice_ndim < 0 || slice_ndim > ARR_NDIM(arr))
 		elog(ERROR, "invalid arguments to array_create_iterator");
 
diff --git a/src/backend/utils/adt/datum.c b/src/backend/utils/adt/datum.c
index 614644a4e2a..c2b111b829e 100644
--- a/src/backend/utils/adt/datum.c
+++ b/src/backend/utils/adt/datum.c
@@ -84,7 +84,7 @@ datumGetSize(Datum value, bool typByVal, int typLen)
 			/* It is a varlena datatype */
 			struct varlena *s = (struct varlena *) DatumGetPointer(value);
 
-			if (!PointerIsValid(s))
+			if (!s)
 				ereport(ERROR,
 						(errcode(ERRCODE_DATA_EXCEPTION),
 						 errmsg("invalid Datum pointer")));
@@ -96,7 +96,7 @@ datumGetSize(Datum value, bool typByVal, int typLen)
 			/* It is a cstring datatype */
 			char	   *s = (char *) DatumGetPointer(value);
 
-			if (!PointerIsValid(s))
+			if (!s)
 				ereport(ERROR,
 						(errcode(ERRCODE_DATA_EXCEPTION),
 						 errmsg("invalid Datum pointer")));
diff --git a/src/backend/utils/adt/xml.c b/src/backend/utils/adt/xml.c
index 7b7396cdf83..66b44183695 100644
--- a/src/backend/utils/adt/xml.c
+++ b/src/backend/utils/adt/xml.c
@@ -4895,7 +4895,7 @@ XmlTableSetColumnFilter(TableFuncScanState *state, const char *path, int colnum)
 	XmlTableBuilderData *xtCxt;
 	xmlChar    *xstr;
 
-	Assert(PointerIsValid(path));
+	Assert(path);
 
 	xtCxt = GetXmlTableBuilderPrivateData(state, "XmlTableSetColumnFilter");
 
diff --git a/src/backend/utils/cache/catcache.c b/src/backend/utils/cache/catcache.c
index e2cd3feaf81..fd1c7be8f53 100644
--- a/src/backend/utils/cache/catcache.c
+++ b/src/backend/utils/cache/catcache.c
@@ -2390,7 +2390,7 @@ PrepareToInvalidateCacheTuple(Relation relation,
 	 */
 	Assert(RelationIsValid(relation));
 	Assert(HeapTupleIsValid(tuple));
-	Assert(PointerIsValid(function));
+	Assert(function);
 	Assert(CacheHdr != NULL);
 
 	reloid = RelationGetRelid(relation);
diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c
index 6fe268a8eec..2b798b823ea 100644
--- a/src/backend/utils/cache/relcache.c
+++ b/src/backend/utils/cache/relcache.c
@@ -2896,7 +2896,7 @@ RelationForgetRelation(Oid rid)
 
 	RelationIdCacheLookup(rid, relation);
 
-	if (!PointerIsValid(relation))
+	if (!relation)
 		return;					/* not in cache, nothing to do */
 
 	if (!RelationHasReferenceCountZero(relation))
@@ -2941,7 +2941,7 @@ RelationCacheInvalidateEntry(Oid relationId)
 
 	RelationIdCacheLookup(relationId, relation);
 
-	if (PointerIsValid(relation))
+	if (relation)
 	{
 		relcacheInvalsReceived++;
 		RelationFlushRelation(relation);
diff --git a/src/backend/utils/cache/syscache.c b/src/backend/utils/cache/syscache.c
index 7828bdcba8f..0e70a8020b7 100644
--- a/src/backend/utils/cache/syscache.c
+++ b/src/backend/utils/cache/syscache.c
@@ -131,7 +131,7 @@ InitCatalogCache(void)
 										 cacheinfo[cacheId].nkeys,
 										 cacheinfo[cacheId].key,
 										 cacheinfo[cacheId].nbuckets);
-		if (!PointerIsValid(SysCache[cacheId]))
+		if (!SysCache[cacheId])
 			elog(ERROR, "could not initialize cache %u (%d)",
 				 cacheinfo[cacheId].reloid, cacheId);
 		/* Accumulate data for OID lists, too */
@@ -211,8 +211,7 @@ SearchSysCache(int cacheId,
 			   Datum key3,
 			   Datum key4)
 {
-	Assert(cacheId >= 0 && cacheId < SysCacheSize &&
-		   PointerIsValid(SysCache[cacheId]));
+	Assert(cacheId >= 0 && cacheId < SysCacheSize && SysCache[cacheId]);
 
 	return SearchCatCache(SysCache[cacheId], key1, key2, key3, key4);
 }
@@ -221,8 +220,7 @@ HeapTuple
 SearchSysCache1(int cacheId,
 				Datum key1)
 {
-	Assert(cacheId >= 0 && cacheId < SysCacheSize &&
-		   PointerIsValid(SysCache[cacheId]));
+	Assert(cacheId >= 0 && cacheId < SysCacheSize && SysCache[cacheId]);
 	Assert(SysCache[cacheId]->cc_nkeys == 1);
 
 	return SearchCatCache1(SysCache[cacheId], key1);
@@ -232,8 +230,7 @@ HeapTuple
 SearchSysCache2(int cacheId,
 				Datum key1, Datum key2)
 {
-	Assert(cacheId >= 0 && cacheId < SysCacheSize &&
-		   PointerIsValid(SysCache[cacheId]));
+	Assert(cacheId >= 0 && cacheId < SysCacheSize && SysCache[cacheId]);
 	Assert(SysCache[cacheId]->cc_nkeys == 2);
 
 	return SearchCatCache2(SysCache[cacheId], key1, key2);
@@ -243,8 +240,7 @@ HeapTuple
 SearchSysCache3(int cacheId,
 				Datum key1, Datum key2, Datum key3)
 {
-	Assert(cacheId >= 0 && cacheId < SysCacheSize &&
-		   PointerIsValid(SysCache[cacheId]));
+	Assert(cacheId >= 0 && cacheId < SysCacheSize && SysCache[cacheId]);
 	Assert(SysCache[cacheId]->cc_nkeys == 3);
 
 	return SearchCatCache3(SysCache[cacheId], key1, key2, key3);
@@ -254,8 +250,7 @@ HeapTuple
 SearchSysCache4(int cacheId,
 				Datum key1, Datum key2, Datum key3, Datum key4)
 {
-	Assert(cacheId >= 0 && cacheId < SysCacheSize &&
-		   PointerIsValid(SysCache[cacheId]));
+	Assert(cacheId >= 0 && cacheId < SysCacheSize && SysCache[cacheId]);
 	Assert(SysCache[cacheId]->cc_nkeys == 4);
 
 	return SearchCatCache4(SysCache[cacheId], key1, key2, key3, key4);
@@ -607,13 +602,12 @@ SysCacheGetAttr(int cacheId, HeapTuple tup,
 	 * valid (because the caller recently fetched the tuple via this same
 	 * cache), but there are cases where we have to initialize the cache here.
 	 */
-	if (cacheId < 0 || cacheId >= SysCacheSize ||
-		!PointerIsValid(SysCache[cacheId]))
+	if (cacheId < 0 || cacheId >= SysCacheSize || !SysCache[cacheId])
 		elog(ERROR, "invalid cache ID: %d", cacheId);
-	if (!PointerIsValid(SysCache[cacheId]->cc_tupdesc))
+	if (!SysCache[cacheId]->cc_tupdesc)
 	{
 		InitCatCachePhase2(SysCache[cacheId], false);
-		Assert(PointerIsValid(SysCache[cacheId]->cc_tupdesc));
+		Assert(SysCache[cacheId]->cc_tupdesc);
 	}
 
 	return heap_getattr(tup, attributeNumber,
@@ -664,8 +658,7 @@ GetSysCacheHashValue(int cacheId,
 					 Datum key3,
 					 Datum key4)
 {
-	if (cacheId < 0 || cacheId >= SysCacheSize ||
-		!PointerIsValid(SysCache[cacheId]))
+	if (cacheId < 0 || cacheId >= SysCacheSize || !SysCache[cacheId])
 		elog(ERROR, "invalid cache ID: %d", cacheId);
 
 	return GetCatCacheHashValue(SysCache[cacheId], key1, key2, key3, key4);
@@ -678,8 +671,7 @@ struct catclist *
 SearchSysCacheList(int cacheId, int nkeys,
 				   Datum key1, Datum key2, Datum key3)
 {
-	if (cacheId < 0 || cacheId >= SysCacheSize ||
-		!PointerIsValid(SysCache[cacheId]))
+	if (cacheId < 0 || cacheId >= SysCacheSize || !SysCache[cacheId])
 		elog(ERROR, "invalid cache ID: %d", cacheId);
 
 	return SearchCatCacheList(SysCache[cacheId], nkeys,
@@ -701,7 +693,7 @@ SysCacheInvalidate(int cacheId, uint32 hashValue)
 		elog(ERROR, "invalid cache ID: %d", cacheId);
 
 	/* if this cache isn't initialized yet, no need to do anything */
-	if (!PointerIsValid(SysCache[cacheId]))
+	if (!SysCache[cacheId])
 		return;
 
 	CatCacheInvalidate(SysCache[cacheId], hashValue);
diff --git a/src/backend/utils/error/assert.c b/src/backend/utils/error/assert.c
index 84b94f5e5f4..9dbd9efe41a 100644
--- a/src/backend/utils/error/assert.c
+++ b/src/backend/utils/error/assert.c
@@ -32,8 +32,7 @@ ExceptionalCondition(const char *conditionName,
 					 int lineNumber)
 {
 	/* Report the failure on stderr (or local equivalent) */
-	if (!PointerIsValid(conditionName)
-		|| !PointerIsValid(fileName))
+	if (!conditionName || !fileName)
 		write_stderr("TRAP: ExceptionalCondition: bad arguments in PID %d\n",
 					 (int) getpid());
 	else
diff --git a/src/backend/utils/mmgr/aset.c b/src/backend/utils/mmgr/aset.c
index 9ef109ca586..d5ae1bdd3cd 100644
--- a/src/backend/utils/mmgr/aset.c
+++ b/src/backend/utils/mmgr/aset.c
@@ -189,25 +189,19 @@ typedef struct AllocBlockData
 	char	   *endptr;			/* end of space in this block */
 }			AllocBlockData;
 
-/*
- * AllocPointerIsValid
- *		True iff pointer is valid allocation pointer.
- */
-#define AllocPointerIsValid(pointer) PointerIsValid(pointer)
-
 /*
  * AllocSetIsValid
  *		True iff set is valid allocation set.
  */
 #define AllocSetIsValid(set) \
-	(PointerIsValid(set) && IsA(set, AllocSetContext))
+	((set) && IsA(set, AllocSetContext))
 
 /*
  * AllocBlockIsValid
  *		True iff block is valid block of allocation set.
  */
 #define AllocBlockIsValid(block) \
-	(PointerIsValid(block) && AllocSetIsValid((block)->aset))
+	((block) && AllocSetIsValid((block)->aset))
 
 /*
  * We always store external chunks on a dedicated block.  This makes fetching
diff --git a/src/backend/utils/mmgr/bump.c b/src/backend/utils/mmgr/bump.c
index 2805d55a2ec..a263861fe43 100644
--- a/src/backend/utils/mmgr/bump.c
+++ b/src/backend/utils/mmgr/bump.c
@@ -100,7 +100,7 @@ struct BumpBlock
  *		True iff set is valid bump context.
  */
 #define BumpIsValid(set) \
-	(PointerIsValid(set) && IsA(set, BumpContext))
+	((set) && IsA(set, BumpContext))
 
 /*
  * We always store external chunks on a dedicated block.  This makes fetching
diff --git a/src/backend/utils/mmgr/generation.c b/src/backend/utils/mmgr/generation.c
index cfafc9bf082..f6203501956 100644
--- a/src/backend/utils/mmgr/generation.c
+++ b/src/backend/utils/mmgr/generation.c
@@ -102,14 +102,14 @@ struct GenerationBlock
  *		True iff set is valid generation set.
  */
 #define GenerationIsValid(set) \
-	(PointerIsValid(set) && IsA(set, GenerationContext))
+	((set) && IsA(set, GenerationContext))
 
 /*
  * GenerationBlockIsValid
  *		True iff block is valid block of generation set.
  */
 #define GenerationBlockIsValid(block) \
-	(PointerIsValid(block) && GenerationIsValid((block)->context))
+	((block) && GenerationIsValid((block)->context))
 
 /*
  * GenerationBlockIsEmpty
diff --git a/src/backend/utils/mmgr/portalmem.c b/src/backend/utils/mmgr/portalmem.c
index 0be1c2b0fff..943da087c9f 100644
--- a/src/backend/utils/mmgr/portalmem.c
+++ b/src/backend/utils/mmgr/portalmem.c
@@ -131,7 +131,7 @@ GetPortalByName(const char *name)
 {
 	Portal		portal;
 
-	if (PointerIsValid(name))
+	if (name)
 		PortalHashTableLookup(name, portal);
 	else
 		portal = NULL;
@@ -176,7 +176,7 @@ CreatePortal(const char *name, bool allowDup, bool dupSilent)
 {
 	Portal		portal;
 
-	Assert(PointerIsValid(name));
+	Assert(name);
 
 	portal = GetPortalByName(name);
 	if (PortalIsValid(portal))
@@ -425,7 +425,7 @@ MarkPortalDone(Portal portal)
 	 * aborted transaction, this is necessary, or we'd reach AtCleanup_Portals
 	 * with the cleanup hook still unexecuted.
 	 */
-	if (PointerIsValid(portal->cleanup))
+	if (portal->cleanup)
 	{
 		portal->cleanup(portal);
 		portal->cleanup = NULL;
@@ -453,7 +453,7 @@ MarkPortalFailed(Portal portal)
 	 * is necessary, or we'd reach AtCleanup_Portals with the cleanup hook
 	 * still unexecuted.
 	 */
-	if (PointerIsValid(portal->cleanup))
+	if (portal->cleanup)
 	{
 		portal->cleanup(portal);
 		portal->cleanup = NULL;
@@ -497,7 +497,7 @@ PortalDrop(Portal portal, bool isTopCommit)
 	 * Note: in most paths of control, this will have been done already in
 	 * MarkPortalDone or MarkPortalFailed.  We're just making sure.
 	 */
-	if (PointerIsValid(portal->cleanup))
+	if (portal->cleanup)
 	{
 		portal->cleanup(portal);
 		portal->cleanup = NULL;
@@ -823,7 +823,7 @@ AtAbort_Portals(void)
 		 * Allow portalcmds.c to clean up the state it knows about, if we
 		 * haven't already.
 		 */
-		if (PointerIsValid(portal->cleanup))
+		if (portal->cleanup)
 		{
 			portal->cleanup(portal);
 			portal->cleanup = NULL;
@@ -896,7 +896,7 @@ AtCleanup_Portals(void)
 		 * We had better not call any user-defined code during cleanup, so if
 		 * the cleanup hook hasn't been run yet, too bad; we'll just skip it.
 		 */
-		if (PointerIsValid(portal->cleanup))
+		if (portal->cleanup)
 		{
 			elog(WARNING, "skipping cleanup for portal \"%s\"", portal->name);
 			portal->cleanup = NULL;
@@ -1056,7 +1056,7 @@ AtSubAbort_Portals(SubTransactionId mySubid,
 		 * Allow portalcmds.c to clean up the state it knows about, if we
 		 * haven't already.
 		 */
-		if (PointerIsValid(portal->cleanup))
+		if (portal->cleanup)
 		{
 			portal->cleanup(portal);
 			portal->cleanup = NULL;
@@ -1115,7 +1115,7 @@ AtSubCleanup_Portals(SubTransactionId mySubid)
 		 * We had better not call any user-defined code during cleanup, so if
 		 * the cleanup hook hasn't been run yet, too bad; we'll just skip it.
 		 */
-		if (PointerIsValid(portal->cleanup))
+		if (portal->cleanup)
 		{
 			elog(WARNING, "skipping cleanup for portal \"%s\"", portal->name);
 			portal->cleanup = NULL;
diff --git a/src/backend/utils/mmgr/slab.c b/src/backend/utils/mmgr/slab.c
index 0e35abcf5a0..0bb96187603 100644
--- a/src/backend/utils/mmgr/slab.c
+++ b/src/backend/utils/mmgr/slab.c
@@ -193,14 +193,14 @@ typedef struct SlabBlock
  * SlabIsValid
  *		True iff set is a valid slab allocation set.
  */
-#define SlabIsValid(set) (PointerIsValid(set) && IsA(set, SlabContext))
+#define SlabIsValid(set) ((set) && IsA(set, SlabContext))
 
 /*
  * SlabBlockIsValid
  *		True iff block is a valid block of slab allocation set.
  */
 #define SlabBlockIsValid(block) \
-	(PointerIsValid(block) && SlabIsValid((block)->slab))
+	((block) && SlabIsValid((block)->slab))
 
 /*
  * SlabBlocklistIndex
diff --git a/src/include/access/genam.h b/src/include/access/genam.h
index 5b2ab181b5f..0831c33b038 100644
--- a/src/include/access/genam.h
+++ b/src/include/access/genam.h
@@ -155,12 +155,6 @@ typedef struct IndexOrderByDistance
  * generalized index_ interface routines (in indexam.c)
  */
 
-/*
- * IndexScanIsValid
- *		True iff the index scan is valid.
- */
-#define IndexScanIsValid(scan) PointerIsValid(scan)
-
 extern Relation index_open(Oid relationId, LOCKMODE lockmode);
 extern Relation try_index_open(Oid relationId, LOCKMODE lockmode);
 extern void index_close(Relation relation, LOCKMODE lockmode);
diff --git a/src/include/access/heapam.h b/src/include/access/heapam.h
index a2bd5a897f8..a1de400b9a5 100644
--- a/src/include/access/heapam.h
+++ b/src/include/access/heapam.h
@@ -280,12 +280,6 @@ typedef enum
  */
 
 
-/*
- * HeapScanIsValid
- *		True iff the heap scan is valid.
- */
-#define HeapScanIsValid(scan) PointerIsValid(scan)
-
 extern TableScanDesc heap_beginscan(Relation relation, Snapshot snapshot,
 									int nkeys, ScanKey key,
 									ParallelTableScanDesc parallel_scan,
diff --git a/src/include/access/htup.h b/src/include/access/htup.h
index f0e3aa87dc3..f6b766697e2 100644
--- a/src/include/access/htup.h
+++ b/src/include/access/htup.h
@@ -75,7 +75,7 @@ typedef HeapTupleData *HeapTuple;
 /*
  * Accessor macros to be used with HeapTuple pointers.
  */
-#define HeapTupleIsValid(tuple) PointerIsValid(tuple)
+#define HeapTupleIsValid(tuple) ((tuple) != NULL)
 
 /* HeapTupleHeader functions implemented in utils/time/combocid.c */
 extern CommandId HeapTupleHeaderGetCmin(const HeapTupleHeaderData *tup);
diff --git a/src/include/access/itup.h b/src/include/access/itup.h
index 338e90749bd..4ba928c7132 100644
--- a/src/include/access/itup.h
+++ b/src/include/access/itup.h
@@ -131,7 +131,7 @@ IndexInfoFindDataOffset(unsigned short t_info)
 static inline Datum
 index_getattr(IndexTuple tup, int attnum, TupleDesc tupleDesc, bool *isnull)
 {
-	Assert(PointerIsValid(isnull));
+	Assert(isnull);
 	Assert(attnum > 0);
 
 	*isnull = false;
diff --git a/src/include/c.h b/src/include/c.h
index f303ba0605a..bc6f8ed2882 100644
--- a/src/include/c.h
+++ b/src/include/c.h
@@ -735,12 +735,6 @@ typedef NameData *Name;
  */
 #define BoolIsValid(boolean)	((boolean) == false || (boolean) == true)
 
-/*
- * PointerIsValid
- *		True iff pointer is valid.
- */
-#define PointerIsValid(pointer) ((const void*)(pointer) != NULL)
-
 /*
  * PointerIsAligned
  *		True iff pointer is properly aligned to point to the given type.
diff --git a/src/include/lib/radixtree.h b/src/include/lib/radixtree.h
index a75b77270c4..ead7500fe13 100644
--- a/src/include/lib/radixtree.h
+++ b/src/include/lib/radixtree.h
@@ -403,7 +403,7 @@ typedef struct RT_NODE
 #else
 #define RT_PTR_ALLOC RT_NODE *
 #define RT_INVALID_PTR_ALLOC NULL
-#define RT_PTR_ALLOC_IS_VALID(ptr) PointerIsValid(ptr)
+#define RT_PTR_ALLOC_IS_VALID(ptr) ((ptr) != NULL)
 #endif
 
 /*
diff --git a/src/include/storage/itemid.h b/src/include/storage/itemid.h
index bfefacaab5c..bbe48aa7322 100644
--- a/src/include/storage/itemid.h
+++ b/src/include/storage/itemid.h
@@ -83,7 +83,7 @@ typedef uint16 ItemLength;
  *		True iff item identifier is valid.
  *		This is a pretty weak test, probably useful only in Asserts.
  */
-#define ItemIdIsValid(itemId)	PointerIsValid(itemId)
+#define ItemIdIsValid(itemId)	((itemId) != NULL)
 
 /*
  * ItemIdIsUsed
diff --git a/src/include/storage/itemptr.h b/src/include/storage/itemptr.h
index 74b87a9114a..2e251fb64ed 100644
--- a/src/include/storage/itemptr.h
+++ b/src/include/storage/itemptr.h
@@ -82,7 +82,7 @@ typedef ItemPointerData *ItemPointer;
 static inline bool
 ItemPointerIsValid(const ItemPointerData *pointer)
 {
-	return PointerIsValid(pointer) && pointer->ip_posid != 0;
+	return pointer && pointer->ip_posid != 0;
 }
 
 /*
@@ -134,7 +134,7 @@ ItemPointerGetOffsetNumber(const ItemPointerData *pointer)
 static inline void
 ItemPointerSet(ItemPointerData *pointer, BlockNumber blockNumber, OffsetNumber offNum)
 {
-	Assert(PointerIsValid(pointer));
+	Assert(pointer);
 	BlockIdSet(&pointer->ip_blkid, blockNumber);
 	pointer->ip_posid = offNum;
 }
@@ -146,7 +146,7 @@ ItemPointerSet(ItemPointerData *pointer, BlockNumber blockNumber, OffsetNumber o
 static inline void
 ItemPointerSetBlockNumber(ItemPointerData *pointer, BlockNumber blockNumber)
 {
-	Assert(PointerIsValid(pointer));
+	Assert(pointer);
 	BlockIdSet(&pointer->ip_blkid, blockNumber);
 }
 
@@ -157,7 +157,7 @@ ItemPointerSetBlockNumber(ItemPointerData *pointer, BlockNumber blockNumber)
 static inline void
 ItemPointerSetOffsetNumber(ItemPointerData *pointer, OffsetNumber offsetNumber)
 {
-	Assert(PointerIsValid(pointer));
+	Assert(pointer);
 	pointer->ip_posid = offsetNumber;
 }
 
@@ -171,8 +171,8 @@ ItemPointerSetOffsetNumber(ItemPointerData *pointer, OffsetNumber offsetNumber)
 static inline void
 ItemPointerCopy(const ItemPointerData *fromPointer, ItemPointerData *toPointer)
 {
-	Assert(PointerIsValid(toPointer));
-	Assert(PointerIsValid(fromPointer));
+	Assert(toPointer);
+	Assert(fromPointer);
 	*toPointer = *fromPointer;
 }
 
@@ -183,7 +183,7 @@ ItemPointerCopy(const ItemPointerData *fromPointer, ItemPointerData *toPointer)
 static inline void
 ItemPointerSetInvalid(ItemPointerData *pointer)
 {
-	Assert(PointerIsValid(pointer));
+	Assert(pointer);
 	BlockIdSet(&pointer->ip_blkid, InvalidBlockNumber);
 	pointer->ip_posid = InvalidOffsetNumber;
 }
diff --git a/src/include/utils/portal.h b/src/include/utils/portal.h
index 0b62143af8b..5ffa6fd5cc8 100644
--- a/src/include/utils/portal.h
+++ b/src/include/utils/portal.h
@@ -208,7 +208,7 @@ typedef struct PortalData
  * PortalIsValid
  *		True iff portal is valid.
  */
-#define PortalIsValid(p) PointerIsValid(p)
+#define PortalIsValid(p) ((p) != NULL)
 
 
 /* Prototypes for functions in utils/mmgr/portalmem.c */
diff --git a/src/include/utils/rel.h b/src/include/utils/rel.h
index b552359915f..21990436373 100644
--- a/src/include/utils/rel.h
+++ b/src/include/utils/rel.h
@@ -486,9 +486,7 @@ typedef struct ViewOptions
  * RelationIsValid
  *		True iff relation descriptor is valid.
  */
-#define RelationIsValid(relation) PointerIsValid(relation)
-
-#define InvalidRelation ((Relation) NULL)
+#define RelationIsValid(relation) ((relation) != NULL)
 
 /*
  * RelationHasReferenceCountZero

base-commit: 0951942bba25f85ad29a4f096ed51a356652b5a2
-- 
2.51.0