mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 12:02:42 +01:00
0907df3d89
trx_free_at_shutdown(): Similar to trx_t::commit_in_memory(), clear the detailed_error (FOREIGN KEY constraint error) before invoking trx_t::free(). We only do this on debug instrumented builds in order to avoid a debug assertion failure on shutdown.
46 lines
1.1 KiB
Text
46 lines
1.1 KiB
Text
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;
|
|
# restart: --innodb-force-recovery=2
|
|
disconnect con1;
|
|
disconnect con2;
|
|
connect con1,localhost,root;
|
|
SELECT * FROM t1 LOCK IN SHARE MODE;
|
|
connection default;
|
|
DROP TABLE t2;
|
|
# restart
|
|
disconnect con1;
|
|
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
|
|
SELECT * FROM t1;
|
|
a
|
|
2
|
|
XA ROLLBACK 'x';
|
|
SELECT * FROM t1;
|
|
a
|
|
1
|
|
CREATE TABLE t3(a INT PRIMARY KEY REFERENCES t1(a)) ENGINE=InnoDB;
|
|
XA START 'a';
|
|
INSERT INTO t3 SET a=1;
|
|
INSERT INTO t3 SET a=42;
|
|
ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`t3`, CONSTRAINT `t3_ibfk_1` FOREIGN KEY (`a`) REFERENCES `t1` (`a`))
|
|
XA END 'a';
|
|
XA PREPARE 'a';
|
|
SET GLOBAL innodb_fast_shutdown=0;
|
|
# restart
|
|
XA COMMIT 'a';
|
|
SELECT * FROM t3;
|
|
a
|
|
1
|
|
DROP TABLE t3,t1;
|
|
XA ROLLBACK 'y';
|