Remove geqo_random_seed parameter. Having geqo reset the global random()
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 7 Sep 2003 15:26:54 +0000 (15:26 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 7 Sep 2003 15:26:54 +0000 (15:26 +0000)
sequence every time it's called is bogus --- it interferes with user
control over the seed, and actually decreases randomness overall
(because a seed based on time(NULL) is pretty predictable).  If you really
want a reproducible result from geqo, do 'set seed = 0' before planning
a query.

doc/src/sgml/runtime.sgml
src/backend/optimizer/geqo/geqo_main.c
src/backend/utils/misc/guc.c
src/backend/utils/misc/postgresql.conf.sample
src/bin/psql/tab-complete.c
src/include/optimizer/geqo.h

index 4d4466b4f3b7abccc5f38e4f28460ea8f5f42d5b..a4cfdabe2d044387b3d23221985f5ff9948670ba 100644 (file)
@@ -1438,7 +1438,6 @@ SET ENABLE_SEQSCAN TO OFF;
       <term><varname>GEQO_EFFORT</varname> (<type>integer</type>)</term>
       <term><varname>GEQO_GENERATIONS</varname> (<type>integer</type>)</term>
       <term><varname>GEQO_POOL_SIZE</varname> (<type>integer</type>)</term>
-      <term><varname>GEQO_RANDOM_SEED</varname> (<type>integer</type>)</term>
       <term><varname>GEQO_SELECTION_BIAS</varname> (<type>floating point</type>)</term>
       <listitem>
        <para>
@@ -1455,9 +1454,7 @@ SET ENABLE_SEQSCAN TO OFF;
         is roughly proportional to the sum of pool size and generations.
         The selection bias is the selective pressure within the
         population. Values can be from 1.50 to 2.00; the latter is the
-        default. The random seed can be set to get reproducible results
-        from the algorithm. If it is set to -1 then the algorithm
-        behaves non-deterministically.
+        default.
        </para>
       </listitem>
      </varlistentry>
index b4cf76aa9b4c5c4951687e7156bae47376702aab..f234e7031bd15a2902d4eea18c263cd3846fb1c4 100644 (file)
@@ -41,7 +41,6 @@ int                   Geqo_pool_size;
 int                    Geqo_effort;
 int                    Geqo_generations;
 double         Geqo_selection_bias;
-int                    Geqo_random_seed;
 
 
 static int     gimme_pool_size(int nr_rel);
@@ -96,13 +95,6 @@ geqo(Query *root, int number_of_rels, List *initial_rels)
        number_generations = gimme_number_generations(pool_size, Geqo_effort);
        status_interval = 10;
 
-/* seed random number generator */
-/* XXX why is this done every time around? */
-       if (Geqo_random_seed >= 0)
-               srandom((unsigned int) Geqo_random_seed);
-       else
-               srandom((unsigned int) time(NULL));
-
 /* allocate genetic pool memory */
        pool = alloc_pool(pool_size, number_of_rels);
 
index 841846ba799902667b2ae3f2803a8dcd100e284b..c98bc523abf0bc527837b58a5033ffe7566d24cf 100644 (file)
@@ -898,15 +898,6 @@ static struct config_int ConfigureNamesInt[] =
                &Geqo_generations,
                0, 0, INT_MAX, NULL, NULL
        },
-       {
-               {"geqo_random_seed", PGC_USERSET, QUERY_TUNING_GEQO,
-                       gettext_noop("Can be set to get reproducible results from the algorithm"),
-                       gettext_noop("If it is set to -1 then the algorithm behaves "
-                                                "non-deterministically")
-               },
-               &Geqo_random_seed,
-               -1, INT_MIN, INT_MAX, NULL, NULL
-       },
 
        {
                {"deadlock_timeout", PGC_SIGHUP, LOCK_MANAGEMENT,
index a30ae074a183c6d17735305963424024d422784f..c04aaab39bb7c7dc7fbe20c5513f94cbf47284a3 100644 (file)
 #geqo_generations = 0
 #geqo_pool_size = 0            # default based on tables in statement,
                                # range 128-1024
-#geqo_random_seed = -1         # -1 = use variable seed
 #geqo_selection_bias = 2.0     # range 1.5-2.0
 
 # - Other Planner Options -
index 38e4b278bb081ed1982f5915ee78abcbecaea88f..24030c4531bcaf029bde1f1548db223f13f6eb64 100644 (file)
@@ -534,7 +534,6 @@ psql_completion(char *text, int start, int end)
                "geqo_effort",
                "geqo_generations",
                "geqo_pool_size",
-               "geqo_random_seed",
                "geqo_selection_bias",
                "geqo_threshold",
                "join_collapse_limit",
index 8f87727511aad91d1d6645d07e96d8dd987c626b..3913887dca736027bc6c5dd45e668abf4953ffc3 100644 (file)
@@ -64,8 +64,6 @@ extern double Geqo_selection_bias;
 #define MIN_GEQO_SELECTION_BIAS 1.5
 #define MAX_GEQO_SELECTION_BIAS 2.0
 
-extern int     Geqo_random_seed;       /* or negative to use current time */
-
 
 /* routines in geqo_main.c */
 extern RelOptInfo *geqo(Query *root, int number_of_rels, List *initial_rels);