diff --git a/src/gausskernel/optimizer/commands/portalcmds.cpp b/src/gausskernel/optimizer/commands/portalcmds.cpp index 00edd6174..308ee27c4 100644 --- a/src/gausskernel/optimizer/commands/portalcmds.cpp +++ b/src/gausskernel/optimizer/commands/portalcmds.cpp @@ -187,9 +187,14 @@ void PerformPortalFetch(FetchStmt* stmt, DestReceiver* dest, char* completionTag if (stmt->ismove) dest = None_Receiver; + bool savedIsAllowCommitRollback; + bool needResetErrMsg = stp_disable_xact_and_set_err_msg(&savedIsAllowCommitRollback, STP_XACT_OPEN_FOR); + /* Do it */ nprocessed = PortalRunFetch(portal, stmt->direction, stmt->howMany, dest); + stp_reset_xact_state_and_err_msg(savedIsAllowCommitRollback, needResetErrMsg); + /* Return command status if wanted */ if (completionTag != NULL) { int rc = snprintf_s(completionTag,