mirror of
https://github.com/postgres/postgres.git
synced 2025-11-12 05:01:15 +03:00
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.
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/tcop/pquery.c,v 1.57 2002/12/05 15:50:35 tgl Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/tcop/pquery.c,v 1.58 2002/12/15 16:17:52 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -52,6 +52,18 @@ CreateQueryDesc(Query *parsetree,
|
||||
return qd;
|
||||
}
|
||||
|
||||
/*
|
||||
* FreeQueryDesc
|
||||
*/
|
||||
void
|
||||
FreeQueryDesc(QueryDesc *qdesc)
|
||||
{
|
||||
/* Can't be a live query */
|
||||
Assert(qdesc->estate == NULL);
|
||||
/* Only the QueryDesc itself need be freed */
|
||||
pfree(qdesc);
|
||||
}
|
||||
|
||||
/* ----------------
|
||||
* PreparePortal
|
||||
* ----------------
|
||||
@@ -152,9 +164,8 @@ ProcessQuery(Query *parsetree,
|
||||
* QueryDesc */
|
||||
|
||||
/*
|
||||
* We stay in portal's memory context for now, so that query desc,
|
||||
* exec state, and plan startup info are also allocated in the portal
|
||||
* context.
|
||||
* We stay in portal's memory context for now, so that query desc
|
||||
* is also allocated in the portal context.
|
||||
*/
|
||||
}
|
||||
|
||||
@@ -231,4 +242,6 @@ ProcessQuery(Query *parsetree,
|
||||
* Now, we close down all the scans and free allocated resources.
|
||||
*/
|
||||
ExecutorEnd(queryDesc);
|
||||
|
||||
FreeQueryDesc(queryDesc);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user