Age Owner TLA Line data Source code
1 : /*------------------------------------------------------------------------
2 : *
3 : * geqo_random.c
4 : * random number generator
5 : *
6 : * Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group
7 : * Portions Copyright (c) 1994, Regents of the University of California
8 : *
9 : * src/backend/optimizer/geqo/geqo_random.c
10 : *
11 : *-------------------------------------------------------------------------
12 : */
13 :
14 : #include "postgres.h"
15 :
16 : #include "optimizer/geqo_random.h"
17 :
18 :
19 : void
5896 tgl@sss.pgh.pa.us 20 CBC 3 : geqo_set_seed(PlannerInfo *root, double seed)
21 : {
22 3 : GeqoPrivateData *private = (GeqoPrivateData *) root->join_search_private;
23 :
1378 24 3 : pg_prng_fseed(&private->random_state, seed);
5896 25 3 : }
26 :
27 : double
28 390 : geqo_rand(PlannerInfo *root)
29 : {
30 390 : GeqoPrivateData *private = (GeqoPrivateData *) root->join_search_private;
31 :
1378 32 390 : return pg_prng_double(&private->random_state);
33 : }
34 :
35 : int
36 1155 : geqo_randint(PlannerInfo *root, int upper, int lower)
37 : {
38 1155 : GeqoPrivateData *private = (GeqoPrivateData *) root->join_search_private;
39 :
40 : /*
41 : * In current usage, "lower" is never negative so we can just use
42 : * pg_prng_uint64_range directly.
43 : */
44 1155 : return (int) pg_prng_uint64_range(&private->random_state, lower, upper);
45 : }
|