• Tom Lane's avatar
    Fix portability problem in pgbench. · e6c3ba7f
    Tom Lane authored
    The pgbench regression test supposed that srandom() with a specific value
    would result in deterministic output from random(), as required by POSIX.
    It emerges however that OpenBSD is too smart to be constrained by mere
    standards, so their random() emits nondeterministic output anyway.
    While a workaround does exist, what seems like a better fix is to stop
    relying on the platform's srandom()/random() altogether, so that what
    you get from --random-seed=N is not merely deterministic but platform
    independent.  Hence, use a separate pg_jrand48() random sequence in
    place of random().
    
    Also adjust the regression test case that's supposed to detect
    nondeterminism so that it's more likely to detect it; the original
    choice of random_zipfian parameter tended to produce the same output
    all the time even if the underlying behavior wasn't deterministic.
    
    In passing, improve pgbench's docs about random_zipfian().
    
    Back-patch to v11 where this code was introduced.
    
    Fabien Coelho and Tom Lane
    
    Discussion: https://postgr.es/m/4615.1547792324@sss.pgh.pa.us
    e6c3ba7f
001_pgbench_with_server.pl 24.2 KB