From 5bab36e9f6c3f3a9e14a89e1124179a339d2c3a1 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sun, 15 Dec 2002 16:17:59 +0000 Subject: 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. --- src/backend/executor/nodeHashjoin.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) (limited to 'src/backend/executor/nodeHashjoin.c') diff --git a/src/backend/executor/nodeHashjoin.c b/src/backend/executor/nodeHashjoin.c index 07de8703812..8f899b577d7 100644 --- a/src/backend/executor/nodeHashjoin.c +++ b/src/backend/executor/nodeHashjoin.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/executor/nodeHashjoin.c,v 1.44 2002/12/13 19:45:52 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/executor/nodeHashjoin.c,v 1.45 2002/12/15 16:17:46 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -456,17 +456,10 @@ ExecEndHashJoin(HashJoinState *node) } /* - * Free the projection info and the scan attribute info + * Free the exprcontext */ - ExecFreeProjectionInfo(&node->js.ps); ExecFreeExprContext(&node->js.ps); - /* - * clean up subtrees - */ - ExecEndNode(outerPlanState(node)); - ExecEndNode(innerPlanState(node)); - /* * clean out the tuple table */ @@ -474,6 +467,11 @@ ExecEndHashJoin(HashJoinState *node) ExecClearTuple(node->hj_OuterTupleSlot); ExecClearTuple(node->hj_HashTupleSlot); + /* + * clean up subtrees + */ + ExecEndNode(outerPlanState(node)); + ExecEndNode(innerPlanState(node)); } /* ---------------------------------------------------------------- -- cgit v1.2.3