aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/commands/portalcmds.c10
-rw-r--r--src/backend/commands/prepare.c2
-rw-r--r--src/backend/executor/spi.c6
-rw-r--r--src/backend/tcop/postgres.c2
-rw-r--r--src/backend/tcop/pquery.c16
-rw-r--r--src/backend/utils/mmgr/portalmem.c32
-rw-r--r--src/include/utils/portal.h3
7 files changed, 35 insertions, 36 deletions
diff --git a/src/backend/commands/portalcmds.c b/src/backend/commands/portalcmds.c
index ff38e94cb1f..e9771546893 100644
--- a/src/backend/commands/portalcmds.c
+++ b/src/backend/commands/portalcmds.c
@@ -96,7 +96,7 @@ PerformCursorOpen(DeclareCursorStmt *cstmt, ParamListInfo params,
*/
portal = CreatePortal(cstmt->portalname, false, false);
- oldContext = MemoryContextSwitchTo(PortalGetHeapMemory(portal));
+ oldContext = MemoryContextSwitchTo(portal->portalContext);
plan = copyObject(plan);
@@ -363,7 +363,7 @@ PersistHoldablePortal(Portal portal)
ActivePortal = portal;
if (portal->resowner)
CurrentResourceOwner = portal->resowner;
- PortalContext = PortalGetHeapMemory(portal);
+ PortalContext = portal->portalContext;
MemoryContextSwitchTo(PortalContext);
@@ -450,10 +450,10 @@ PersistHoldablePortal(Portal portal)
PopActiveSnapshot();
/*
- * We can now release any subsidiary memory of the portal's heap context;
+ * We can now release any subsidiary memory of the portal's context;
* we'll never use it again. The executor already dropped its context,
- * but this will clean up anything that glommed onto the portal's heap via
+ * but this will clean up anything that glommed onto the portal's context via
* PortalContext.
*/
- MemoryContextDeleteChildren(PortalGetHeapMemory(portal));
+ MemoryContextDeleteChildren(portal->portalContext);
}
diff --git a/src/backend/commands/prepare.c b/src/backend/commands/prepare.c
index 21cb855aeb2..b945b1556a8 100644
--- a/src/backend/commands/prepare.c
+++ b/src/backend/commands/prepare.c
@@ -239,7 +239,7 @@ ExecuteQuery(ExecuteStmt *stmt, IntoClause *intoClause,
portal->visible = false;
/* Copy the plan's saved query string into the portal's memory */
- query_string = MemoryContextStrdup(PortalGetHeapMemory(portal),
+ query_string = MemoryContextStrdup(portal->portalContext,
entry->plansource->query_string);
/* Replan if needed, and increment plan refcount for portal */
diff --git a/src/backend/executor/spi.c b/src/backend/executor/spi.c
index 4d9b51b947b..995f67d2662 100644
--- a/src/backend/executor/spi.c
+++ b/src/backend/executor/spi.c
@@ -1183,7 +1183,7 @@ SPI_cursor_open_internal(const char *name, SPIPlanPtr plan,
}
/* Copy the plan's query string into the portal */
- query_string = MemoryContextStrdup(PortalGetHeapMemory(portal),
+ query_string = MemoryContextStrdup(portal->portalContext,
plansource->query_string);
/*
@@ -1213,7 +1213,7 @@ SPI_cursor_open_internal(const char *name, SPIPlanPtr plan,
* will result in leaking our refcount on the plan, but it doesn't
* matter because the plan is unsaved and hence transient anyway.
*/
- oldcontext = MemoryContextSwitchTo(PortalGetHeapMemory(portal));
+ oldcontext = MemoryContextSwitchTo(portal->portalContext);
stmt_list = copyObject(stmt_list);
MemoryContextSwitchTo(oldcontext);
ReleaseCachedPlan(cplan, false);
@@ -1311,7 +1311,7 @@ SPI_cursor_open_internal(const char *name, SPIPlanPtr plan,
*/
if (paramLI)
{
- oldcontext = MemoryContextSwitchTo(PortalGetHeapMemory(portal));
+ oldcontext = MemoryContextSwitchTo(portal->portalContext);
paramLI = copyParamList(paramLI);
MemoryContextSwitchTo(oldcontext);
}
diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c
index 4654a01eabe..ddc3ec860ae 100644
--- a/src/backend/tcop/postgres.c
+++ b/src/backend/tcop/postgres.c
@@ -1608,7 +1608,7 @@ exec_bind_message(StringInfo input_message)
* don't want a failure to occur between GetCachedPlan and
* PortalDefineQuery; that would result in leaking our plancache refcount.
*/
- oldContext = MemoryContextSwitchTo(PortalGetHeapMemory(portal));
+ oldContext = MemoryContextSwitchTo(portal->portalContext);
/* Copy the plan's query string into the portal */
query_string = pstrdup(psrc->query_string);
diff --git a/src/backend/tcop/pquery.c b/src/backend/tcop/pquery.c
index 9925712768f..0420231864f 100644
--- a/src/backend/tcop/pquery.c
+++ b/src/backend/tcop/pquery.c
@@ -466,9 +466,9 @@ PortalStart(Portal portal, ParamListInfo params,
ActivePortal = portal;
if (portal->resowner)
CurrentResourceOwner = portal->resowner;
- PortalContext = PortalGetHeapMemory(portal);
+ PortalContext = portal->portalContext;
- oldContext = MemoryContextSwitchTo(PortalGetHeapMemory(portal));
+ oldContext = MemoryContextSwitchTo(PortalContext);
/* Must remember portal param list, if any */
portal->portalParams = params;
@@ -634,7 +634,7 @@ PortalSetResultFormat(Portal portal, int nFormats, int16 *formats)
return;
natts = portal->tupDesc->natts;
portal->formats = (int16 *)
- MemoryContextAlloc(PortalGetHeapMemory(portal),
+ MemoryContextAlloc(portal->portalContext,
natts * sizeof(int16));
if (nFormats > 1)
{
@@ -748,7 +748,7 @@ PortalRun(Portal portal, long count, bool isTopLevel, bool run_once,
ActivePortal = portal;
if (portal->resowner)
CurrentResourceOwner = portal->resowner;
- PortalContext = PortalGetHeapMemory(portal);
+ PortalContext = portal->portalContext;
MemoryContextSwitchTo(PortalContext);
@@ -1184,7 +1184,7 @@ PortalRunUtility(Portal portal, PlannedStmt *pstmt,
completionTag);
/* Some utility statements may change context on us */
- MemoryContextSwitchTo(PortalGetHeapMemory(portal));
+ MemoryContextSwitchTo(portal->portalContext);
/*
* Some utility commands may pop the ActiveSnapshot stack from under us,
@@ -1343,9 +1343,9 @@ PortalRunMulti(Portal portal,
/*
* Clear subsidiary contexts to recover temporary memory.
*/
- Assert(PortalGetHeapMemory(portal) == CurrentMemoryContext);
+ Assert(portal->portalContext == CurrentMemoryContext);
- MemoryContextDeleteChildren(PortalGetHeapMemory(portal));
+ MemoryContextDeleteChildren(portal->portalContext);
}
/* Pop the snapshot if we pushed one. */
@@ -1424,7 +1424,7 @@ PortalRunFetch(Portal portal,
ActivePortal = portal;
if (portal->resowner)
CurrentResourceOwner = portal->resowner;
- PortalContext = PortalGetHeapMemory(portal);
+ PortalContext = portal->portalContext;
oldContext = MemoryContextSwitchTo(PortalContext);
diff --git a/src/backend/utils/mmgr/portalmem.c b/src/backend/utils/mmgr/portalmem.c
index c93c37d74a8..9edc1ccc832 100644
--- a/src/backend/utils/mmgr/portalmem.c
+++ b/src/backend/utils/mmgr/portalmem.c
@@ -87,7 +87,7 @@ do { \
elog(WARNING, "trying to delete portal name that does not exist"); \
} while(0)
-static MemoryContext PortalMemory = NULL;
+static MemoryContext TopPortalContext = NULL;
/* ----------------------------------------------------------------
@@ -104,10 +104,10 @@ EnablePortalManager(void)
{
HASHCTL ctl;
- Assert(PortalMemory == NULL);
+ Assert(TopPortalContext == NULL);
- PortalMemory = AllocSetContextCreate(TopMemoryContext,
- "PortalMemory",
+ TopPortalContext = AllocSetContextCreate(TopMemoryContext,
+ "TopPortalContext",
ALLOCSET_DEFAULT_SIZES);
ctl.keysize = MAX_PORTALNAME_LEN;
@@ -193,12 +193,12 @@ CreatePortal(const char *name, bool allowDup, bool dupSilent)
}
/* make new portal structure */
- portal = (Portal) MemoryContextAllocZero(PortalMemory, sizeof *portal);
+ portal = (Portal) MemoryContextAllocZero(TopPortalContext, sizeof *portal);
- /* initialize portal heap context; typically it won't store much */
- portal->heap = AllocSetContextCreate(PortalMemory,
- "PortalHeapMemory",
- ALLOCSET_SMALL_SIZES);
+ /* initialize portal context; typically it won't store much */
+ portal->portalContext = AllocSetContextCreate(TopPortalContext,
+ "PortalContext",
+ ALLOCSET_SMALL_SIZES);
/* create a resource owner for the portal */
portal->resowner = ResourceOwnerCreate(CurTransactionResourceOwner,
@@ -263,7 +263,7 @@ CreateNewPortal(void)
*
* If cplan is NULL, then it is the caller's responsibility to ensure that
* the passed plan trees have adequate lifetime. Typically this is done by
- * copying them into the portal's heap context.
+ * copying them into the portal's context.
*
* The caller is also responsible for ensuring that the passed prepStmtName
* (if not NULL) and sourceText have adequate lifetime.
@@ -331,10 +331,10 @@ PortalCreateHoldStore(Portal portal)
/*
* Create the memory context that is used for storage of the tuple set.
- * Note this is NOT a child of the portal's heap memory.
+ * Note this is NOT a child of the portal's portalContext.
*/
portal->holdContext =
- AllocSetContextCreate(PortalMemory,
+ AllocSetContextCreate(TopPortalContext,
"PortalHoldContext",
ALLOCSET_DEFAULT_SIZES);
@@ -576,9 +576,9 @@ PortalDrop(Portal portal, bool isTopCommit)
MemoryContextDelete(portal->holdContext);
/* release subsidiary storage */
- MemoryContextDelete(PortalGetHeapMemory(portal));
+ MemoryContextDelete(portal->portalContext);
- /* release portal struct (it's in PortalMemory) */
+ /* release portal struct (it's in TopPortalContext) */
pfree(portal);
}
@@ -806,7 +806,7 @@ AtAbort_Portals(void)
* The cleanup hook was the last thing that might have needed data
* there.
*/
- MemoryContextDeleteChildren(PortalGetHeapMemory(portal));
+ MemoryContextDeleteChildren(portal->portalContext);
}
}
@@ -1000,7 +1000,7 @@ AtSubAbort_Portals(SubTransactionId mySubid,
* The cleanup hook was the last thing that might have needed data
* there.
*/
- MemoryContextDeleteChildren(PortalGetHeapMemory(portal));
+ MemoryContextDeleteChildren(portal->portalContext);
}
}
diff --git a/src/include/utils/portal.h b/src/include/utils/portal.h
index 3e7820b51c6..8cedc0ea602 100644
--- a/src/include/utils/portal.h
+++ b/src/include/utils/portal.h
@@ -116,7 +116,7 @@ typedef struct PortalData
/* Bookkeeping data */
const char *name; /* portal's name */
const char *prepStmtName; /* source prepared statement (NULL if none) */
- MemoryContext heap; /* subsidiary memory for portal */
+ MemoryContext portalContext;/* subsidiary memory for portal */
ResourceOwner resowner; /* resources owned by portal */
void (*cleanup) (Portal portal); /* cleanup hook */
@@ -202,7 +202,6 @@ typedef struct PortalData
* Access macros for Portal ... use these in preference to field access.
*/
#define PortalGetQueryDesc(portal) ((portal)->queryDesc)
-#define PortalGetHeapMemory(portal) ((portal)->heap)
/* Prototypes for functions in utils/mmgr/portalmem.c */