Repository navigation
Commit ed205b5
committed
contrib/pgbench: Mark PRNG and random functions as PARALLEL RESTRICTED
In contrib/pgbench, the random distribution functions (random,
random_gaussian, random_exponential, random_zipfian, and random_poisson)
were previously marked PARALLEL SAFE, while setseed() was marked
PARALLEL UNSAFE.
Because these functions read and modify process-local PRNG state
(pgbench_prng_state), they cannot safely run inside parallel worker
processes without coordinating seed state. In particular, when running
regression tests under debug_parallel_query = regress (which is enabled
by default in PostgreSQL's macOS CI runner via PG_TEST_INITDB_EXTRA_OPTS),
the query planner wraps PARALLEL SAFE queries in a Gather node and offloads
evaluation to parallel workers. Those workers do not inherit the seed
initialized by setseed in the parallel leader, leading to unseeded,
divergent random values and regression test diff failures.
Mark both setseed and all random functions as PARALLEL RESTRICTED,
matching the parallel safety classification of core PostgreSQL's
random() and setseed() in pg_proc.dat.1 parent b152025 commit ed205b5
1 file changed
Lines changed: 7 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
10 | | - | |
| 10 | + | |
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
15 | | - | |
| 15 | + | |
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
21 | | - | |
| 21 | + | |
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
27 | | - | |
| 27 | + | |
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
31 | 31 | | |
32 | 32 | | |
33 | | - | |
| 33 | + | |
34 | 34 | | |
35 | 35 | | |
36 | 36 | | |
37 | 37 | | |
38 | 38 | | |
39 | | - | |
| 39 | + | |
40 | 40 | | |
41 | 41 | | |
42 | 42 | | |
43 | 43 | | |
44 | 44 | | |
45 | | - | |
| 45 | + | |
46 | 46 | | |
47 | 47 | | |
48 | 48 | | |
| |||
0 commit comments