enable_constraint_exclusion => constraint_exclusion
authorBruce Momjian
Mon, 22 Aug 2005 17:35:03 +0000 (17:35 +0000)
committerBruce Momjian
Mon, 22 Aug 2005 17:35:03 +0000 (17:35 +0000)
Also improve wording.

doc/TODO
doc/src/FAQ/TODO.html
doc/src/sgml/runtime.sgml
src/backend/optimizer/path/allpaths.c
src/backend/utils/misc/guc.c
src/backend/utils/misc/postgresql.conf.sample
src/include/optimizer/cost.h
src/test/regress/expected/rangefuncs.out

index 56aa3de6eceb1f44617583e032fbafab7dd6a959..6fb373cb41b6cb7c0ac862e8cb7c13ea6932760d 100644 (file)
--- 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
 
 
index a2b70a78bc951e5142bb5f4e9a74cad6610aa141..edd160c3f7791a45b1a910871fe21b5b98b82e1a 100644 (file)
@@ -355,7 +355,7 @@ first.
 

   
  • 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
  •    
  • CREATE
  •    
      @@ -694,7 +694,7 @@ first.
         
    • 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
         
    • GIST
    •    
        index 0966b5105e52b07862d6c1be669cfcfbc51a86f5..a699e0096b29522e8942a12c2b7ad50fd7142503 100644 (file)
        @@ -1,5 +1,5 @@
         
         
         
        @@ -2352,24 +2352,24 @@ archive_command = 'copy "%p" /mnt/server/archivedir/"%f"'  # Windows
               
              
         
        -     enable-constraint-exclusion" xreflabel="enable_constraint_exclusion">
        -      enable_constraint_exclusion (boolean)
        +     constraint-exclusion" xreflabel="constraint_exclusion">
        +      constraint_exclusion (boolean)
               
                constraint exclusion
               
               
        -       enable_constraint_exclusion configuration parameter
        +       constraint_exclusion configuration parameter
               
               
                
        -        Enables or disables the query planner's use of table constraints.
        -        The default is off.
        +        Enables or disables the query planner's use of table constraints to
        +        limit table access.  The default is off.
                
         
                
                 When this parameter is 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;
                
         
                
        -        Currently, enable_constraint_exclusion defaults to
        -        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, constraint_exclusion defaults to
        +        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
                 PostgreSQL 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.
                
        index 124534914f8f98f6d48421387a58201188e4d53c..aa14deacd0cc831197ff1d03166e5276549949e8 100644 (file)
        @@ -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;
         
        index 6fd3d9fc5c4159ae3a1237efd56c834efb7e8b69..29e0e40930709a7081947c560782aa3cda3eda33 100644 (file)
        @@ -10,7 +10,7 @@
          * Written by Peter Eisentraut .
          *
          * 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
            },
            {
        index 48152e8ed265070022960f6462eeb9b3940622f3..6049aafe191b9ae03d598c9fb8e7fe43eb237c69 100644 (file)
         # - 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
        index a6988e45991f789ba921950187bd849e0c602f4b..4162b632fcc9022bb9aa3d1d378fe8112385e926 100644 (file)
        @@ -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);
        index 3172d16b88f582ade72a89598c123716dadd927f..42f770ff55a79d959b9c4b899e8c32eadb163ada 100644 (file)
        @@ -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);