From 9be7ea088ce155301264f3fe9b0a95673a7b2566 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sat, 28 Feb 2004 19:46:06 +0000 Subject: [PATCH] Remove unneeded indxqual field in IndexScanState, and the useless work spent initializing it during indexscan startup. --- src/backend/executor/nodeIndexscan.c | 11 +++++++---- src/include/nodes/execnodes.h | 5 +++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/backend/executor/nodeIndexscan.c b/src/backend/executor/nodeIndexscan.c index b6d6e5ac21..347096a20e 100644 --- a/src/backend/executor/nodeIndexscan.c +++ b/src/backend/executor/nodeIndexscan.c @@ -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); diff --git a/src/include/nodes/execnodes.h b/src/include/nodes/execnodes.h index 50db072f41..c919dccea9 100644 --- a/src/include/nodes/execnodes.h +++ b/src/include/nodes/execnodes.h @@ -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;