aboutsummaryrefslogtreecommitdiff
path: root/src/backend/executor/execMain.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/executor/execMain.c')
-rw-r--r--src/backend/executor/execMain.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/backend/executor/execMain.c b/src/backend/executor/execMain.c
index e0885ec4ccc..cb7a5eb8ee9 100644
--- a/src/backend/executor/execMain.c
+++ b/src/backend/executor/execMain.c
@@ -26,7 +26,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.2 1996/07/30 07:45:27 scrappy Exp $
+ * $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.3 1996/09/10 06:48:01 scrappy Exp $
*
*-------------------------------------------------------------------------
*/
@@ -145,6 +145,20 @@ ExecutorRun(QueryDesc *queryDesc, EState *estate, int feature, int count)
dest = queryDesc->dest;
destination = (void (*)()) DestToFunction(dest);
+#ifdef INDEXSCAN_PATCH
+ /*
+ * If the plan is an index scan and some of the scan key are
+ * function arguments rescan the indices after the parameter
+ * values have been stored in the execution state. DZ - 27-8-1996
+ */
+ if ((nodeTag(plan) == T_IndexScan) &&
+ (((IndexScan *)plan)->indxstate->iss_RuntimeKeyInfo != NULL)) {
+ ExprContext *econtext;
+ econtext = ((IndexScan *)plan)->scan.scanstate->cstate.cs_ExprContext;
+ ExecIndexReScan((IndexScan *)plan, econtext, plan);
+ }
+#endif
+
switch(feature) {
case EXEC_RUN: