Skip to content

Commit 80ad850

Browse files
macdiceCommitfest Bot
authored andcommitted
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.
1 parent e003384 commit 80ad850

File tree

1 file changed

+3
-7
lines changed

1 file changed

+3
-7
lines changed

src/bin/pgbench/pgbench.c

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6639,27 +6639,23 @@ set_random_seed(const char *seed)
66396639
}
66406640
else
66416641
{
6642-
/* parse unsigned-int seed value */
6643-
unsigned long ulseed;
66446642
char garbage;
66456643

6646-
/* Don't try to use UINT64_FORMAT here; it might not work for sscanf */
6647-
if (sscanf(seed, "%lu%c", &ulseed, &garbage) != 1)
6644+
if (sscanf(seed, "%" SCNu64 "%c", &iseed, &garbage) != 1)
66486645
{
66496646
pg_log_error("unrecognized random seed option \"%s\"", seed);
66506647
pg_log_error_detail("Expecting an unsigned integer, \"time\" or \"rand\".");
66516648
return false;
66526649
}
6653-
iseed = (uint64) ulseed;
66546650
}
66556651

66566652
if (seed != NULL)
6657-
pg_log_info("setting random seed to %llu", (unsigned long long) iseed);
6653+
pg_log_info("setting random seed to %" PRIu64, iseed);
66586654

66596655
random_seed = iseed;
66606656

66616657
/* Initialize base_random_sequence using seed */
6662-
pg_prng_seed(&base_random_sequence, (uint64) iseed);
6658+
pg_prng_seed(&base_random_sequence, iseed);
66636659

66646660
return true;
66656661
}

0 commit comments

Comments
 (0)