INT64_FORMAT in translatable strings - Mailing list pgsql-hackers

From Kyotaro Horiguchi
Subject INT64_FORMAT in translatable strings
Date
Msg-id 20210421.200000.1462448394029407895.horikyota.ntt@gmail.com
Whole thread Raw
Responses Re: INT64_FORMAT in translatable strings
List pgsql-hackers
Hello.

I found the following lines in xlogprefetch.c.

>    ereport(LOG,
>            (errmsg("recovery finished prefetching at %X/%X; "
>                    "prefetch = " UINT64_FORMAT ", "
>                    "skip_hit = " UINT64_FORMAT ", "
...

It is found in ja.po as

"recovery finished prefetching at %X/%X; prefetch = "

. . . .

Anyway we can rely on %lld/%llu and we decided to use them in
translatable strings.  So the attached fixes (AFAICS) all instances of
the macros in translatable strings.

# I just found 3286065651 did one instance of that so I excluded that
# from this patch.

regards.

-- 
Kyotaro Horiguchi
NTT Open Source Software Center
From 50873d196fea546a78c2c26f1963e172dc95c687 Mon Sep 17 00:00:00 2001
From: Kyotaro Horiguchi <horikyota.ntt@gmail.com>
Date: Wed, 21 Apr 2021 19:50:43 +0900
Subject: [PATCH] Don't use INT64_FORMAT inside message strings, take 2

Use %lld/%llu and cast to (unsigned) long long int instead.
---
 contrib/pg_prewarm/pg_prewarm.c           |  8 ++++----
 src/backend/access/transam/xlogprefetch.c | 23 +++++++++++------------
 src/bin/pgbench/pgbench.c                 |  7 ++++---
 3 files changed, 19 insertions(+), 19 deletions(-)

diff --git a/contrib/pg_prewarm/pg_prewarm.c b/contrib/pg_prewarm/pg_prewarm.c
index a855452936..58dcb6c76c 100644
--- a/contrib/pg_prewarm/pg_prewarm.c
+++ b/contrib/pg_prewarm/pg_prewarm.c
@@ -126,8 +126,8 @@ pg_prewarm(PG_FUNCTION_ARGS)
         if (first_block < 0 || first_block >= nblocks)
             ereport(ERROR,
                     (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
-                     errmsg("starting block number must be between 0 and " INT64_FORMAT,
-                            nblocks - 1)));
+                     errmsg("starting block number must be between 0 and %lld",
+                            (long long int) (nblocks - 1))));
     }
     if (PG_ARGISNULL(4))
         last_block = nblocks - 1;
@@ -137,8 +137,8 @@ pg_prewarm(PG_FUNCTION_ARGS)
         if (last_block < 0 || last_block >= nblocks)
             ereport(ERROR,
                     (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
-                     errmsg("ending block number must be between 0 and " INT64_FORMAT,
-                            nblocks - 1)));
+                     errmsg("ending block number must be between 0 and %lld",
+                            (long long int) (nblocks - 1))));
     }
 
     /* Now we're ready to do the real work. */
diff --git a/src/backend/access/transam/xlogprefetch.c b/src/backend/access/transam/xlogprefetch.c
index 9a6f17ca36..3d401bda34 100644
--- a/src/backend/access/transam/xlogprefetch.c
+++ b/src/backend/access/transam/xlogprefetch.c
@@ -358,20 +358,19 @@ XLogPrefetcherFree(XLogPrefetcher *prefetcher)
     /* Log final statistics. */
     ereport(LOG,
             (errmsg("recovery finished prefetching at %X/%X; "
-                    "prefetch = " UINT64_FORMAT ", "
-                    "skip_hit = " UINT64_FORMAT ", "
-                    "skip_new = " UINT64_FORMAT ", "
-                    "skip_fpw = " UINT64_FORMAT ", "
-                    "skip_seq = " UINT64_FORMAT ", "
+                    "prefetch = %llu, "
+                    "skip_hit = %llu, "
+                    "skip_new = %llu, "
+                    "skip_fpw = %llu, "
+                    "skip_seq = %llu, "
                     "avg_distance = %f, "
                     "avg_queue_depth = %f",
-                    (uint32) (prefetcher->reader->EndRecPtr << 32),
-                    (uint32) (prefetcher->reader->EndRecPtr),
-                    pg_atomic_read_u64(&SharedStats->prefetch),
-                    pg_atomic_read_u64(&SharedStats->skip_hit),
-                    pg_atomic_read_u64(&SharedStats->skip_new),
-                    pg_atomic_read_u64(&SharedStats->skip_fpw),
-                    pg_atomic_read_u64(&SharedStats->skip_seq),
+                    LSN_FORMAT_ARGS(prefetcher->reader->EndRecPtr),
+                    (unsigned long long int) pg_atomic_read_u64(&SharedStats->prefetch),
+                    (unsigned long long int) pg_atomic_read_u64(&SharedStats->skip_hit),
+                    (unsigned long long int) pg_atomic_read_u64(&SharedStats->skip_new),
+                    (unsigned long long int) pg_atomic_read_u64(&SharedStats->skip_fpw),
+                    (unsigned long long int) pg_atomic_read_u64(&SharedStats->skip_seq),
                     SharedStats->avg_distance,
                     SharedStats->avg_queue_depth)));
     hash_destroy(prefetcher->filter_table);
diff --git a/src/bin/pgbench/pgbench.c b/src/bin/pgbench/pgbench.c
index da1d9ec535..07403abb58 100644
--- a/src/bin/pgbench/pgbench.c
+++ b/src/bin/pgbench/pgbench.c
@@ -5359,8 +5359,8 @@ parseScriptWeight(const char *option, char **script)
         }
         if (wtmp > INT_MAX || wtmp < 0)
         {
-            pg_log_fatal("weight specification out of range (0 .. %u): " INT64_FORMAT,
-                         INT_MAX, (int64) wtmp);
+            pg_log_fatal("weight specification out of range (0 .. %u): %lld",
+                         INT_MAX, (long long int) wtmp);
             exit(1);
         }
         weight = wtmp;
@@ -5680,7 +5680,8 @@ set_random_seed(const char *seed)
     }
 
     if (seed != NULL)
-        pg_log_info("setting random seed to " UINT64_FORMAT, iseed);
+        pg_log_info("setting random seed to %llu",
+                    (unsigned long long int) iseed);
     random_seed = iseed;
 
     /* Fill base_random_sequence with low-order bits of seed */
-- 
2.27.0


pgsql-hackers by date:

Previous
From: Amit Kapila
Date:
Subject: Re: libpq compression
Next
From: Andy Fan
Date:
Subject: Re: prerequisites of pull_up_sublinks