Shield the cursor from calling a stored procedure or function containing commit/rollback

This commit is contained in:
Racardo.Cui
2021-03-16 16:15:23 +08:00
parent 14b50baeea
commit 4d78c16cd8

View File

@ -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,