diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2002-12-15 16:17:59 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2002-12-15 16:17:59 +0000 |
commit | 5bab36e9f6c3f3a9e14a89e1124179a339d2c3a1 (patch) | |
tree | a05154b129808efc7882599d96a1132051c2403b /src/backend/executor/nodeMergejoin.c | |
parent | 90b3a0b6fd3bc74804c01156491635e5d95091d9 (diff) | |
download | postgresql-5bab36e9f6c3f3a9e14a89e1124179a339d2c3a1.tar.gz postgresql-5bab36e9f6c3f3a9e14a89e1124179a339d2c3a1.zip |
Revise executor APIs so that all per-query state structure is built in
a per-query memory context created by CreateExecutorState --- and destroyed
by FreeExecutorState. This provides a final solution to the longstanding
problem of memory leaked by various ExecEndNode calls.
Diffstat (limited to 'src/backend/executor/nodeMergejoin.c')
-rw-r--r-- | src/backend/executor/nodeMergejoin.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/src/backend/executor/nodeMergejoin.c b/src/backend/executor/nodeMergejoin.c index 1bb5878d819..af6cd8d6f3f 100644 --- a/src/backend/executor/nodeMergejoin.c +++ b/src/backend/executor/nodeMergejoin.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/executor/nodeMergejoin.c,v 1.54 2002/12/13 19:45:54 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/executor/nodeMergejoin.c,v 1.55 2002/12/15 16:17:46 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -1551,23 +1551,22 @@ ExecEndMergeJoin(MergeJoinState *node) "ending node processing"); /* - * Free the projection info and the scan attribute info + * Free the exprcontext */ - ExecFreeProjectionInfo(&node->js.ps); ExecFreeExprContext(&node->js.ps); /* - * shut down the subplans - */ - ExecEndNode(innerPlanState(node)); - ExecEndNode(outerPlanState(node)); - - /* * clean out the tuple table */ ExecClearTuple(node->js.ps.ps_ResultTupleSlot); ExecClearTuple(node->mj_MarkedTupleSlot); + /* + * shut down the subplans + */ + ExecEndNode(innerPlanState(node)); + ExecEndNode(outerPlanState(node)); + MJ1_printf("ExecEndMergeJoin: %s\n", "node processing ended"); } |