Thread

  1. Re: Some efforts to get rid of "long" in our codebase

    David Rowley <dgrowleyml@gmail.com> — 2025-11-10T00:53:36Z

    On Fri, 7 Nov 2025 at 07:26, Peter Eisentraut <peter@eisentraut.org> wrote:
    >
    > On 06.11.25 13:17, Heikki Linnakangas wrote:
    > >> @@ -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,
    > >
    > > Unfortunately PRIu64 makes these much longer and less readable. I don't
    > > think there's much we can do about that though. Perhaps split the format
    > > string to multiple lines?
    >
    > You could also use unsigned long long int for these, to make the format
    > strings more readable.
    
    I couldn't really decide on what's best here. I'd personally rather be
    more explicit about the width of the type by using uint64, but on the
    other hand, I don't know of any realistic modern hardware/compiler
    combination where unsigned long long isn't 64-bit. Certainly, the
    format string is easier to read with %llu.
    
    v2-0001 wraps the format string as suggested by Heikki, v3-0001 uses
    unsigned long long as suggested by Peter.
    
    v2-0002 is updated to use size_t instead of Size, per Heikki
    
    Any further opinions or votes on v2-0001 vs v3-0001?
    
    David