diff options
author | Vadim B. Mikheev <vadim4o@yahoo.com> | 1998-02-13 03:26:53 +0000 |
---|---|---|
committer | Vadim B. Mikheev <vadim4o@yahoo.com> | 1998-02-13 03:26:53 +0000 |
commit | 1a105cefbd4769a1ef857f94a71faed6cb76717b (patch) | |
tree | 2c9b0cf10965e5e1d31106451552aad0c7c7e18d /src/backend/executor/nodeAgg.c | |
parent | 13637df458b1d5a4f773bd17d3b894d9ff27197b (diff) | |
download | postgresql-1a105cefbd4769a1ef857f94a71faed6cb76717b.tar.gz postgresql-1a105cefbd4769a1ef857f94a71faed6cb76717b.zip |
Support for subselects.
ExecReScan for nodeAgg, nodeHash, nodeHashjoin, nodeNestloop and nodeResult.
Fixed ExecReScan for nodeMaterial.
Get rid of #ifdef INDEXSCAN_PATCH.
Get rid of ExecMarkPos and ExecRestrPos in nodeNestloop.
Diffstat (limited to 'src/backend/executor/nodeAgg.c')
-rw-r--r-- | src/backend/executor/nodeAgg.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/backend/executor/nodeAgg.c b/src/backend/executor/nodeAgg.c index 444a5bc9db6..9778e365a58 100644 --- a/src/backend/executor/nodeAgg.c +++ b/src/backend/executor/nodeAgg.c @@ -676,3 +676,21 @@ aggGetAttr(TupleTableSlot *slot, return result; } + +void +ExecReScanAgg(Agg *node, ExprContext *exprCtxt, Plan *parent) +{ + AggState *aggstate = node->aggstate; + ExprContext *econtext = aggstate->csstate.cstate.cs_ExprContext; + + aggstate->agg_done = FALSE; + MemSet(econtext->ecxt_values, 0, sizeof(Datum) * length(node->aggs)); + MemSet(econtext->ecxt_nulls, 0, length(node->aggs)); + /* + * if chgParam of subnode is not null then plan + * will be re-scanned by first ExecProcNode. + */ + if (((Plan*) node)->lefttree->chgParam == NULL) + ExecReScan (((Plan*) node)->lefttree, exprCtxt, (Plan *) node); + +} |