diff --git a/src/backend/commands/portalcmds.c b/src/backend/commands/portalcmds.c index b5ce87a29d284bc7923ab47a87939ece94720214..03c7f0722ce34aa3d8b5f46ce7ad5c5aceef232f 100644 --- a/src/backend/commands/portalcmds.c +++ b/src/backend/commands/portalcmds.c @@ -274,7 +274,8 @@ PortalCleanup(Portal portal) saveResourceOwner = CurrentResourceOwner; PG_TRY(); { - CurrentResourceOwner = portal->resowner; + if (portal->resowner) + CurrentResourceOwner = portal->resowner; ExecutorFinish(queryDesc); ExecutorEnd(queryDesc); FreeQueryDesc(queryDesc); @@ -349,7 +350,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 ce5e5e29ddb3a1f7a10f3fc407e0ee318935dacd..30140b187370c153195dfec26285cf1562da34e3 100644 --- a/src/backend/tcop/pquery.c +++ b/src/backend/tcop/pquery.c @@ -478,7 +478,8 @@ PortalStart(Portal portal, ParamListInfo params, PG_TRY(); { ActivePortal = portal; - CurrentResourceOwner = portal->resowner; + if (portal->resowner) + CurrentResourceOwner = portal->resowner; PortalContext = PortalGetHeapMemory(portal); oldContext = MemoryContextSwitchTo(PortalGetHeapMemory(portal)); @@ -762,7 +763,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); @@ -1411,7 +1413,8 @@ PortalRunFetch(Portal portal, PG_TRY(); { ActivePortal = portal; - CurrentResourceOwner = portal->resowner; + if (portal->resowner) + CurrentResourceOwner = portal->resowner; PortalContext = PortalGetHeapMemory(portal); oldContext = MemoryContextSwitchTo(PortalContext);