]> granicus.if.org Git - postgresql/commitdiff
Remove unneeded indxqual field in IndexScanState, and the useless work
authorTom Lane <tgl@sss.pgh.pa.us>
Sat, 28 Feb 2004 19:46:06 +0000 (19:46 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sat, 28 Feb 2004 19:46:06 +0000 (19:46 +0000)
spent initializing it during indexscan startup.

src/backend/executor/nodeIndexscan.c
src/include/nodes/execnodes.h

index b6d6e5ac21e5d8328c8f8fc4aa5ec617e85226ec..347096a20ebc4b3722574b8e3f076ddf38604dc5 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/backend/executor/nodeIndexscan.c,v 1.91 2004/02/03 17:34:02 tgl Exp $
+ *       $PostgreSQL: pgsql/src/backend/executor/nodeIndexscan.c,v 1.92 2004/02/28 19:46:05 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -669,6 +669,12 @@ ExecInitIndexScan(IndexScan *node, EState *estate)
 
        /*
         * initialize child expressions
+        *
+        * Note: we don't initialize all of the indxqual expression, only the
+        * sub-parts corresponding to runtime keys (see below).  The indxqualorig
+        * expression is always initialized even though it will only be used in
+        * some uncommon cases --- would be nice to improve that.  (Problem is
+        * that any SubPlans present in the expression must be found now...)
         */
        indexstate->ss.ps.targetlist = (List *)
                ExecInitExpr((Expr *) node->scan.plan.targetlist,
@@ -676,9 +682,6 @@ ExecInitIndexScan(IndexScan *node, EState *estate)
        indexstate->ss.ps.qual = (List *)
                ExecInitExpr((Expr *) node->scan.plan.qual,
                                         (PlanState *) indexstate);
-       indexstate->indxqual = (List *)
-               ExecInitExpr((Expr *) node->indxqual,
-                                        (PlanState *) indexstate);
        indexstate->indxqualorig = (List *)
                ExecInitExpr((Expr *) node->indxqualorig,
                                         (PlanState *) indexstate);
index 50db072f41a10e060b456cdae246d3927b25f174..c919dccea9ab1c4b1adb452389b968947f66f3e5 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/include/nodes/execnodes.h,v 1.111 2004/01/22 02:23:21 tgl Exp $
+ * $PostgreSQL: pgsql/src/include/nodes/execnodes.h,v 1.112 2004/02/28 19:46:06 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -765,8 +765,10 @@ typedef ScanState SeqScanState;
 /* ----------------
  *      IndexScanState information
  *
+ *             indxqualorig       execution state for indxqualorig expressions
  *             NumIndices                 number of indices in this scan
  *             IndexPtr                   current index in use
+ *             MarkIndexPtr       IndexPtr for marked scan point
  *             ScanKeys                   Skey structures to scan index rels
  *             NumScanKeys                array of no of keys in each Skey struct
  *             RuntimeKeyInfo     array of array of exprstates for Skeys
@@ -783,7 +785,6 @@ typedef ScanState SeqScanState;
 typedef struct IndexScanState
 {
        ScanState       ss;                             /* its first field is NodeTag */
-       List       *indxqual;
        List       *indxqualorig;
        int                     iss_NumIndices;
        int                     iss_IndexPtr;