diff --git a/src/backend/commands/portalcmds.c b/src/backend/commands/portalcmds.c
index abe445358deb3b1044a61f2cfa1d509d4e363b8d..f1aace2d2a3b8c92adf39cbbaa932bd68d0eb0b3 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 d60dc49c3c386e065f83d6c9e21e166115221714..d36458d63f98c127282529aac04f6cce18ca6694 100644
--- a/src/backend/tcop/pquery.c
+++ b/src/backend/tcop/pquery.c
@@ -481,7 +481,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));
@@ -771,7 +772,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);
@@ -1380,7 +1382,8 @@ PortalRunFetch(Portal portal,
 	PG_TRY();
 	{
 		ActivePortal = portal;
-		CurrentResourceOwner = portal->resowner;
+		if (portal->resowner)
+			CurrentResourceOwner = portal->resowner;
 		PortalContext = PortalGetHeapMemory(portal);
 
 		oldContext = MemoryContextSwitchTo(PortalContext);