mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 12:02:42 +01:00
9608773f75
This essentially reverts commit 4e89ec6692
and only disables InnoDB persistent statistics for tests where it is
desirable. By design, InnoDB persistent statistics will not be updated
except by ANALYZE TABLE or by STATS_AUTO_RECALC.
The internal transactions that update persistent InnoDB statistics
in background tasks (with innodb_stats_auto_recalc=ON) may cause
nondeterministic query plans or interfere with some tests that deal
with other InnoDB internals, such as the purge of transaction history.
58 lines
1.6 KiB
Text
58 lines
1.6 KiB
Text
-- source include/have_log_bin.inc
|
|
-- source include/have_innodb.inc
|
|
-- source include/not_binlog_format_row.inc
|
|
|
|
--echo #
|
|
--echo # Bug #39022: Mysql randomly crashing in lock_sec_rec_cons_read_sees
|
|
--echo #
|
|
|
|
call mtr.add_suppression("Deadlock found when trying to get lock; try restarting transaction");
|
|
|
|
CREATE TABLE t1(a TINYINT NOT NULL,b TINYINT,PRIMARY KEY(b)) ENGINE=innodb;
|
|
CREATE TABLE t2(d TINYINT NOT NULL,UNIQUE KEY(d)) ENGINE=innodb;
|
|
INSERT INTO t1 VALUES (13,0),(8,1),(9,2),(6,3),
|
|
(11,5),(11,6),(7,7),(7,8),(4,9),(6,10),(3,11),(11,12),
|
|
(12,13),(7,14);
|
|
INSERT INTO t2 VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),
|
|
(11),(12),(13),(14);
|
|
|
|
connect (thread1, localhost, root,,);
|
|
connect (thread2, localhost, root,,);
|
|
|
|
connection thread1;
|
|
START TRANSACTION;
|
|
|
|
connection thread2;
|
|
REPLACE INTO t2 VALUES (-17);
|
|
SELECT d FROM t2,t1 WHERE d=(SELECT MAX(a) FROM t1 WHERE t1.a > t2.d) LOCK IN SHARE MODE;
|
|
|
|
connection thread1;
|
|
REPLACE INTO t1(a,b) VALUES (67,20);
|
|
|
|
connection thread2;
|
|
COMMIT;
|
|
START TRANSACTION;
|
|
REPLACE INTO t1(a,b) VALUES (65,-50);
|
|
REPLACE INTO t2 VALUES (-91);
|
|
send;
|
|
SELECT d FROM t2,t1 WHERE d=(SELECT MAX(a) FROM t1 WHERE t1.a > t2.d) LOCK IN SHARE MODE; #waits
|
|
|
|
connection thread1;
|
|
|
|
--echo # should not crash
|
|
--error ER_LOCK_DEADLOCK,ER_LOCK_WAIT_TIMEOUT
|
|
SELECT d FROM t2,t1 WHERE d=(SELECT MAX(a) FROM t1 WHERE t1.a > t2.d) LOCK IN SHARE MODE; #crashes
|
|
|
|
connection thread2;
|
|
REAP;
|
|
|
|
disconnect thread2;
|
|
--source include/wait_until_disconnected.inc
|
|
|
|
connection thread1;
|
|
disconnect thread1;
|
|
--source include/wait_until_disconnected.inc
|
|
|
|
connection default;
|
|
|
|
DROP TABLE t1,t2;
|