1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-01 03:47:19 +03:00

MDEV-24738: Extend the test innodb.deadlock_detect

This commit is contained in:
Marko Mäkelä
2021-02-15 17:21:42 +02:00
parent 272a1289ad
commit 3ddb4fddf1
3 changed files with 36 additions and 21 deletions

View File

@ -1,5 +1,3 @@
SET GLOBAL innodb_deadlock_detect=OFF;
SET GLOBAL innodb_lock_wait_timeout=2;
connection default; connection default;
CREATE TABLE t1( CREATE TABLE t1(
id INT, id INT,
@ -7,18 +5,20 @@ PRIMARY KEY(id)
) ENGINE=InnoDB; ) ENGINE=InnoDB;
INSERT INTO t1 VALUES(1), (2), (3); INSERT INTO t1 VALUES(1), (2), (3);
BEGIN; BEGIN;
SELECT * FROM t1 WHERE id = 1 FOR UPDATE; SELECT * FROM t1 WHERE id = 1 LOCK IN SHARE MODE;
connect con1,localhost,root,,; connect con1,localhost,root,,;
BEGIN; BEGIN;
SELECT * FROM t1 WHERE id = 2 FOR UPDATE; SELECT * FROM t1 WHERE id = 2 LOCK IN SHARE MODE;
connect con2,localhost,root,,;
BEGIN;
SELECT * FROM t1 WHERE id = 2 LOCK IN SHARE MODE;
SELECT * FROM t1 WHERE id = 1 FOR UPDATE; SELECT * FROM t1 WHERE id = 1 FOR UPDATE;
connection default; connection default;
SELECT * FROM t1 WHERE id = 2 FOR UPDATE; SELECT * FROM t1 WHERE id = 2 FOR UPDATE;
connection con1; connection con2;
ROLLBACK; ROLLBACK;
disconnect con2;
disconnect con1;
connection default; connection default;
ROLLBACK; ROLLBACK;
DROP TABLE t1; DROP TABLE t1;
disconnect con1;
SET GLOBAL innodb_lock_wait_timeout=default;
SET GLOBAL innodb_deadlock_detect=default;

View File

@ -0,0 +1,7 @@
[OFF]
--innodb-deadlock-detect=OFF
--innodb-lock-wait-timeout=1
[ON]
--innodb-deadlock-detect=ON
--innodb-lock-wait-timeout=1

View File

@ -3,11 +3,9 @@
# #
--source include/have_innodb.inc --source include/have_innodb.inc
--source include/not_embedded.inc
--source include/count_sessions.inc --source include/count_sessions.inc
SET GLOBAL innodb_deadlock_detect=OFF; let $have_deadlock=`select @@GLOBAL.innodb_deadlock_detect`;
SET GLOBAL innodb_lock_wait_timeout=2;
connection default; connection default;
@ -22,24 +20,33 @@ INSERT INTO t1 VALUES(1), (2), (3);
--disable_result_log --disable_result_log
BEGIN; BEGIN;
SELECT * FROM t1 WHERE id = 1 FOR UPDATE; SELECT * FROM t1 WHERE id = 1 LOCK IN SHARE MODE;
connect (con1,localhost,root,,); connect (con1,localhost,root,,);
BEGIN; BEGIN;
SELECT * FROM t1 WHERE id = 2 LOCK IN SHARE MODE;
SELECT * FROM t1 WHERE id = 2 FOR UPDATE; connect (con2,localhost,root,,);
BEGIN;
SELECT * FROM t1 WHERE id = 2 LOCK IN SHARE MODE;
send SELECT * FROM t1 WHERE id = 1 FOR UPDATE; send SELECT * FROM t1 WHERE id = 1 FOR UPDATE;
connection default; connection default;
send SELECT * FROM t1 WHERE id = 2 FOR UPDATE; send SELECT * FROM t1 WHERE id = 2 FOR UPDATE;
connection con1; connection con2;
if (!$have_deadlock) {
--error ER_LOCK_WAIT_TIMEOUT --error ER_LOCK_WAIT_TIMEOUT
reap; reap;
}
if ($have_deadlock) {
--error 0,ER_LOCK_DEADLOCK
reap;
}
ROLLBACK; ROLLBACK;
disconnect con2;
disconnect con1;
# #
# Note here that con1 is the older transaction as it # Note here that con1 is the older transaction as it
@ -50,8 +57,14 @@ ROLLBACK;
# and does the update. # and does the update.
# #
connection default; connection default;
if (!$have_deadlock) {
--error 0,ER_LOCK_WAIT_TIMEOUT --error 0,ER_LOCK_WAIT_TIMEOUT
reap; reap;
}
if ($have_deadlock) {
--error 0,ER_LOCK_DEADLOCK
reap;
}
ROLLBACK; ROLLBACK;
@ -59,9 +72,4 @@ ROLLBACK;
DROP TABLE t1; DROP TABLE t1;
disconnect con1;
--source include/wait_until_count_sessions.inc --source include/wait_until_count_sessions.inc
SET GLOBAL innodb_lock_wait_timeout=default;
SET GLOBAL innodb_deadlock_detect=default;