Thread: Re: pgsql: Fix unportable code in pgbench.
Hello Tom, > Fix unportable code in pgbench. Sorry for this unforseen issue... portability is a pain:-( > 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. Yep, but ISTM that it is down to 32 bits, whereas the PRNG seed expects 48 bits a few lines below: base_random_sequence.xseed[0] = iseed & 0xFFFF; base_random_sequence.xseed[1] = (iseed >> 16) & 0xFFFF; base_random_sequence.xseed[2] = (iseed >> 32) & 0xFFFF; So the third short is now always 0. Hmmm. I'll propose another option over the week-end. -- Fabien.
Fabien COELHO <coelho@cri.ensmp.fr> writes: >> Fix unportable code in pgbench. > Sorry for this unforseen issue... portability is a pain:-( I think it's my fault, actually --- I don't remember how much of that patch was yours. > Yep, but ISTM that it is down to 32 bits, Only on 32-bit-long machines, which are a dwindling minority (except for Windows, which I don't really care about). > So the third short is now always 0. Hmmm. I'll propose another option over > the week-end. I suppose we could put pg_strtouint64 somewhere where pgbench can use it, but TBH I don't think it's worth the trouble. The set of people using the --random-seed=int option at all is darn near empty, I suspect, and the documentation only says you can write an int there. regards, tom lane