Hi,

On Tue, Nov 18, 2025 at 04:54:32PM +0100, Peter Eisentraut wrote:
> I mean, some people like writing if (!foo) and some like writing if
> (foo == NULL), but we're not going to legislate one
> over the other.

Agree. Out of curiosity, I searched for pointers and literal zero comparisons
or assignments (with [1]) and found 6 of them.

While literal zero is technically correct, NULL is the semantically appropriate
choice for pointers.

PFA a patch to fix those 6.

[1]: 
https://github.com/bdrouvot/coccinelle_on_pg/blob/main/misc/pointers_and_literal_zero.cocci

Regards,

-- 
Bertrand Drouvot
PostgreSQL Contributors Team
RDS Open Source Databases
Amazon Web Services: https://aws.amazon.com
>From d7c1055cf62bd6ce6ce6cf24e00407449ee91cc9 Mon Sep 17 00:00:00 2001
From: Bertrand Drouvot <[email protected]>
Date: Sat, 29 Nov 2025 05:19:02 +0000
Subject: [PATCH v1] Replace pointer comparisons and assignments to literal
 zero with NULL

While 0 is technically correct, NULL is the semantically appropriate choice for
pointers.
---
 src/backend/nodes/copyfuncs.c         | 2 +-
 src/backend/postmaster/postmaster.c   | 2 +-
 src/backend/utils/adt/pg_locale.c     | 4 ++--
 src/backend/utils/adt/timestamp.c     | 2 +-
 src/interfaces/ecpg/ecpglib/prepare.c | 2 +-
 5 files changed, 6 insertions(+), 6 deletions(-)
  24.3% src/backend/nodes/
  18.3% src/backend/postmaster/
  43.4% src/backend/utils/adt/
  13.9% src/interfaces/ecpg/ecpglib/

diff --git a/src/backend/nodes/copyfuncs.c b/src/backend/nodes/copyfuncs.c
index 475693b08bc..9b10cb096d1 100644
--- a/src/backend/nodes/copyfuncs.c
+++ b/src/backend/nodes/copyfuncs.c
@@ -204,7 +204,7 @@ copyObjectImpl(const void *from)
 
 		default:
 			elog(ERROR, "unrecognized node type: %d", (int) nodeTag(from));
-			retval = 0;			/* keep compiler quiet */
+			retval = NULL;			/* keep compiler quiet */
 			break;
 	}
 
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index 7c064cf9fbb..a956db4ad27 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -3391,7 +3391,7 @@ LaunchMissingBackgroundProcesses(void)
 			Shutdown <= SmartShutdown)
 		{
 			WalReceiverPMChild = StartChildProcess(B_WAL_RECEIVER);
-			if (WalReceiverPMChild != 0)
+			if (WalReceiverPMChild != NULL)
 				WalReceiverRequested = false;
 			/* else leave the flag set, so we'll try again later */
 		}
diff --git a/src/backend/utils/adt/pg_locale.c b/src/backend/utils/adt/pg_locale.c
index b02e7fa4f18..b26257c0a8d 100644
--- a/src/backend/utils/adt/pg_locale.c
+++ b/src/backend/utils/adt/pg_locale.c
@@ -1222,10 +1222,10 @@ pg_newlocale_from_collation(Oid collid)
 		 * Make sure cache entry is marked invalid, in case we fail before
 		 * setting things.
 		 */
-		cache_entry->locale = 0;
+		cache_entry->locale = NULL;
 	}
 
-	if (cache_entry->locale == 0)
+	if (cache_entry->locale == NULL)
 	{
 		cache_entry->locale = create_pg_locale(collid, CollationCacheContext);
 	}
diff --git a/src/backend/utils/adt/timestamp.c b/src/backend/utils/adt/timestamp.c
index 156a4830ffd..fda096f6c4e 100644
--- a/src/backend/utils/adt/timestamp.c
+++ b/src/backend/utils/adt/timestamp.c
@@ -5158,7 +5158,7 @@ interval_trunc(PG_FUNCTION_ARGS)
 							 errmsg("unit \"%s\" not supported for type %s",
 									lowunits, format_type_be(INTERVALOID)),
 							 (val == DTK_WEEK) ? errdetail("Months usually have fractional weeks.") : 0));
-					result = 0;
+					result = NULL;
 			}
 		}
 
diff --git a/src/interfaces/ecpg/ecpglib/prepare.c b/src/interfaces/ecpg/ecpglib/prepare.c
index 4b1ae839506..a3f51993d70 100644
--- a/src/interfaces/ecpg/ecpglib/prepare.c
+++ b/src/interfaces/ecpg/ecpglib/prepare.c
@@ -509,7 +509,7 @@ ecpg_freeStmtCacheEntry(int lineno, int compat,
 	if (entry->ecpgQuery)
 	{
 		ecpg_free(entry->ecpgQuery);
-		entry->ecpgQuery = 0;
+		entry->ecpgQuery = NULL;
 	}
 
 	return entNo;
-- 
2.34.1

Reply via email to