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
