]> granicus.if.org Git - postgresql/commitdiff
Update portal-related memory context names and API
authorPeter Eisentraut <peter_e@gmx.net>
Sat, 16 Dec 2017 22:26:26 +0000 (17:26 -0500)
committerPeter Eisentraut <peter_e@gmx.net>
Tue, 9 Jan 2018 18:47:56 +0000 (13:47 -0500)
Rename PortalMemory to TopPortalContext, to avoid confusion with
PortalContext and align naming with similar top-level memory contexts.

Rename PortalData's "heap" field to portalContext.  The "heap" naming
seems quite antiquated and confusing.  Also get rid of the
PortalGetHeapMemory() macro and access the field directly, which we do
for other portal fields, so this abstraction doesn't buy anything.

Reviewed-by: Andrew Dunstan <andrew.dunstan@2ndquadrant.com>
Reviewed-by: Alvaro Herrera <alvherre@alvh.no-ip.org>
src/backend/commands/portalcmds.c
src/backend/commands/prepare.c
src/backend/executor/spi.c
src/backend/tcop/postgres.c
src/backend/tcop/pquery.c
src/backend/utils/mmgr/portalmem.c
src/include/utils/portal.h

index ff38e94cb1f863ba4359107e80bfa9216ee35785..e977154689346e8aa6c34476ef961b1d822a63b6 100644 (file)
@@ -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);
 }
index 21cb855aeb21ed5cf669417fb73261140498b077..b945b1556a83e9273de8a1e7b52f0e3ef4114c7c 100644 (file)
@@ -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 */
index 4d9b51b947b13b57b5f16b73ed91acf50f4fbbc8..995f67d266259350e6019948788963a74a23f71b 100644 (file)
@@ -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);
        }
index 4654a01eabec622b54a0c93a203eb407b3e40542..ddc3ec860aed2870706d978d87c89b9d8d2f6641 100644 (file)
@@ -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);
index 9925712768f2471240a2444bade8404dc0c1d763..0420231864f76c5e84ef7946696e8f0d7f391bd4 100644 (file)
@@ -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);
 
index c93c37d74a81f2410005bdbbb5fb0d95de0709b0..9edc1ccc83209e7130f1683d5da2fd37d990d6d6 100644 (file)
@@ -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);
        }
 }
 
index 3e7820b51c67d58abbeb4ef80a013348d9a4a347..8cedc0ea6021891c92375f273b81be9f7789860f 100644 (file)
@@ -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 */