diff options
Diffstat (limited to 'src/backend/executor/execUtils.c')
-rw-r--r-- | src/backend/executor/execUtils.c | 34 |
1 files changed, 26 insertions, 8 deletions
diff --git a/src/backend/executor/execUtils.c b/src/backend/executor/execUtils.c index e02205828ae..69ef6671075 100644 --- a/src/backend/executor/execUtils.c +++ b/src/backend/executor/execUtils.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/executor/execUtils.c,v 1.28 1998/02/10 04:00:52 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/executor/execUtils.c,v 1.29 1998/02/13 03:26:43 vadim Exp $ * *------------------------------------------------------------------------- */ @@ -180,11 +180,6 @@ void ExecAssignExprContext(EState *estate, CommonState *commonstate) { ExprContext *econtext; - ParamListInfo paraminfo; - List *rangeTable; - - paraminfo = estate->es_param_list_info; - rangeTable = estate->es_range_table; econtext = makeNode(ExprContext); econtext->ecxt_scantuple = NULL; /* scan tuple slot */ @@ -192,8 +187,9 @@ ExecAssignExprContext(EState *estate, CommonState *commonstate) econtext->ecxt_outertuple = NULL; /* outer tuple slot */ econtext->ecxt_relation = NULL; /* relation */ econtext->ecxt_relid = 0; /* relid */ - econtext->ecxt_param_list_info = paraminfo; /* param list info */ - econtext->ecxt_range_table = rangeTable; /* range table */ + econtext->ecxt_param_list_info = estate->es_param_list_info; + econtext->ecxt_param_exec_vals = estate->es_param_exec_vals; + econtext->ecxt_range_table = estate->es_range_table; /* range table */ commonstate->cs_ExprContext = econtext; } @@ -1179,3 +1175,25 @@ ExecInsertIndexTuples(TupleTableSlot *slot, if (econtext != NULL) pfree(econtext); } + +void +SetChangedParamList (Plan *node, List *newchg) +{ + List *nl; + + foreach (nl, newchg) + { + int paramId = lfirsti(nl); + + /* if this node doesn't depend on a param ... */ + if ( !intMember (paramId, node->extParam) && + !intMember (paramId, node->locParam) ) + continue; + /* if this param is already in list of changed ones ... */ + if ( intMember (paramId, node->chgParam) ) + continue; + /* else - add this param to the list */ + node->chgParam = lappendi (node->chgParam, paramId); + } + +} |