From a7f49252d2476cc5996b1e9dbb253cdc521fbb7f Mon Sep 17 00:00:00 2001
From: Bruce Momjian <bruce@momjian.us>
Date: Mon, 22 Aug 2005 17:35:03 +0000
Subject: [PATCH] enable_constraint_exclusion => constraint_exclusion

Also improve wording.
---
 doc/TODO                                      |  4 +--
 doc/src/FAQ/TODO.html                         |  4 +--
 doc/src/sgml/runtime.sgml                     | 26 +++++++++----------
 src/backend/optimizer/path/allpaths.c         |  6 ++---
 src/backend/utils/misc/guc.c                  | 13 +++++-----
 src/backend/utils/misc/postgresql.conf.sample |  2 +-
 src/include/optimizer/cost.h                  |  4 +--
 src/test/regress/expected/rangefuncs.out      |  5 ++--
 8 files changed, 31 insertions(+), 33 deletions(-)

diff --git a/doc/TODO b/doc/TODO
index 56aa3de6ece..6fb373cb41b 100644
--- a/doc/TODO
+++ b/doc/TODO
@@ -385,7 +385,7 @@ SQL Commands
 
 * Add GUC to issue notice about queries that use unjoined tables
 * Allow EXPLAIN to identify tables that were skipped because of 
-  enable_constraint_exclusion
+  constraint_exclusion
 * Allow EXPLAIN output to be more easily processed by scripts
 
 
@@ -769,7 +769,7 @@ Indexes
 * Allow the creation of indexes with mixed ascending/descending specifiers
 * -Fix incorrect rtree results due to wrong assumptions about "over"
   operator semantics
-* Allow enable_constraint_exclusion to work for UNIONs like it does for
+* Allow constraint_exclusion to work for UNIONs like it does for
   inheritance, and allow it to work for UPDATE and DELETE queries
 
 
diff --git a/doc/src/FAQ/TODO.html b/doc/src/FAQ/TODO.html
index a2b70a78bc9..edd160c3f77 100644
--- a/doc/src/FAQ/TODO.html
+++ b/doc/src/FAQ/TODO.html
@@ -355,7 +355,7 @@ first.
 </p>
   </li><li>Add GUC to issue notice about queries that use unjoined tables
   </li><li>Allow EXPLAIN to identify tables that were skipped because of 
-  enable_constraint_exclusion
+  constraint_exclusion
   </li><li>Allow EXPLAIN output to be more easily processed by scripts
   </li><li>CREATE
   <ul>
@@ -694,7 +694,7 @@ first.
   </li><li>Allow the creation of indexes with mixed ascending/descending specifiers
   </li><li>-<em>Fix incorrect rtree results due to wrong assumptions about "over"</em>
   operator semantics
-  </li><li>Allow enable_constraint_exclusion to work for UNIONs like it does for
+  </li><li>Allow constraint_exclusion to work for UNIONs like it does for
   inheritance, and allow it to work for UPDATE and DELETE queries
   </li><li>GIST
   <ul>
diff --git a/doc/src/sgml/runtime.sgml b/doc/src/sgml/runtime.sgml
index 0966b5105e5..a699e0096b2 100644
--- a/doc/src/sgml/runtime.sgml
+++ b/doc/src/sgml/runtime.sgml
@@ -1,5 +1,5 @@
 <!--
-$PostgreSQL: pgsql/doc/src/sgml/runtime.sgml,v 1.346 2005/08/21 03:39:26 tgl Exp $
+$PostgreSQL: pgsql/doc/src/sgml/runtime.sgml,v 1.347 2005/08/22 17:34:56 momjian Exp $
 -->
 
 <chapter Id="runtime">
@@ -2352,24 +2352,24 @@ archive_command = 'copy "%p" /mnt/server/archivedir/"%f"'  # Windows
       </listitem>
      </varlistentry>
 
-     <varlistentry id="guc-enable-constraint-exclusion" xreflabel="enable_constraint_exclusion">
-      <term><varname>enable_constraint_exclusion</varname> (<type>boolean</type>)</term>
+     <varlistentry id="guc-constraint-exclusion" xreflabel="constraint_exclusion">
+      <term><varname>constraint_exclusion</varname> (<type>boolean</type>)</term>
       <indexterm>
        <primary>constraint exclusion</primary>
       </indexterm>
       <indexterm>
-       <primary><varname>enable_constraint_exclusion</> configuration parameter</primary>
+       <primary><varname>constraint_exclusion</> configuration parameter</primary>
       </indexterm>
       <listitem>
        <para>
-        Enables or disables the query planner's use of table constraints.
-        The default is <literal>off</>.
+        Enables or disables the query planner's use of table constraints to
+        limit table access.  The default is <literal>off</>.
        </para>
 
        <para>
         When this parameter is <literal>on</>, the planner compares query
