You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
515 lines
17 KiB
515 lines
17 KiB
drop table if exists t1, t2;
|
|
create table t1 (a int) engine=innodb;
|
|
xa start 'test1';
|
|
insert t1 values (10);
|
|
xa end 'test1';
|
|
xa prepare 'test1';
|
|
xa rollback 'test1';
|
|
select * from t1;
|
|
a
|
|
xa start 'test2';
|
|
xa start 'test-bad';
|
|
ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the ACTIVE state
|
|
insert t1 values (20);
|
|
xa prepare 'test2';
|
|
ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the ACTIVE state
|
|
xa end 'test2';
|
|
xa prepare 'test2';
|
|
xa commit 'test2';
|
|
select * from t1;
|
|
a
|
|
20
|
|
xa start 'testa','testb';
|
|
insert t1 values (30);
|
|
commit;
|
|
ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the ACTIVE state
|
|
xa end 'testa','testb';
|
|
begin;
|
|
ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the IDLE state
|
|
create table t2 (a int);
|
|
ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the IDLE state
|
|
xa start 'testa','testb';
|
|
ERROR XAE08: XAER_DUPID: The XID already exists
|
|
xa start 'testa','testb', 123;
|
|
ERROR XAE08: XAER_DUPID: The XID already exists
|
|
xa start 0x7465737462, 0x2030405060, 0xb;
|
|
insert t1 values (40);
|
|
xa end 'testb',' 0@P`',11;
|
|
xa prepare 'testb',0x2030405060,11;
|
|
start transaction;
|
|
ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the PREPARED state
|
|
xa recover;
|
|
formatID gtrid_length bqual_length data
|
|
11 5 5 testb 0@P`
|
|
xa prepare 'testa','testb';
|
|
xa recover;
|
|
formatID gtrid_length bqual_length data
|
|
1 5 5 testatestb
|
|
11 5 5 testb 0@P`
|
|
xa commit 'testb',0x2030405060,11;
|
|
ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the PREPARED state
|
|
xa rollback 'testb',0x2030405060,11;
|
|
ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the PREPARED state
|
|
xa rollback 'testa','testb';
|
|
xa commit 'testb',0x2030405060,11;
|
|
ERROR XAE04: XAER_NOTA: Unknown XID
|
|
xa rollback 'testb',0x2030405060,11;
|
|
ERROR XAE04: XAER_NOTA: Unknown XID
|
|
xa start 'zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz';
|
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
|
|
select * from t1;
|
|
a
|
|
20
|
|
xa recover;
|
|
formatID gtrid_length bqual_length data
|
|
11 5 5 testb 0@P`
|
|
xa rollback 'testb',0x2030405060,11;
|
|
drop table t1;
|
|
drop table if exists t1;
|
|
create table t1(a int, b int, c varchar(20), primary key(a)) engine = innodb;
|
|
insert into t1 values(1, 1, 'a');
|
|
insert into t1 values(2, 2, 'b');
|
|
xa start 'a','b';
|
|
update t1 set c = 'aa' where a = 1;
|
|
xa start 'a','c';
|
|
update t1 set c = 'bb' where a = 2;
|
|
update t1 set c = 'bb' where a = 2;
|
|
update t1 set c = 'aa' where a = 1;
|
|
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
|
select count(*) from t1;
|
|
count(*)
|
|
2
|
|
xa end 'a','c';
|
|
ERROR XA102: XA_RBDEADLOCK: Transaction branch was rolled back: deadlock was detected
|
|
xa rollback 'a','c';
|
|
xa start 'a','c';
|
|
drop table t1;
|
|
#
|
|
# BUG#51342 - more xid crashing
|
|
#
|
|
CREATE TABLE t1(a INT) ENGINE=InnoDB;
|
|
XA START 'x';
|
|
SET SESSION autocommit=0;
|
|
INSERT INTO t1 VALUES(1);
|
|
SET SESSION autocommit=1;
|
|
ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the ACTIVE state
|
|
SELECT @@autocommit;
|
|
@@autocommit
|
|
0
|
|
INSERT INTO t1 VALUES(1);
|
|
XA END 'x';
|
|
XA COMMIT 'x' ONE PHASE;
|
|
DROP TABLE t1;
|
|
SET SESSION autocommit=1;
|
|
End of 5.0 tests
|
|
xa start 'a';
|
|
xa end 'a';
|
|
xa rollback 'a';
|
|
xa start 'a';
|
|
xa end 'a';
|
|
xa rollback 'a';
|
|
xa start 'a';
|
|
xa end 'a';
|
|
xa prepare 'a';
|
|
xa commit 'a';
|
|
xa start 'a';
|
|
xa end 'a';
|
|
xa prepare 'a';
|
|
xa commit 'a';
|
|
CREATE TABLE t1(a INT, KEY(a)) ENGINE=InnoDB;
|
|
INSERT INTO t1 VALUES(1),(2);
|
|
BEGIN;
|
|
UPDATE t1 SET a=3 WHERE a=1;
|
|
BEGIN;
|
|
UPDATE t1 SET a=4 WHERE a=2;
|
|
UPDATE t1 SET a=5 WHERE a=2;
|
|
UPDATE t1 SET a=5 WHERE a=1;
|
|
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
|
ROLLBACK;
|
|
ROLLBACK;
|
|
BEGIN;
|
|
UPDATE t1 SET a=3 WHERE a=1;
|
|
XA START 'xid1';
|
|
UPDATE t1 SET a=4 WHERE a=2;
|
|
UPDATE t1 SET a=5 WHERE a=2;
|
|
UPDATE t1 SET a=5 WHERE a=1;
|
|
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
|
XA END 'xid1';
|
|
ERROR XA102: XA_RBDEADLOCK: Transaction branch was rolled back: deadlock was detected
|
|
XA ROLLBACK 'xid1';
|
|
XA START 'xid1';
|
|
XA END 'xid1';
|
|
XA ROLLBACK 'xid1';
|
|
DROP TABLE t1;
|
|
#
|
|
# Bug#56448 Assertion failed: ! is_set() with second xa end
|
|
#
|
|
XA START 'x';
|
|
XA END 'x';
|
|
XA END 'x';
|
|
ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the IDLE state
|
|
XA PREPARE 'x';
|
|
XA PREPARE 'x';
|
|
ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the PREPARED state
|
|
XA ROLLBACK 'x';
|
|
#
|
|
# Bug#59986 Assert in Diagnostics_area::set_ok_status() for XA COMMIT
|
|
#
|
|
DROP TABLE IF EXISTS t1;
|
|
CREATE TABLE t1(a INT, b INT, PRIMARY KEY(a)) engine=InnoDB;
|
|
INSERT INTO t1 VALUES (1, 1), (2, 2);
|
|
# Connection con1
|
|
XA START 'a';
|
|
UPDATE t1 SET b= 3 WHERE a=1;
|
|
# Connection default
|
|
XA START 'b';
|
|
UPDATE t1 SET b=4 WHERE a=2;
|
|
# Sending:
|
|
UPDATE t1 SET b=5 WHERE a=1;
|
|
# Connection con1
|
|
UPDATE t1 SET b=6 WHERE a=2;
|
|
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
|
XA COMMIT 'a';
|
|
ERROR XA102: XA_RBDEADLOCK: Transaction branch was rolled back: deadlock was detected
|
|
# Connection default
|
|
# Reaping: UPDATE t1 SET b=5 WHERE a=1
|
|
XA END 'b';
|
|
XA ROLLBACK 'b';
|
|
DROP TABLE t1;
|
|
#
|
|
# Bug#11766752 59936: multiple xa assertions - transactional
|
|
# statement fuzzer
|
|
#
|
|
CREATE TABLE t1 (a INT) engine=InnoDB;
|
|
XA START 'a';
|
|
INSERT INTO t1 VALUES (1);
|
|
SAVEPOINT savep;
|
|
XA END 'a';
|
|
SELECT * FROM t1;
|
|
ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the IDLE state
|
|
INSERT INTO t1 VALUES (2);
|
|
ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the IDLE state
|
|
SAVEPOINT savep;
|
|
ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the IDLE state
|
|
SET @a=(SELECT * FROM t1);
|
|
ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the IDLE state
|
|
XA PREPARE 'a';
|
|
SELECT * FROM t1;
|
|
ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the PREPARED state
|
|
INSERT INTO t1 VALUES (2);
|
|
ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the PREPARED state
|
|
SAVEPOINT savep;
|
|
ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the PREPARED state
|
|
SET @a=(SELECT * FROM t1);
|
|
ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the PREPARED state
|
|
UPDATE t1 SET a=1 WHERE a=2;
|
|
ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the PREPARED state
|
|
XA COMMIT 'a';
|
|
SELECT * FROM t1;
|
|
a
|
|
1
|
|
DROP TABLE t1;
|
|
#
|
|
# Bug#12352846 - TRANS_XA_START(THD*):
|
|
# ASSERTION THD->TRANSACTION.XID_STATE.XID.IS_NULL()
|
|
# FAILED
|
|
#
|
|
DROP TABLE IF EXISTS t1;
|
|
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
|
INSERT INTO t1 VALUES (1);
|
|
START TRANSACTION;
|
|
SELECT a FROM t1 WHERE a=1 FOR SHARE;
|
|
a
|
|
1
|
|
# Connection con2
|
|
XA START 'xid1';
|
|
# Sending:
|
|
SELECT a FROM t1 WHERE a=1 FOR UPDATE;
|
|
# Connection default
|
|
# Waiting for until a transaction with 'SELECT...FOR UPDATE'
|
|
# will be locked inside innodb subsystem.
|
|
SELECT a FROM t1 WHERE a=1 FOR UPDATE;
|
|
a
|
|
1
|
|
# Connection con2
|
|
# Reaping: SELECT a FROM t1 WHERE a=1 FOR UPDATE
|
|
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
|
XA COMMIT 'xid1';
|
|
ERROR XA102: XA_RBDEADLOCK: Transaction branch was rolled back: deadlock was detected
|
|
# Connection default
|
|
COMMIT;
|
|
# Connection con2
|
|
XA START 'xid1';
|
|
XA END 'xid1';
|
|
XA PREPARE 'xid1';
|
|
XA ROLLBACK 'xid1';
|
|
# Connection default
|
|
DROP TABLE t1;
|
|
#
|
|
# Bug#14670465 PLEASE PRINT HUMAN READABLE, ESCAPED
|
|
# XID DATA IN XA RECOVER OUTPUT
|
|
#
|
|
#
|
|
# xa Recover command was not diplaying non printable ASCII
|
|
# characters in the XID previosuly. Now there is another column
|
|
# in the result set which is a Hex Encoded String of the XID.
|
|
#
|
|
# Check that XIDs which are not normally printable are displayed
|
|
# in readable format when CONVERT XID clause is used.
|
|
xa start 0xABCDEF1234567890, 0x01, 0x02 ;
|
|
xa end 0xABCDEF1234567890, 0x01, 0x02 ;
|
|
xa prepare 0xABCDEF1234567890, 0x01, 0x02 ;
|
|
xa recover convert xid;
|
|
formatID gtrid_length bqual_length data
|
|
2 8 1 0xABCDEF123456789001
|
|
xa rollback 0xABCDEF1234567890, 0x01, 0x02 ;
|
|
# Check that XID which has only printable characters are displayed
|
|
# correctly without using of CONVERT XID clause
|
|
xa start 0x4142434445, 0x46, 0x02 ;
|
|
xa end 0x4142434445, 0x46, 0x02 ;
|
|
xa prepare 0x4142434445, 0x46, 0x02 ;
|
|
xa recover;
|
|
formatID gtrid_length bqual_length data
|
|
2 5 1 ABCDEF
|
|
xa rollback 0x4142434445, 0x46, 0x02 ;
|
|
#
|
|
# WL#7155: Test 1: check that if a thread of control terminates then
|
|
# the Resource Manager dissociate and rollback any associated
|
|
# transaction branch (see ref. 3.6 on page 18 of XA spec)
|
|
#
|
|
CREATE TABLE t1 (a INT) ENGINE=INNODB;
|
|
XA START 'xid1';
|
|
INSERT INTO t1 VALUES (1);
|
|
XA END 'xid1';
|
|
SELECT * FROM t1;
|
|
a
|
|
DROP TABLE t1;
|
|
#
|
|
# WL#7155: Test 2: Check that if the Resource Manager is doing work outside
|
|
# any global transaction on behalf of the application,
|
|
# xa_start() returns XAER_OUTSIDE (see xa_start description on page 52 of XA spec)
|
|
#
|
|
SET SESSION autocommit=0;
|
|
START TRANSACTION;
|
|
XA START 'xid1';
|
|
ERROR XAE09: XAER_OUTSIDE: Some work is done outside global transaction
|
|
COMMIT;
|
|
#
|
|
# WL#7155: Test 3: Check that the Resource Manager returns error
|
|
# if the Transaction Manager tries to resume non-existent transaction.
|
|
#
|
|
XA START 'xid1' RESUME;
|
|
ERROR XAE05: XAER_INVAL: Invalid arguments (or unsupported command)
|
|
#
|
|
# WL#7155: Test 4: Check that the Resource Manager returns ok
|
|
# if the Transaction Manager tries to resume transaction
|
|
# that has been ended before.
|
|
#
|
|
XA START 'xid1';
|
|
XA END 'xid1';
|
|
XA START 'xid1' RESUME;
|
|
XA END 'xid1';
|
|
#
|
|
# WL#7155: Test 5: Check that the Resource Manager returns error
|
|
# if the Transaction Manager ends some XA transaction and
|
|
# starts another one with RESUME clause right after that.
|
|
#
|
|
XA START 'xid1';
|
|
XA END 'xid1';
|
|
XA START 'xid2' RESUME;
|
|
ERROR XAE04: XAER_NOTA: Unknown XID
|
|
#
|
|
# WL#7155: Test 6: Check that the SUSPEND clause isn't supported for XA END.
|
|
#
|
|
XA START 'xid1';
|
|
XA END 'xid1' SUSPEND;
|
|
ERROR XAE05: XAER_INVAL: Invalid arguments (or unsupported command)
|
|
XA END 'xid1';
|
|
#
|
|
# WL#7155: Test 7: Check that attempt to end non-existent XA transaction
|
|
# while another XA transaction is active leads to an error
|
|
#
|
|
XA START 'xid1';
|
|
XA END 'xid2';
|
|
ERROR XAE04: XAER_NOTA: Unknown XID
|
|
XA END 'xid1';
|
|
#
|
|
# WL#7155: Test 8: Check that XA ROLLBACK can't be called for active XA transaction
|
|
#
|
|
XA START 'xid1';
|
|
XA ROLLBACK 'xid1';
|
|
ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the ACTIVE state
|
|
XA END 'xid1';
|
|
#
|
|
# WL#7155: Test 9: Check that XA PREPARE returns error for unknown xid
|
|
#
|
|
XA START 'xid1';
|
|
XA END 'xid1';
|
|
XA PREPARE 'xid2';
|
|
ERROR XAE04: XAER_NOTA: Unknown XID
|
|
#
|
|
# WL#7155: Test 10: Check that rollback of XA transaction with unknown xid
|
|
# leads to an error when there is other prepared XA transaction.
|
|
#
|
|
XA START 'xid1';
|
|
XA END 'xid1';
|
|
XA PREPARE 'xid1';
|
|
XA ROLLBACK 'xid2';
|
|
ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the PREPARED state
|
|
XA ROLLBACK 'xid1';
|
|
#
|
|
# Bug#18107853 - XA LIST GETS CORRUPT, CRASH AND/OR HANG AND/OR ASSERTION
|
|
#
|
|
# Check that the server reports an error in case of too long input value of
|
|
# format ID overflows the type of unsigned long
|
|
XA START '1', 0x01, 18446744073709551615;
|
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '18446744073709551615' at line 1
|
|
#
|
|
# Bug#25364178 - XA PREPARE INCONSISTENT WITH XTRABACKUP
|
|
#
|
|
# Check XA state when lock_wait_timeout happens
|
|
# More tests added to flush_read_lock.test
|
|
set session lock_wait_timeout=1;
|
|
create table asd (a int);
|
|
xa start 'test1';
|
|
insert into asd values(1);
|
|
xa end 'test1';
|
|
flush table with read lock;
|
|
# PREPARE error will do auto rollback.
|
|
xa prepare 'test1';
|
|
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
|
|
show errors;
|
|
Level Code Message
|
|
Error 1205 Lock wait timeout exceeded; try restarting transaction
|
|
Error 1402 XA_RBROLLBACK: Transaction branch was rolled back
|
|
unlock tables;
|
|
xa start 'test1';
|
|
insert into asd values(1);
|
|
xa end 'test1';
|
|
xa prepare 'test1';
|
|
flush tables with read lock;
|
|
# LOCK error during ROLLBACK will not alter transaction state.
|
|
xa rollback 'test1';
|
|
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
|
|
show errors;
|
|
Level Code Message
|
|
Error 1205 Lock wait timeout exceeded; try restarting transaction
|
|
Error 1401 XAER_RMERR: Fatal error occurred in the transaction branch - check your data for consistency
|
|
xa recover;
|
|
formatID gtrid_length bqual_length data
|
|
1 5 0 test1
|
|
# LOCK error during COMMIT will not alter transaction state.
|
|
xa commit 'test1';
|
|
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
|
|
show errors;
|
|
Level Code Message
|
|
Error 1205 Lock wait timeout exceeded; try restarting transaction
|
|
Error 3197 The resource manager is not able to commit the transaction branch at this time. Please retry later.
|
|
xa recover;
|
|
formatID gtrid_length bqual_length data
|
|
1 5 0 test1
|
|
unlock tables;
|
|
xa rollback 'test1';
|
|
xa recover;
|
|
formatID gtrid_length bqual_length data
|
|
drop table asd;
|
|
There should be practically no error, but in theory
|
|
XAER_NOTA: Unknown XID can be returned if con1 disconnection
|
|
took for too long.
|
|
todo: consider to make this test dependent on P_S if
|
|
todo: such case will be ever registered.
|
|
XA RECOVER;
|
|
formatID gtrid_length bqual_length data
|
|
#
|
|
# WL#7194 -- Define and implement authorization model to manage XA-transactions
|
|
#
|
|
CREATE USER u1;
|
|
GRANT XA_RECOVER_ADMIN ON *.* TO u1;
|
|
CREATE USER u2;
|
|
XA START 'xid1';
|
|
XA END 'xid1';
|
|
XA PREPARE 'xid1';
|
|
# Connect as user u1
|
|
# Since the privilege XA_RECOVER_ADMIN was granted to the user u1
|
|
# it is allowed to execute the statement XA RECOVER to get a list of
|
|
# xids for prepared XA transactions.
|
|
XA RECOVER;
|
|
formatID gtrid_length bqual_length data
|
|
1 4 0 xid1
|
|
# Connect as user u2
|
|
# The privilege XA_RECOVER_ADMIN wasn't granted to the user u2.
|
|
# It leads to issuing the error ER_XAER_RMERR on attempt to run
|
|
# the statement XA RECOVER.
|
|
XA RECOVER;
|
|
ERROR XAE03: XAER_RMERR: Fatal error occurred in the transaction branch - check your data for consistency
|
|
SHOW WARNINGS;
|
|
Level Code Message
|
|
Error 1401 XAER_RMERR: Fatal error occurred in the transaction branch - check your data for consistency
|
|
Error 1227 Access denied; you need (at least one of) the XA_RECOVER_ADMIN privilege(s) for this operation
|
|
# The default connection was established on behalf the user root@localhost
|
|
# who has the XA_RECOVER_ADMIN privilege assigned by default.
|
|
# So for the user root@localhost the statement XA RECOVER
|
|
# can be executed successfully.
|
|
XA RECOVER;
|
|
formatID gtrid_length bqual_length data
|
|
1 4 0 xid1
|
|
XA COMMIT 'xid1';
|
|
# Connect as the user u2 who wasn't granted privilege XA_RECOVER_ADMIN.
|
|
# Initiates a new XA transaction on behalf the user u2 and shows that
|
|
# call XA RECOVER made by the user u2 is failed with error ER_XAER_RMERR.
|
|
XA START 'xid2';
|
|
XA END 'xid2';
|
|
XA PREPARE 'xid2';
|
|
XA RECOVER;
|
|
ERROR XAE03: XAER_RMERR: Fatal error occurred in the transaction branch - check your data for consistency
|
|
SHOW WARNINGS;
|
|
Level Code Message
|
|
Error 1401 XAER_RMERR: Fatal error occurred in the transaction branch - check your data for consistency
|
|
Error 1227 Access denied; you need (at least one of) the XA_RECOVER_ADMIN privilege(s) for this operation
|
|
# Although the user u2 can't get a list of prepared XA transaction this user
|
|
# can finalize a prepared XA transaction knowing its XID value.
|
|
XA COMMIT 'xid2';
|
|
DROP USER u1, u2;
|
|
# Check that a user who has the privilege SUPER and hasn't the privilege
|
|
# XA_RECOVER_ADMIN isn't allowed to run the statement XA RECOVER
|
|
CREATE USER u1;
|
|
GRANT SUPER ON *.* TO u1;
|
|
Warnings:
|
|
Warning 1287 The SUPER privilege identifier is deprecated
|
|
SHOW GRANTS FOR u1;
|
|
Grants for u1@%
|
|
GRANT SUPER ON *.* TO `u1`@`%`
|
|
XA START 'xid1';
|
|
XA END 'xid1';
|
|
XA PREPARE 'xid1';
|
|
XA RECOVER;
|
|
ERROR XAE03: XAER_RMERR: Fatal error occurred in the transaction branch - check your data for consistency
|
|
XA COMMIT 'xid1';
|
|
DROP USER u1;
|
|
# End of tests fro WL#7194
|
|
#
|
|
# Bug #26848877 -- XA COMMIT/ROLLBACK REJECTED BY NON-AUTOCOMMIT SESSION
|
|
# WITH NO ACTIVE TRANSACTION
|
|
#
|
|
# Check that XA COMMIT finalizes XA transaction branch in case
|
|
# XA transaction was prepared successfully and after session reconnect
|
|
# a user turned off autocommit before running XA COMMIT
|
|
XA START 'xid1';
|
|
XA END 'xid1';
|
|
XA PREPARE 'xid1';
|
|
SET autocommit = 0;
|
|
XA RECOVER;
|
|
formatID gtrid_length bqual_length data
|
|
1 4 0 xid1
|
|
XA COMMIT 'xid1';
|
|
# Check that XA ROLLBACK finalizes XA transaction branch in case
|
|
# XA transaction was prepared successfully and after reconnect
|
|
# a user turned off autocommit before running XA ROLLBACK
|
|
XA START 'xid1';
|
|
XA END 'xid1';
|
|
XA PREPARE 'xid1';
|
|
SET autocommit = 0;
|
|
XA RECOVER;
|
|
formatID gtrid_length bqual_length data
|
|
1 4 0 xid1
|
|
XA ROLLBACK 'xid1';
|
|
|