@@ -382,6 +382,7 @@ standard_ProcessUtility(PlannedStmt *pstmt,
382382{
383383Node * parsetree = pstmt -> utilityStmt ;
384384bool isTopLevel = (context == PROCESS_UTILITY_TOPLEVEL );
385+ bool isAtomicContext = (context != PROCESS_UTILITY_TOPLEVEL || IsTransactionBlock ());
385386ParseState * pstate ;
386387
387388check_xact_readonly (parsetree );
@@ -514,8 +515,7 @@ standard_ProcessUtility(PlannedStmt *pstmt,
514515break ;
515516
516517case T_DoStmt :
517- ExecuteDoStmt ((DoStmt * )parsetree ,
518- (context != PROCESS_UTILITY_TOPLEVEL || IsTransactionBlock ()));
518+ ExecuteDoStmt ((DoStmt * )parsetree ,isAtomicContext );
519519break ;
520520
521521case T_CreateTableSpaceStmt :
@@ -644,9 +644,7 @@ standard_ProcessUtility(PlannedStmt *pstmt,
644644break ;
645645
646646case T_CallStmt :
647- ExecuteCallStmt (castNode (CallStmt ,parsetree ),params ,
648- (context != PROCESS_UTILITY_TOPLEVEL || IsTransactionBlock ()),
649- dest );
647+ ExecuteCallStmt (castNode (CallStmt ,parsetree ),params ,isAtomicContext ,dest );
650648break ;
651649
652650case T_ClusterStmt :