用于EagleEye3.0 规则集漏报和误报测试的示例项目,项目收集于github和gitee
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.
 
 
 
 
 
 

137 lines
3.8 KiB

#
# WL#7155: Test 1: check that prepared transaction branch
# is recovered after abnormal server termination.
#
CREATE TABLE t1 (a INT) ENGINE=INNODB;
XA START 'xid1';
INSERT INTO t1 VALUES (1);
XA END 'xid1';
XA PREPARE 'xid1';
XA RECOVER;
ERROR HY000: Lost connection to MySQL server during query
# restart
XA RECOVER;
formatID gtrid_length bqual_length data
1 4 0 xid1
SELECT * FROM t1;
a
XA COMMIT 'xid1';
SELECT * FROM t1;
a
1
DROP TABLE t1;
#
# WL#7155: Test 2: check that in case of abnormal server termination
# the changes done by unprepared transaction branch will be rolled back
# after the server restart.
#
CREATE TABLE t1 (a INT) ENGINE=INNODB;
XA START 'xid1';
INSERT INTO t1 VALUES (1);
XA END 'xid1';
XA RECOVER;
ERROR HY000: Lost connection to MySQL server during query
# restart
XA RECOVER;
formatID gtrid_length bqual_length data
SELECT * FROM t1;
a
DROP TABLE t1;
#
# WL#7155: Test 3: Check that escaped "'" symbol for xid value
# is handled correctly during recovering XA transaction.
#
CREATE TABLE t1 (a INT) ENGINE=INNODB;
XA START 'xid1', 'br\'_1';
INSERT INTO t1 VALUES (1);
XA END 'xid1', 'br\'_1';
XA PREPARE 'xid1', 'br\'_1';
XA RECOVER;
ERROR HY000: Lost connection to MySQL server during query
# restart
XA RECOVER;
formatID gtrid_length bqual_length data
1 4 5 xid1br'_1
XA ROLLBACK 'xid1', 'br\'_1';
DROP TABLE t1;
#
# Bug#18068253 - XA START WITH THE EXIST XID, AND THEN XA COMMIT WITH THE XID WILL FAILED
#
CREATE TABLE t1 (a INT) ENGINE=INNODB;
XA START 'xid1';
INSERT INTO t1 VALUES (1);
XA END 'xid1';
XA PREPARE 'xid1';
set session debug="+d,crash_after_xa_recover";
XA RECOVER;
ERROR HY000: Lost connection to MySQL server during query
# restart
set session debug="-d,crash_after_xa_recover";
XA RECOVER;
formatID gtrid_length bqual_length data
1 4 0 xid1
XA START 'xid1';
ERROR XAE08: XAER_DUPID: The XID already exists
XA COMMIT 'xid1';
DROP TABLE t1;
#
# Bug#20538956 - XA PREPARE ERROR BRANCH LEAVES THE TRANSACTION IN SCREWED STATE
#
CREATE TABLE t1 (a INT);
XA START 'xid1';
INSERT INTO t1 VALUES (1);
XA END 'xid1';
SET @@session.debug = '+d,simulate_xa_failure_prepare';
XA PREPARE 'xid1';
ERROR XA100: XA_RBROLLBACK: Transaction branch was rolled back
SET @@session.debug = '-d,simulate_xa_failure_prepare';
XA ROLLBACK 'xid1';
ERROR XAE04: XAER_NOTA: Unknown XID
XA START 'trx_another_one';
#
# Bug#20488921 - ERROR PROPAGATION DOES NOT FULLY WORK IN XA
#
XA START 'xid1';
INSERT INTO t1 VALUES (1);
XA END 'xid1';
XA PREPARE 'xid1';
SET @@session.debug= '+d,simulate_xa_commit_log_failure';
XA COMMIT 'xid1';
ERROR XAE03: XAER_RMERR: Fatal error occurred in the transaction branch - check your data for consistency
SET @@session.debug= '-d,simulate_xa_commit_log_failure';
INSERT INTO t1 VALUES (2);
DROP TABLE t1;
#
# Bug#23264552 - XA: ASSERT `m_status == da_error' IN mysql_errno:sql_error.h:385
#
CREATE TABLE t1 (a INT);
XA START 'xid1';
INSERT INTO t1 VALUES (1);
XA END 'xid1';
SET @@session.debug = '+d,simulate_xa_failure_prepare_in_engine';
XA PREPARE 'xid1';
ERROR XA100: XA_RBROLLBACK: Transaction branch was rolled back
SET @@session.debug = '-d,simulate_xa_failure_prepare_in_engine';
XA ROLLBACK 'xid1';
ERROR XAE04: XAER_NOTA: Unknown XID
XA START 'trx_another_one';
DROP TABLE t1;
#
# BUG#29293279 -- XA COMMIT MAY LEAD REPLICATION BROKEN
#
Establish session con1
CREATE TABLE t1(a INT);
XA START 'xid1';
INSERT INTO t1 VALUES (1);
XA END 'xid1';
XA PREPARE 'xid1';
Disconnect con1 to save the XA transaction with xid1 into the cache
connect con2,localhost,root,,;
set debug_sync='external_xa_commit_after_acquire_commit_lock SIGNAL parked WAIT_FOR go';
XA COMMIT 'xid1';
connection default;
set debug_sync='now WAIT_FOR parked';
set debug_sync='external_xa_commit_before_acquire_xa_lock SIGNAL go';
XA COMMIT 'xid1';
ERROR XAE04: XAER_NOTA: Unknown XID
DROP TABLE t1;