v2-0002-pgbench-Make-set_random_seed-64-bit-everywhere.patch
text/x-patch
Filename: v2-0002-pgbench-Make-set_random_seed-64-bit-everywhere.patch
Type: text/x-patch
Part: 1
Message:
Re: 64 bit numbers vs format strings
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: format-patch
Series: patch v2-0002
Subject: pgbench: Make set_random_seed() 64-bit everywhere.
| File | + | − |
|---|---|---|
| src/bin/pgbench/pgbench.c | 3 | 7 |
From bb4902d7d80be9ef289d59b7c90df4eccd42de19 Mon Sep 17 00:00:00 2001
From: Thomas Munro <thomas.munro@gmail.com>
Date: Fri, 6 Dec 2024 08:46:34 +1300
Subject: [PATCH v2 2/5] pgbench: Make set_random_seed() 64-bit everywhere.
Delete an intermediate variable, a redundant cast, a use of long and a
use of long long. scanf() the seed directly into a uint64, now that we
can do that with SCNu64 from <inttypes.h>.
The previous coding was from pre-C99 times when %lld might not have been
there, so it read into an unsigned long. Therefore behavior varied
by OS, and --random-seed would accept either 32 or 64 bit seeds. Now
it's the same everywhere.
---
src/bin/pgbench/pgbench.c | 10 +++-------
1 file changed, 3 insertions(+), 7 deletions(-)
diff --git a/src/bin/pgbench/pgbench.c b/src/bin/pgbench/pgbench.c
index bf099aab278..f9d8c7553c5 100644
--- a/src/bin/pgbench/pgbench.c
+++ b/src/bin/pgbench/pgbench.c
@@ -6639,27 +6639,23 @@ set_random_seed(const char *seed)
}
else
{
- /* parse unsigned-int seed value */
- unsigned long ulseed;
char garbage;
- /* Don't try to use UINT64_FORMAT here; it might not work for sscanf */
- if (sscanf(seed, "%lu%c", &ulseed, &garbage) != 1)
+ if (sscanf(seed, "%" SCNu64 "%c", &iseed, &garbage) != 1)
{
pg_log_error("unrecognized random seed option \"%s\"", seed);
pg_log_error_detail("Expecting an unsigned integer, \"time\" or \"rand\".");
return false;
}
- iseed = (uint64) ulseed;
}
if (seed != NULL)
- pg_log_info("setting random seed to %llu", (unsigned long long) iseed);
+ pg_log_info("setting random seed to %" PRIu64, iseed);
random_seed = iseed;
/* Initialize base_random_sequence using seed */
- pg_prng_seed(&base_random_sequence, (uint64) iseed);
+ pg_prng_seed(&base_random_sequence, iseed);
return true;
}
--
2.48.1