diff --git a/src/backend/commands/portalcmds.c b/src/backend/commands/portalcmds.c index f1ae01908a9..d6c1a580b7c 100644 --- a/src/backend/commands/portalcmds.c +++ b/src/backend/commands/portalcmds.c @@ -263,7 +263,8 @@ PortalCleanup(Portal portal) saveResourceOwner = CurrentResourceOwner; PG_TRY(); { - CurrentResourceOwner = portal->resowner; + if (portal->resowner) + CurrentResourceOwner = portal->resowner; /* we do not need AfterTriggerEndQuery() here */ ExecutorEnd(queryDesc); FreeQueryDesc(queryDesc); @@ -338,7 +339,8 @@ PersistHoldablePortal(Portal portal) PG_TRY(); { ActivePortal = portal; - CurrentResourceOwner = portal->resowner; + if (portal->resowner) + CurrentResourceOwner = portal->resowner; PortalContext = PortalGetHeapMemory(portal); MemoryContextSwitchTo(PortalContext); diff --git a/src/backend/tcop/pquery.c b/src/backend/tcop/pquery.c index 98716830cd6..9933f7de071 100644 --- a/src/backend/tcop/pquery.c +++ b/src/backend/tcop/pquery.c @@ -479,7 +479,8 @@ PortalStart(Portal portal, ParamListInfo params, Snapshot snapshot) PG_TRY(); { ActivePortal = portal; - CurrentResourceOwner = portal->resowner; + if (portal->resowner) + CurrentResourceOwner = portal->resowner; PortalContext = PortalGetHeapMemory(portal); oldContext = MemoryContextSwitchTo(PortalGetHeapMemory(portal)); @@ -768,7 +769,8 @@ PortalRun(Portal portal, long count, bool isTopLevel, PG_TRY(); { ActivePortal = portal; - CurrentResourceOwner = portal->resowner; + if (portal->resowner) + CurrentResourceOwner = portal->resowner; PortalContext = PortalGetHeapMemory(portal); MemoryContextSwitchTo(PortalContext); @@ -1375,7 +1377,8 @@ PortalRunFetch(Portal portal, PG_TRY(); { ActivePortal = portal; - CurrentResourceOwner = portal->resowner; + if (portal->resowner) + CurrentResourceOwner = portal->resowner; PortalContext = PortalGetHeapMemory(portal); oldContext = MemoryContextSwitchTo(PortalContext);