diff options
author | Alexander Barkov <bar@mariadb.org> | 2018-01-15 13:50:28 +0400 |
---|---|---|
committer | Alexander Barkov <bar@mariadb.org> | 2018-01-15 13:50:28 +0400 |
commit | 88a9b23396531f0f0f63c1f989af69772216d442 (patch) | |
tree | 1ba43a3216ab692907124fa3f8c740362a4ff6b5 /mysql-test | |
parent | 5fe1d7d07611855963ea62ca39461289d8f8d25e (diff) | |
download | mariadb-git-88a9b23396531f0f0f63c1f989af69772216d442.tar.gz |
MDEV-14609 XA Transction unable to ROLLBACK TO SAVEPOINT
The function trans_rollback_to_savepoint(), unlike trans_savepoint(),
did not allow xa_state=XA_ACTIVE, so an attempt to do ROLLBCK TO SAVEPOINT
inside an XA transaction incorrectly returned an error
"...command cannot be executed ... in the ACTIVE state...".
Partially merging a MySQL patch:
7fb5c47390311d9b1b5367f97cb8fedd4102dd05
This is WL#7193 (Decouple THD and st_transactions)...
The currently merged part includes these changes:
- Introducing st_xid_state::check_has_uncommitted_xa()
- Reusing it in both trans_rollback_to_savepoint() and trans_savepoint(),
so now both allow XA_ACTIVE.
Diffstat (limited to 'mysql-test')
-rw-r--r-- | mysql-test/r/xa.result | 11 | ||||
-rw-r--r-- | mysql-test/t/xa.test | 14 |
2 files changed, 25 insertions, 0 deletions
diff --git a/mysql-test/r/xa.result b/mysql-test/r/xa.result index 6c242d950ab..0bf9b07bb2f 100644 --- a/mysql-test/r/xa.result +++ b/mysql-test/r/xa.result @@ -200,6 +200,17 @@ a 1 DROP TABLE t1; # +# MDEV-14609 XA Transction unable to ROLLBACK TO SAVEPOINT +# +CREATE TABLE t1 (c1 INT) ENGINE=INNODB; +XA START 'xa1'; +SAVEPOINT savepoint1; +INSERT INTO t1 (c1) VALUES (1),(2),(3),(4); +ROLLBACK TO SAVEPOINT savepoint1; +XA END 'xa1'; +XA ROLLBACK 'xa1'; +DROP TABLE t1; +# # Bug#12352846 - TRANS_XA_START(THD*): # ASSERTION THD->TRANSACTION.XID_STATE.XID.IS_NULL() # FAILED diff --git a/mysql-test/t/xa.test b/mysql-test/t/xa.test index 1709886eb0c..0995b8c26b2 100644 --- a/mysql-test/t/xa.test +++ b/mysql-test/t/xa.test @@ -328,6 +328,20 @@ DROP TABLE t1; --echo # +--echo # MDEV-14609 XA Transction unable to ROLLBACK TO SAVEPOINT +--echo # + +CREATE TABLE t1 (c1 INT) ENGINE=INNODB; +XA START 'xa1'; +SAVEPOINT savepoint1; +INSERT INTO t1 (c1) VALUES (1),(2),(3),(4); +ROLLBACK TO SAVEPOINT savepoint1; +XA END 'xa1'; +XA ROLLBACK 'xa1'; +DROP TABLE t1; + + +--echo # --echo # Bug#12352846 - TRANS_XA_START(THD*): --echo # ASSERTION THD->TRANSACTION.XID_STATE.XID.IS_NULL() --echo # FAILED |