diff --git a/pkg/sql/executor.go b/pkg/sql/executor.go index 6acb9ee3322f..1415d9ffefb8 100644 --- a/pkg/sql/executor.go +++ b/pkg/sql/executor.go @@ -2015,6 +2015,8 @@ func canStayInFirstBatchState(stmt Statement) bool { return isBegin(stmt) || isSavepoint(stmt) || isSetTransaction(stmt) || + // Parallelized statements don't return results to clients, by definition. + IsStmtParallelized(stmt) || // ROLLBACK TO SAVEPOINT does its own state transitions; if it leave the // transaction in the FirstBatch state, don't mess with it. isRollbackToSavepoint(stmt) diff --git a/pkg/sql/logictest/testdata/logic_test/txn b/pkg/sql/logictest/testdata/logic_test/txn index 80158eea6fc6..a06a089f3bc3 100644 --- a/pkg/sql/logictest/testdata/logic_test/txn +++ b/pkg/sql/logictest/testdata/logic_test/txn @@ -624,6 +624,18 @@ statement ok ROLLBACK +# Parallelized statements doesn't prevent automatic retries of the first batch. +# Restore when #16827 is fixed. +# statement ok +# BEGIN TRANSACTION; INSERT INTO kv (k,v) VALUES ('x', 'b') RETURNING NOTHING; +# +# statement ok +# SELECT 1; SELECT CRDB_INTERNAL.FORCE_RETRY('100ms':::INTERVAL) +# +# statement ok +# ROLLBACK + + # General savepoints statement ok BEGIN TRANSACTION