Fix unportable code in pgbench.

The buildfarm points out that UINT64_FORMAT might not work with sscanf;
it's calibrated for our printf implementation, which might not agree
with the platform-supplied sscanf.  Fall back to just accepting an
unsigned long, which is already more than the documentation promises.

Oversight in e6c3ba7fb; back-patch to v11, as that was.
This commit is contained in:
Tom Lane 2019-04-17 17:30:29 -04:00
parent 8cde7f4948
commit 1a75c1d0c5
1 changed files with 5 additions and 2 deletions

View File

@ -5019,16 +5019,19 @@ set_random_seed(const char *seed)
}
else
{
/* parse seed unsigned int value */
/* parse unsigned-int seed value */
unsigned long ulseed;
char garbage;
if (sscanf(seed, UINT64_FORMAT "%c", &iseed, &garbage) != 1)
/* Don't try to use UINT64_FORMAT here; it might not work for sscanf */
if (sscanf(seed, "%lu%c", &ulseed, &garbage) != 1)
{
fprintf(stderr,
"unrecognized random seed option \"%s\": expecting an unsigned integer, \"time\" or \"rand\"\n",
seed);
return false;
}
iseed = (uint64) ulseed;
}
if (seed != NULL)