v3-0001-Get-rid-of-long-datatype-in-CATCACHE_STATS-enable.patch.txt

text/plain

Filename: v3-0001-Get-rid-of-long-datatype-in-CATCACHE_STATS-enable.patch.txt
Type: text/plain
Part: 0
Message: Re: Some efforts to get rid of "long" in our codebase
From 5cf7d9a6c210732c2d5e42f27959dfed8db973c7 Mon Sep 17 00:00:00 2001
From: David Rowley <dgrowley@gmail.com>
Date: Thu, 6 Nov 2025 20:00:39 +1300
Subject: [PATCH v3] Get rid of long datatype in CATCACHE_STATS enabled builds

long is 32-bits on Windows 64 bit.  Switch to a datatype that's 64-bits
on all platforms.  While we're there, use an unsigned type as these
fields count things that have occurred, of which it's not possible to
have negative numbers of.
---
 src/backend/utils/cache/catcache.c | 20 ++++++++++----------
 src/include/utils/catcache.h       | 14 +++++++-------
 2 files changed, 17 insertions(+), 17 deletions(-)

diff --git a/src/backend/utils/cache/catcache.c b/src/backend/utils/cache/catcache.c
index 30ac1bd91be..f28ec4feb39 100644
--- a/src/backend/utils/cache/catcache.c
+++ b/src/backend/utils/cache/catcache.c
@@ -461,14 +461,14 @@ static void
 CatCachePrintStats(int code, Datum arg)
 {
 	slist_iter	iter;
-	long		cc_searches = 0;
-	long		cc_hits = 0;
-	long		cc_neg_hits = 0;
-	long		cc_newloads = 0;
-	long		cc_invals = 0;
-	long		cc_nlists = 0;
-	long		cc_lsearches = 0;
-	long		cc_lhits = 0;
+	unsigned long long cc_searches = 0;
+	unsigned long long cc_hits = 0;
+	unsigned long long cc_neg_hits = 0;
+	unsigned long long cc_newloads = 0;
+	unsigned long long cc_invals = 0;
+	unsigned long long cc_nlists = 0;
+	unsigned long long cc_lsearches = 0;
+	unsigned long long cc_lhits = 0;
 
 	slist_foreach(iter, &CacheHdr->ch_caches)
 	{
@@ -476,7 +476,7 @@ CatCachePrintStats(int code, Datum arg)
 
 		if (cache->cc_ntup == 0 && cache->cc_searches == 0)
 			continue;			/* don't print unused caches */
-		elog(DEBUG2, "catcache %s/%u: %d tup, %ld srch, %ld+%ld=%ld hits, %ld+%ld=%ld loads, %ld invals, %d lists, %ld lsrch, %ld lhits",
+		elog(DEBUG2, "catcache %s/%u: %d tup, %llu srch, %llu+%llu=%llu hits, %llu+%llu=%llu loads, %llu invals, %d lists, %llu lsrch, %llu lhits",
 			 cache->cc_relname,
 			 cache->cc_indexoid,
 			 cache->cc_ntup,
@@ -500,7 +500,7 @@ CatCachePrintStats(int code, Datum arg)
 		cc_lsearches += cache->cc_lsearches;
 		cc_lhits += cache->cc_lhits;
 	}
-	elog(DEBUG2, "catcache totals: %d tup, %ld srch, %ld+%ld=%ld hits, %ld+%ld=%ld loads, %ld invals, %ld lists, %ld lsrch, %ld lhits",
+	elog(DEBUG2, "catcache totals: %d tup, %llu srch, %llu+%llu=%llu hits, %llu+%llu=%llu loads, %llu invals, %llu lists, %llu lsrch, %llu lhits",
 		 CacheHdr->ch_ntup,
 		 cc_searches,
 		 cc_hits,
diff --git a/src/include/utils/catcache.h b/src/include/utils/catcache.h
index 00808e23f49..1419b9d3a1d 100644
--- a/src/include/utils/catcache.h
+++ b/src/include/utils/catcache.h
@@ -69,18 +69,18 @@ typedef struct catcache
 	 * doesn't break ABI for other modules
 	 */
 #ifdef CATCACHE_STATS
-	long		cc_searches;	/* total # searches against this cache */
-	long		cc_hits;		/* # of matches against existing entry */
-	long		cc_neg_hits;	/* # of matches against negative entry */
-	long		cc_newloads;	/* # of successful loads of new entry */
+	unsigned long long cc_searches; /* total # searches against this cache */
+	unsigned long long cc_hits; /* # of matches against existing entry */
+	unsigned long long cc_neg_hits; /* # of matches against negative entry */
+	unsigned long long cc_newloads; /* # of successful loads of new entry */
 
 	/*
 	 * cc_searches - (cc_hits + cc_neg_hits + cc_newloads) is number of failed
 	 * searches, each of which will result in loading a negative entry
 	 */
-	long		cc_invals;		/* # of entries invalidated from cache */
-	long		cc_lsearches;	/* total # list-searches */
-	long		cc_lhits;		/* # of matches against existing lists */
+	unsigned long long cc_invals;	/* # of entries invalidated from cache */
+	unsigned long long cc_lsearches;	/* total # list-searches */
+	unsigned long long cc_lhits;	/* # of matches against existing lists */
 #endif
 } CatCache;
 
-- 
2.43.0