summaryrefslogtreecommitdiff
path: root/mysql-test
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test')
-rw-r--r--mysql-test/main/xa.result28
-rw-r--r--mysql-test/main/xa.test29
2 files changed, 55 insertions, 2 deletions
diff --git a/mysql-test/main/xa.result b/mysql-test/main/xa.result
index 030415a5320..d0beaa86569 100644
--- a/mysql-test/main/xa.result
+++ b/mysql-test/main/xa.result
@@ -51,7 +51,7 @@ formatID gtrid_length bqual_length data
11 5 5 testb 0@P`
1 5 5 testatestb
xa commit 'testb',0x2030405060,11;
-ERROR XAE04: XAER_NOTA: Unknown XID
+ERROR XAE09: XAER_OUTSIDE: Some work is done outside global transaction
xa rollback 'testa','testb';
xa start 'zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz';
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1
@@ -369,3 +369,29 @@ XA PREPARE 'Я_упaлa_c_сеновала_тормозила_головой';
XA ROLLBACK 'Я_упaлa_c_сеновала_тормозила_головой';
SET NAMES default;
DROP TABLE t1;
+#
+# MDEV-21659 XA rollback foreign_xid is allowed inside active XA
+# MDEV-21854 - xa commit one phase for already prepared transaction
+# must always error out
+#
+BEGIN;
+XA COMMIT 'unknown';
+ERROR XAE09: XAER_OUTSIDE: Some work is done outside global transaction
+XA COMMIT 'unknown' ONE PHASE;
+ERROR XAE09: XAER_OUTSIDE: Some work is done outside global transaction
+BEGIN;
+XA ROLLBACK 'unknown';
+ERROR XAE09: XAER_OUTSIDE: Some work is done outside global transaction
+ROLLBACK;
+XA START 'xid1';
+XA COMMIT 'unknown';
+ERROR XAE09: XAER_OUTSIDE: Some work is done outside global transaction
+XA COMMIT 'unknown' ONE PHASE;
+ERROR XAE09: XAER_OUTSIDE: Some work is done outside global transaction
+XA ROLLBACK 'unknown';
+ERROR XAE09: XAER_OUTSIDE: Some work is done outside global transaction
+XA END 'xid1';
+XA PREPARE 'xid1';
+XA COMMIT 'xid1' ONE PHASE;
+ERROR XAE05: XAER_INVAL: Invalid arguments (or unsupported command)
+XA ROLLBACK 'xid1';
diff --git a/mysql-test/main/xa.test b/mysql-test/main/xa.test
index 41c1f5a8859..aa17a9c1138 100644
--- a/mysql-test/main/xa.test
+++ b/mysql-test/main/xa.test
@@ -72,7 +72,7 @@ xa prepare 'testa','testb';
xa recover;
---error ER_XAER_NOTA
+--error ER_XAER_OUTSIDE
xa commit 'testb',0x2030405060,11;
xa rollback 'testa','testb';
@@ -505,5 +505,32 @@ XA ROLLBACK 'Я_упaлa_c_сеновала_тормозила_головой';
SET NAMES default;
DROP TABLE t1;
+--echo #
+--echo # MDEV-21659 XA rollback foreign_xid is allowed inside active XA
+--echo # MDEV-21854 - xa commit one phase for already prepared transaction
+--echo # must always error out
+--echo #
+BEGIN;
+--error ER_XAER_OUTSIDE
+XA COMMIT 'unknown';
+--error ER_XAER_OUTSIDE
+XA COMMIT 'unknown' ONE PHASE;
+BEGIN;
+--error ER_XAER_OUTSIDE
+XA ROLLBACK 'unknown';
+ROLLBACK;
+
+XA START 'xid1';
+--error ER_XAER_OUTSIDE
+XA COMMIT 'unknown';
+--error ER_XAER_OUTSIDE
+XA COMMIT 'unknown' ONE PHASE;
+--error ER_XAER_OUTSIDE
+XA ROLLBACK 'unknown';
+XA END 'xid1';
+XA PREPARE 'xid1';
+--error ER_XAER_INVAL
+XA COMMIT 'xid1' ONE PHASE;
+XA ROLLBACK 'xid1';
--source include/wait_until_count_sessions.inc