From 4a2cc9691d118d5ab128086e2832999574d33077 Mon Sep 17 00:00:00 2001
From: Bertrand Drouvot <bertranddrouvot.pg@gmail.com>
Date: Sun, 16 Nov 2025 07:12:10 +0000
Subject: [PATCH v1 5/8] Use OidIsValid() in various places for functions
 returning OID

Let's use OidIsValid() instead of:

- direct comparisons with InvalidOid
- direct comparisons with literal 0
---
 src/backend/catalog/index.c         | 2 +-
 src/backend/catalog/pg_conversion.c | 4 +---
 src/backend/catalog/pg_proc.c       | 2 +-
 src/backend/commands/extension.c    | 2 +-
 src/backend/commands/tablecmds.c    | 5 ++---
 src/backend/parser/parse_collate.c  | 4 ++--
 src/include/parser/parse_type.h     | 2 +-
 src/include/utils/lsyscache.h       | 4 ++--
 8 files changed, 11 insertions(+), 14 deletions(-)
  26.8% src/backend/catalog/
  26.8% src/backend/commands/
  16.8% src/backend/parser/
   9.4% src/include/parser/
  19.9% src/include/utils/

diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 120d7ad641c..a12c2d85e95 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -884,7 +884,7 @@ index_create(Relation heapRelation,
 	 * catalogs' unique indexes anyway, but we prefer to give a friendlier
 	 * error message.
 	 */
-	if (get_relname_relid(indexRelationName, namespaceId))
+	if (OidIsValid(get_relname_relid(indexRelationName, namespaceId)))
 	{
 		if ((flags & INDEX_CREATE_IF_NOT_EXISTS) != 0)
 		{
diff --git a/src/backend/catalog/pg_conversion.c b/src/backend/catalog/pg_conversion.c
index 090f680d190..b2b1b058a2a 100644
--- a/src/backend/catalog/pg_conversion.c
+++ b/src/backend/catalog/pg_conversion.c
@@ -69,9 +69,7 @@ ConversionCreate(const char *conname, Oid connamespace,
 		 * make sure there is no existing default <for encoding><to encoding>
 		 * pair in this name space
 		 */
-		if (FindDefaultConversion(connamespace,
-								  conforencoding,
-								  contoencoding))
+		if (OidIsValid(FindDefaultConversion(connamespace, conforencoding, contoencoding)))
 			ereport(ERROR,
 					(errcode(ERRCODE_DUPLICATE_OBJECT),
 					 errmsg("default conversion for %s to %s already exists",
diff --git a/src/backend/catalog/pg_proc.c b/src/backend/catalog/pg_proc.c
index b89b9ccda0e..a639d8ef762 100644
--- a/src/backend/catalog/pg_proc.c
+++ b/src/backend/catalog/pg_proc.c
@@ -765,7 +765,7 @@ fmgr_internal_validator(PG_FUNCTION_ARGS)
 	tmp = SysCacheGetAttrNotNull(PROCOID, tuple, Anum_pg_proc_prosrc);
 	prosrc = TextDatumGetCString(tmp);
 
-	if (fmgr_internal_function(prosrc) == InvalidOid)
+	if (!OidIsValid(fmgr_internal_function(prosrc)))
 		ereport(ERROR,
 				(errcode(ERRCODE_UNDEFINED_FUNCTION),
 				 errmsg("there is no built-in function named \"%s\"",
diff --git a/src/backend/commands/extension.c b/src/backend/commands/extension.c
index 43a5642fd10..2c389cf6433 100644
--- a/src/backend/commands/extension.c
+++ b/src/backend/commands/extension.c
@@ -1981,7 +1981,7 @@ CreateExtension(ParseState *pstate, CreateExtensionStmt *stmt)
 	 * in case of race conditions; but this is a friendlier error message, and
 	 * besides we need a check to support IF NOT EXISTS.
 	 */
-	if (get_extension_oid(stmt->extname, true) != InvalidOid)
+	if (OidIsValid(get_extension_oid(stmt->extname, true)))
 	{
 		if (stmt->if_not_exists)
 		{
diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c
index 45bcfff23d6..0d335123b5b 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -4292,7 +4292,7 @@ RenameRelationInternal(Oid myrelid, const char *newrelname, bool is_internal, bo
 	otid = reltup->t_self;
 	relform = (Form_pg_class) GETSTRUCT(reltup);
 
-	if (get_relname_relid(newrelname, namespaceId) != InvalidOid)
+	if (OidIsValid(get_relname_relid(newrelname, namespaceId)))
 		ereport(ERROR,
 				(errcode(ERRCODE_DUPLICATE_TABLE),
 				 errmsg("relation \"%s\" already exists",
@@ -19074,8 +19074,7 @@ AlterRelationNamespaceInternal(Relation classRel, Oid relOid,
 		ItemPointerData otid = classTup->t_self;
 
 		/* check for duplicate name (more friendly than unique-index failure) */
-		if (get_relname_relid(NameStr(classForm->relname),
-							  newNspOid) != InvalidOid)
+		if (OidIsValid(get_relname_relid(NameStr(classForm->relname), newNspOid)))
 			ereport(ERROR,
 					(errcode(ERRCODE_DUPLICATE_TABLE),
 					 errmsg("relation \"%s\" already exists in schema \"%s\"",
diff --git a/src/backend/parser/parse_collate.c b/src/backend/parser/parse_collate.c
index d2e218353f3..efb518679f0 100644
--- a/src/backend/parser/parse_collate.c
+++ b/src/backend/parser/parse_collate.c
@@ -924,7 +924,7 @@ assign_ordered_set_collations(Aggref *aggref,
 
 	/* Merge sort collations to parent only if there can be only one */
 	merge_sort_collations = (list_length(aggref->args) == 1 &&
-							 get_func_variadictype(aggref->aggfnoid) == InvalidOid);
+							 !OidIsValid(get_func_variadictype(aggref->aggfnoid)));
 
 	/* Direct args, if any, are normal children of the Aggref node */
 	(void) assign_collations_walker((Node *) aggref->aggdirectargs,
@@ -962,7 +962,7 @@ assign_hypothetical_collations(Aggref *aggref,
 
 	/* Merge sort collations to parent only if there can be only one */
 	merge_sort_collations = (list_length(aggref->args) == 1 &&
-							 get_func_variadictype(aggref->aggfnoid) == InvalidOid);
+							 !OidIsValid(get_func_variadictype(aggref->aggfnoid)));
 
 	/* Process any non-hypothetical direct args */
 	extra_args = list_length(aggref->aggdirectargs) - list_length(aggref->args);
diff --git a/src/include/parser/parse_type.h b/src/include/parser/parse_type.h
index 0d919d8bfa2..304b885db94 100644
--- a/src/include/parser/parse_type.h
+++ b/src/include/parser/parse_type.h
@@ -56,6 +56,6 @@ extern bool parseTypeString(const char *str, Oid *typeid_p, int32 *typmod_p,
 							Node *escontext);
 
 /* true if typeid is composite, or domain over composite, but not RECORD */
-#define ISCOMPLEX(typeid) (typeOrDomainTypeRelid(typeid) != InvalidOid)
+#define ISCOMPLEX(typeid) (OidIsValid(typeOrDomainTypeRelid(typeid)))
 
 #endif							/* PARSE_TYPE_H */
diff --git a/src/include/utils/lsyscache.h b/src/include/utils/lsyscache.h
index 50fb149e9ac..dc2d69b6d4e 100644
--- a/src/include/utils/lsyscache.h
+++ b/src/include/utils/lsyscache.h
@@ -211,9 +211,9 @@ extern char *get_publication_name(Oid pubid, bool missing_ok);
 extern Oid	get_subscription_oid(const char *subname, bool missing_ok);
 extern char *get_subscription_name(Oid subid, bool missing_ok);
 
-#define type_is_array(typid)  (get_element_type(typid) != InvalidOid)
+#define type_is_array(typid)  (OidIsValid(get_element_type(typid)))
 /* type_is_array_domain accepts both plain arrays and domains over arrays */
-#define type_is_array_domain(typid)  (get_base_element_type(typid) != InvalidOid)
+#define type_is_array_domain(typid)  (OidIsValid(get_base_element_type(typid)))
 
 #define TypeIsToastable(typid)	(get_typstorage(typid) != TYPSTORAGE_PLAIN)
 
-- 
2.34.1

