v1-0001-Get-rid-of-long-datatype-in-CATCACHE_STATS-enable.patch
application/octet-stream
Filename: v1-0001-Get-rid-of-long-datatype-in-CATCACHE_STATS-enable.patch
Type: application/octet-stream
Part: 0
From f61abbbb99e2a5965c8864144e332bf76eab7913 Mon Sep 17 00:00:00 2001
From: David Rowley <dgrowley@gmail.com>
Date: Thu, 6 Nov 2025 20:00:39 +1300
Subject: [PATCH v1 1/2] 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..7e201df0b8f 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;
+ uint64 cc_searches = 0;
+ uint64 cc_hits = 0;
+ uint64 cc_neg_hits = 0;
+ uint64 cc_newloads = 0;
+ uint64 cc_invals = 0;
+ uint64 cc_nlists = 0;
+ uint64 cc_lsearches = 0;
+ uint64 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, %" PRIu64 " srch, %" PRIu64 "+%" PRIu64 "=%" PRIu64 " hits, %" PRIu64 "+%" PRIu64 "=%" PRIu64 " loads, %" PRIu64 " invals, %d lists, %" PRIu64 " lsrch, %" PRIu64 " 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, %" PRIu64 " srch, %" PRIu64 "+%" PRIu64 "=%" PRIu64 " hits, %" PRIu64 "+%" PRIu64 "=%" PRIu64 " loads, %" PRIu64 " invals, %" PRIu64 " lists, %" PRIu64 " lsrch, %" PRIu64 " lhits",
CacheHdr->ch_ntup,
cc_searches,
cc_hits,
diff --git a/src/include/utils/catcache.h b/src/include/utils/catcache.h
index 00808e23f49..fdd733cf7d8 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 */
+ uint64 cc_searches; /* total # searches against this cache */
+ uint64 cc_hits; /* # of matches against existing entry */
+ uint64 cc_neg_hits; /* # of matches against negative entry */
+ uint64 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 */
+ uint64 cc_invals; /* # of entries invalidated from cache */
+ uint64 cc_lsearches; /* total # list-searches */
+ uint64 cc_lhits; /* # of matches against existing lists */
#endif
} CatCache;
--
2.43.0