Get rid of long datatype in CATCACHE_STATS enabled builds
authorDavid Rowley <drowley@postgresql.org>
Sun, 16 Nov 2025 23:26:41 +0000 (12:26 +1300)
committerDavid Rowley <drowley@postgresql.org>
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 <dgrowleyml@gmail.com>
Reviewed-by: Heikki Linnakangas <hlinnaka@iki.fi>
Reviewed-by: Peter Eisentraut <peter@eisentraut.org>
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;