diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c index 8481fcca367..e144583bd1f 100644 --- a/src/backend/tcop/utility.c +++ b/src/backend/tcop/utility.c @@ -382,6 +382,7 @@ standard_ProcessUtility(PlannedStmt *pstmt, { Node *parsetree = pstmt->utilityStmt; bool isTopLevel = (context == PROCESS_UTILITY_TOPLEVEL); + bool isAtomicContext = (context != PROCESS_UTILITY_TOPLEVEL || IsTransactionBlock()); ParseState *pstate; check_xact_readonly(parsetree); @@ -514,8 +515,7 @@ standard_ProcessUtility(PlannedStmt *pstmt, break; case T_DoStmt: - ExecuteDoStmt((DoStmt *) parsetree, - (context != PROCESS_UTILITY_TOPLEVEL || IsTransactionBlock())); + ExecuteDoStmt((DoStmt *) parsetree, isAtomicContext); break; case T_CreateTableSpaceStmt: @@ -644,9 +644,7 @@ standard_ProcessUtility(PlannedStmt *pstmt, break; case T_CallStmt: - ExecuteCallStmt(castNode(CallStmt, parsetree), params, - (context != PROCESS_UTILITY_TOPLEVEL || IsTransactionBlock()), - dest); + ExecuteCallStmt(castNode(CallStmt, parsetree), params, isAtomicContext, dest); break; case T_ClusterStmt: