mirror of
https://github.com/MariaDB/server.git
synced 2025-02-05 13:22:17 +01:00
73 lines
2 KiB
Text
73 lines
2 KiB
Text
--source include/have_innodb.inc
|
|
# Embedded server does not support restarting.
|
|
--source include/not_embedded.inc
|
|
--source include/no_valgrind_without_big.inc
|
|
|
|
# MDEV-8841 - close tables opened by previous tests,
|
|
# so they don't get marked crashed when the server gets crashed
|
|
--disable_query_log
|
|
call mtr.add_suppression("Found [12] prepared XA transactions");
|
|
FLUSH TABLES;
|
|
--enable_query_log
|
|
|
|
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB;
|
|
INSERT INTO t1 VALUES (1);
|
|
connect (con1,localhost,root);
|
|
XA START 'x'; UPDATE t1 set a=2; XA END 'x'; XA PREPARE 'x';
|
|
connect (con2,localhost,root);
|
|
CREATE TABLE t2 (a INT PRIMARY KEY) ENGINE=InnoDB;
|
|
XA START 'y'; INSERT INTO t2 VALUES (1); XA END 'y'; XA PREPARE 'y';
|
|
connection default;
|
|
|
|
# innodb_force_recovery=2 prevents the purge and tests that the fix of
|
|
# MDEV-13606 XA PREPARE transactions should survive innodb_force_recovery=1 or 2
|
|
# is present.
|
|
--let $restart_parameters= --innodb-force-recovery=2
|
|
--let $shutdown_timeout=0
|
|
--source include/restart_mysqld.inc
|
|
--let $restart_parameters=
|
|
--let $shutdown_timeout=
|
|
|
|
disconnect con1;
|
|
disconnect con2;
|
|
connect (con1,localhost,root);
|
|
--send SELECT * FROM t1 LOCK IN SHARE MODE
|
|
|
|
connection default;
|
|
let $wait_condition=
|
|
select count(*) = 1 from information_schema.processlist
|
|
where state = 'Sending data' and
|
|
info = 'SELECT * FROM t1 LOCK IN SHARE MODE';
|
|
--source include/wait_condition.inc
|
|
|
|
SET innodb_lock_wait_timeout=1;
|
|
--error ER_LOCK_WAIT_TIMEOUT
|
|
DROP TABLE t2;
|
|
|
|
disconnect con1;
|
|
|
|
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
|
|
--disable_ps2_protocol
|
|
SELECT * FROM t1;
|
|
--enable_ps2_protocol
|
|
XA ROLLBACK 'x';
|
|
SELECT * FROM t1;
|
|
|
|
--error ER_LOCK_WAIT_TIMEOUT
|
|
DROP TABLE t2;
|
|
XA ROLLBACK 'y';
|
|
DROP TABLE t2;
|
|
CREATE TABLE t3(a INT PRIMARY KEY REFERENCES t1(a)) ENGINE=InnoDB;
|
|
XA START 'a';
|
|
INSERT INTO t3 SET a=1;
|
|
--error ER_NO_REFERENCED_ROW_2
|
|
INSERT INTO t3 SET a=42;
|
|
XA END 'a';
|
|
XA PREPARE 'a';
|
|
|
|
SET GLOBAL innodb_fast_shutdown=0;
|
|
--source include/restart_mysqld.inc
|
|
|
|
XA COMMIT 'a';
|
|
SELECT * FROM t3;
|
|
DROP TABLE t3,t1;
|