Get rid of long datatype in CATCACHE_STATS enabled builds
authorDavid Rowley <[email protected]>
Sun, 16 Nov 2025 23:26:41 +0000 (12:26 +1300)
committerDavid Rowley <[email protected]>
Sun, 16 Nov 2025 23:26:41 +0000 (12:26 +1300)
"long" is 32 bits on Windows 64-bit.  Switch to a datatype that's 64-bit
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.

Author: David Rowley <[email protected]>
Reviewed-by: Heikki Linnakangas <[email protected]>
Reviewed-by: Peter Eisentraut <[email protected]>
Discussion: https://postgr.es/m/CAApHDvoGFjSA3aNyVQ3ivbyc4ST=CC5L-_VjEUQ92HbE2Cxovg@mail.gmail.com

src/backend/utils/cache/catcache.c
src/include/utils/catcache.h

index b6408d46e2b466c507826fbba0389c7cbab75258..02ae7d5a831879aef3ec847343322238f49c6c6d 100644 (file)
@@ -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,10 @@ 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 +503,10 @@ 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,
index 00808e23f49b82cd656920fd12b991e299b61c47..fdd733cf7d8f26ffd57613de3271980a4369fed1 100644 (file)
@@ -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;