From fb1861f78b6224c6e2f546239ad5b2097c97c9f0 Mon Sep 17 00:00:00 2001
From: Sami Imseih <samimseih@gmail.com>
Date: Fri, 3 Jul 2026 10:31:09 -0500
Subject: [PATCH v2 3/3] Add Asserts for required callbacks before invocation

Assert that reset_all_cb and init_shmem_cb are not NULL before
calling them, matching the existing pattern used for snapshot_cb.
This provides clearer diagnostics in assert-enabled builds compared
to a raw NULL pointer dereference.
---
 src/backend/utils/activity/pgstat.c       | 4 ++++
 src/backend/utils/activity/pgstat_shmem.c | 1 +
 2 files changed, 5 insertions(+)

diff --git a/src/backend/utils/activity/pgstat.c b/src/backend/utils/activity/pgstat.c
index 2d8b92c4051..deacf167100 100644
--- a/src/backend/utils/activity/pgstat.c
+++ b/src/backend/utils/activity/pgstat.c
@@ -908,7 +908,10 @@ pgstat_reset_of_kind(PgStat_Kind kind)
 	TimestampTz ts = GetCurrentTimestamp();
 
 	if (kind_info->fixed_amount)
+	{
+		Assert(kind_info->reset_all_cb != NULL);
 		kind_info->reset_all_cb(ts);
+	}
 	else
 		pgstat_reset_entries_of_kind(kind, ts);
 }
@@ -2155,6 +2158,7 @@ pgstat_reset_after_failure(void)
 		if (!kind_info || !kind_info->fixed_amount)
 			continue;
 
+		Assert(kind_info->reset_all_cb != NULL);
 		kind_info->reset_all_cb(ts);
 	}
 
diff --git a/src/backend/utils/activity/pgstat_shmem.c b/src/backend/utils/activity/pgstat_shmem.c
index 5ea3f1973f9..d00dbb90f16 100644
--- a/src/backend/utils/activity/pgstat_shmem.c
+++ b/src/backend/utils/activity/pgstat_shmem.c
@@ -247,6 +247,7 @@ StatsShmemInit(void *arg)
 				ptr = ctl->custom_data[idx];
 			}
 
+			Assert(kind_info->init_shmem_cb != NULL);
 			kind_info->init_shmem_cb(ptr);
 		}
 	}
-- 
2.50.1 (Apple Git-155)

