From 9318cd8b1f9777a48570ddbb6b385c12385233b8 Mon Sep 17 00:00:00 2001 From: luozihao <1165977584@qq.com> Date: Tue, 13 Dec 2022 19:25:45 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=94=99=E8=AF=AF=E8=AF=AD?= =?UTF-8?q?=E5=8F=A5=E5=A4=84=E7=90=86=E4=B8=8D=E4=B8=80=E8=87=B4=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/gausskernel/storage/access/transam/xact.cpp | 8 ++++++-- src/test/regress/expected/autocommit_test.out | 10 ++++++++++ src/test/regress/sql/autocommit_test.sql | 7 +++++++ 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/gausskernel/storage/access/transam/xact.cpp b/src/gausskernel/storage/access/transam/xact.cpp index b5ab6235c..9ca49c075 100755 --- a/src/gausskernel/storage/access/transam/xact.cpp +++ b/src/gausskernel/storage/access/transam/xact.cpp @@ -4564,8 +4564,12 @@ void AbortCurrentTransaction(bool STP_rollback) case TBLOCK_STARTED: AbortTransaction(PerfectRollback, STP_rollback); ApplyUndoActions(); - CleanupTransaction(); - s->blockState = TBLOCK_DEFAULT; + if (u_sess->attr.attr_storage.phony_autocommit || STP_rollback) { + CleanupTransaction(); + s->blockState = TBLOCK_DEFAULT; + } else { + s->blockState = TBLOCK_ABORT; + } break; /* diff --git a/src/test/regress/expected/autocommit_test.out b/src/test/regress/expected/autocommit_test.out index 5fdc53300..a6811f3d6 100644 --- a/src/test/regress/expected/autocommit_test.out +++ b/src/test/regress/expected/autocommit_test.out @@ -255,6 +255,16 @@ SHOW autocommit; on (1 row) +-- error in transaction block +SET autocommit = 0; +CREATE; +ERROR: syntax error at or near ";" +LINE 1: CREATE; + ^ +SET autocommit = 1; +ERROR: current transaction is aborted, commands ignored until end of transaction block, firstChar[Q] +ROLLBACK; +SET autocommit = 1; \c regression DROP DATABASE test_db; DROP DATABASE test_drop; diff --git a/src/test/regress/sql/autocommit_test.sql b/src/test/regress/sql/autocommit_test.sql index 98d9cad05..b0e268e0a 100644 --- a/src/test/regress/sql/autocommit_test.sql +++ b/src/test/regress/sql/autocommit_test.sql @@ -124,6 +124,13 @@ ROLLBACK; SELECT * FROM test_table; SHOW autocommit; +-- error in transaction block +SET autocommit = 0; +CREATE; +SET autocommit = 1; +ROLLBACK; +SET autocommit = 1; + \c regression DROP DATABASE test_db; DROP DATABASE test_drop;