-        conditions to table CHECK constraints, and omits scanning tables
-        for which the conditions contradict the constraints.  (Presently
+        conditions with table CHECK constraints, and omits scanning tables
+        where the conditions contradict the constraints.  (Presently
         this is done only for child tables of inheritance scans.)  For
         example:
 
@@ -2387,15 +2387,15 @@ SELECT * FROM parent WHERE key = 2400;
        </para>
 
        <para>
-        Currently, <varname>enable_constraint_exclusion</> defaults to
-        <literal>off</>, because it creates a risk of wrong answers when
-        query plans are cached: if a table constraint is changed or dropped,
-        the previously generated plan may now be wrong, and there is no
+        Currently, <varname>constraint_exclusion</> defaults to
+        <literal>off</>, because it risks incorrect results if
+        query plans are cached --- if a table constraint is changed or dropped,
+        the previously generated plan might now be wrong, and there is no
         built-in mechanism to force re-planning.  (This deficiency will
         probably be addressed in a future
         <productname>PostgreSQL</productname> release.)  Another reason
         for keeping it off is that the constraint checks are relatively
-        expensive to make, and in many circumstances will yield no savings.
+        expensive, and in many circumstances will yield no savings.
         It is recommended to turn this on only if you are actually using
         partitioned tables designed to take advantage of the feature.
        </para>
diff --git a/src/backend/optimizer/path/allpaths.c b/src/backend/optimizer/path/allpaths.c
index 124534914f8..aa14deacd0c 100644
--- a/src/backend/optimizer/path/allpaths.c
+++ b/src/backend/optimizer/path/allpaths.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/optimizer/path/allpaths.c,v 1.135 2005/07/23 21:05:46 tgl Exp $
+ *	  $PostgreSQL: pgsql/src/backend/optimizer/path/allpaths.c,v 1.136 2005/08/22 17:34:58 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -36,7 +36,7 @@
 
 
 /* These parameters are set by GUC */
-bool		enable_constraint_exclusion = false;
+bool		constraint_exclusion = false;
 bool		enable_geqo = false;	/* just in case GUC doesn't set it */
 int			geqo_threshold;
 
@@ -318,7 +318,7 @@ set_inherited_rel_pathlist(PlannerInfo *root, RelOptInfo *rel,
 		 * exclusion, just ignore it.  (We have to have converted the
 		 * baserestrictinfo Vars before we can make the test.)
 		 */
-		if (enable_constraint_exclusion)
+		if (constraint_exclusion)
 		{
 			List   *constraint_pred;
 
diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c
index 6fd3d9fc5c4..29e0e409307 100644
--- a/src/backend/utils/misc/guc.c
+++ b/src/backend/utils/misc/guc.c
@@ -10,7 +10,7 @@
  * Written by Peter Eisentraut <peter_e@gmx.net>.
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.285 2005/08/21 03:39:34 tgl Exp $
+ *	  $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.286 2005/08/22 17:34:59 momjian Exp $
  *
  *--------------------------------------------------------------------
  */
@@ -453,13 +453,12 @@ static struct config_bool ConfigureNamesBool[] =
 		true, NULL, NULL
 	},
 	{
-		{"enable_constraint_exclusion", PGC_USERSET, QUERY_TUNING_OTHER,
-			gettext_noop("Enables the planner's use of constraints in queries."),
-			gettext_noop("Constraints will be examined to exclude tables "
-						 "that can be proven not to be required to produce "
-						 "a correct result for the query.")
+		{"constraint_exclusion", PGC_USERSET, QUERY_TUNING_OTHER,
+			gettext_noop("Enables the planner to use constraints to limit table access."),
+			gettext_noop("This prevents table access if the table constraints "
+						 "guarantee that table access is necessary.")
 		},
-		&enable_constraint_exclusion,
+		&constraint_exclusion,
 		false, NULL, NULL
 	},
 	{
diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample
index 48152e8ed26..6049aafe191 100644
--- a/src/backend/utils/misc/postgresql.conf.sample
+++ b/src/backend/utils/misc/postgresql.conf.sample
@@ -190,7 +190,7 @@
 # - Other Planner Options -
 
 #default_statistics_target = 10		# range 1-1000
-#enable_constraint_exclusion = off
+#constraint_exclusion = off
 #from_collapse_limit = 8
 #join_collapse_limit = 8		# 1 disables collapsing of explicit 
 					# JOINs
diff --git a/src/include/optimizer/cost.h b/src/include/optimizer/cost.h
index a6988e45991..4162b632fcc 100644
--- a/src/include/optimizer/cost.h
+++ b/src/include/optimizer/cost.h
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/include/optimizer/cost.h,v 1.69 2005/07/23 21:05:48 tgl Exp $
+ * $PostgreSQL: pgsql/src/include/optimizer/cost.h,v 1.70 2005/08/22 17:35:03 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -49,7 +49,7 @@ extern bool enable_hashagg;
 extern bool enable_nestloop;
 extern bool enable_mergejoin;
 extern bool enable_hashjoin;
-extern bool enable_constraint_exclusion;
+extern bool constraint_exclusion;
 
 extern double clamp_row_est(double nrows);
 extern void cost_seqscan(Path *path, PlannerInfo *root, RelOptInfo *baserel);
diff --git a/src/test/regress/expected/rangefuncs.out b/src/test/regress/expected/rangefuncs.out
index 3172d16b88f..42f770ff55a 100644
--- a/src/test/regress/expected/rangefuncs.out
+++ b/src/test/regress/expected/rangefuncs.out
@@ -1,8 +1,7 @@
 SELECT name, setting FROM pg_settings WHERE name LIKE 'enable%';
             name             | setting 
------------------------------+---------
+-------------------+---------
  enable_bitmapscan           | on
- enable_constraint_exclusion | off
  enable_hashagg              | on
  enable_hashjoin             | on
  enable_indexscan            | on
@@ -11,7 +10,7 @@ SELECT name, setting FROM pg_settings WHERE name LIKE 'enable%';
  enable_seqscan              | on
  enable_sort                 | on
  enable_tidscan              | on
-(10 rows)
+(9 rows)
 
 CREATE TABLE foo2(fooid int, f2 int);
 INSERT INTO foo2 VALUES(1, 11);
-- 
GitLab