From 5dd7451df7f40b7abd03b9431a610eec813c3316 Mon Sep 17 00:00:00 2001 From: Andrei Matei Date: Fri, 30 Jun 2017 16:14:54 -0400 Subject: [PATCH] sql: make RETURNING NOTHING statements not cause FirstBatch->Open transition The parallelized statements don't return results to the client, by definition. This commit adds them to the list of statements that don't transition the session from the FirstBatch to Open, so that the next batch of statements can be auto-retried. --- pkg/sql/executor.go | 2 ++ pkg/sql/logictest/testdata/logic_test/txn | 12 ++++++++++++ 2 files changed, 14 insertions(+) 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