From 5cf7d9a6c210732c2d5e42f27959dfed8db973c7 Mon Sep 17 00:00:00 2001 From: David Rowley 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