Adjust various references to GEQO being non-deterministic.
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 10 Apr 2012 00:49:11 +0000 (20:49 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 10 Apr 2012 00:49:11 +0000 (20:49 -0400)
It's still non-deterministic in some sense ... but given fixed settings
and identical planning problems, it will now always choose the same plan,
so we probably shouldn't tar it with that brush.  Per bug #6565 from
Guillaume Cottenceau.  Back-patch to 9.0 where the behavior was fixed.

doc/src/sgml/config.sgml

index 27f51227ae889fb87d92fa18f95a63ef1c560a5d..d8bc344b15db7a7431ae22b10d3fa1f0745a61e0 100644 (file)
@@ -2427,8 +2427,7 @@ SET ENABLE_SEQSCAN TO OFF;
       planning using heuristic searching.  This reduces planning time for
       complex queries (those joining many relations), at the cost of producing
       plans that are sometimes inferior to those found by the normal
-      exhaustive-search algorithm.  Also, GEQO's searching is randomized and
-      therefore its plans may vary nondeterministically.
+      exhaustive-search algorithm.
       For more information see <xref linkend="geqo">.
      </para>
 
@@ -2467,9 +2466,11 @@ SET ENABLE_SEQSCAN TO OFF;
         this many <literal>FROM</> items involved. (Note that a
         <literal>FULL OUTER JOIN</> construct counts as only one <literal>FROM</>
         item.) The default is 12. For simpler queries it is usually best
-        to use the deterministic, exhaustive planner, but for queries with
-        many tables the deterministic planner takes too long, often
-        longer than the penalty of executing a suboptimal plan.
+        to use the regular, exhaustive-search planner, but for queries with
+        many tables the exhaustive search takes too long, often
+        longer than the penalty of executing a suboptimal plan.  Thus,
+        a threshold on the size of the query is a convenient way to manage
+        use of GEQO.
        </para>
       </listitem>
      </varlistentry>
@@ -2681,7 +2682,7 @@ SELECT * FROM parent WHERE key = 2400;
 
        <para>
         Setting this value to <xref linkend="guc-geqo-threshold"> or more
-        may trigger use of the GEQO planner, resulting in nondeterministic
+        may trigger use of the GEQO planner, resulting in non-optimal
         plans.  See <xref linkend="runtime-config-query-geqo">.
        </para>
       </listitem>
@@ -2716,7 +2717,7 @@ SELECT * FROM parent WHERE key = 2400;
 
        <para>
         Setting this value to <xref linkend="guc-geqo-threshold"> or more
-        may trigger use of the GEQO planner, resulting in nondeterministic
+        may trigger use of the GEQO planner, resulting in non-optimal
         plans.  See <xref linkend="runtime-config-query-geqo">.
        </para>
       </listitem>