diff options
author | Vlad Lesin <vlad_lesin@mail.ru> | 2022-09-07 21:41:29 +0300 |
---|---|---|
committer | Vlad Lesin <vlad_lesin@mail.ru> | 2022-09-08 11:48:13 +0300 |
commit | 0fa4dd0747bb12479662952e7fe6ae2fffff737b (patch) | |
tree | 8f461178d8517f5fd978af98052e0e8140573b14 | |
parent | bd7ff02a6aef2dcb0eb67b2e9a4e48370c438355 (diff) | |
download | mariadb-git-0fa4dd0747bb12479662952e7fe6ae2fffff737b.tar.gz |
MDEV-29433 innodb.lock_delete_updated is unstable
Use suspend thread syncpoint instead of include/wait_condition.inc to
make sure DELETE created waiting lock before the next UPDATE begins
locking.
-rw-r--r-- | mysql-test/suite/innodb/r/lock_delete_updated.result | 4 | ||||
-rw-r--r-- | mysql-test/suite/innodb/t/lock_delete_updated.test | 12 |
2 files changed, 8 insertions, 8 deletions
diff --git a/mysql-test/suite/innodb/r/lock_delete_updated.result b/mysql-test/suite/innodb/r/lock_delete_updated.result index c2cd47b5dd9..3ce63be36ab 100644 --- a/mysql-test/suite/innodb/r/lock_delete_updated.result +++ b/mysql-test/suite/innodb/r/lock_delete_updated.result @@ -1,11 +1,12 @@ CREATE TABLE t(a INT PRIMARY KEY) ENGINE=InnoDB; INSERT INTO t VALUES (3); BEGIN; -connection default; UPDATE t SET a = 2; connect con1,localhost,root; +SET DEBUG_SYNC="lock_wait_start SIGNAL del_locked"; DELETE FROM t; connection default; +SET DEBUG_SYNC="now WAIT_FOR del_locked"; UPDATE t SET a = 1; COMMIT; connection con1; @@ -17,4 +18,5 @@ connection default; SELECT count(*) FROM t; count(*) 1 +SET DEBUG_SYNC="reset"; DROP TABLE t; diff --git a/mysql-test/suite/innodb/t/lock_delete_updated.test b/mysql-test/suite/innodb/t/lock_delete_updated.test index 4621d5fcd2b..1f7b13144e4 100644 --- a/mysql-test/suite/innodb/t/lock_delete_updated.test +++ b/mysql-test/suite/innodb/t/lock_delete_updated.test @@ -1,23 +1,20 @@ --source include/have_innodb.inc --source include/count_sessions.inc +--source include/have_debug.inc +--source include/have_debug_sync.inc CREATE TABLE t(a INT PRIMARY KEY) ENGINE=InnoDB; INSERT INTO t VALUES (3); BEGIN; - -connection default; UPDATE t SET a = 2; connect con1,localhost,root; +SET DEBUG_SYNC="lock_wait_start SIGNAL del_locked"; send DELETE FROM t; connection default; -let $wait_condition= - select count(*) = 1 from information_schema.processlist - where state = "Updating" and info = "DELETE FROM t"; ---source include/wait_condition.inc - +SET DEBUG_SYNC="now WAIT_FOR del_locked"; UPDATE t SET a = 1; COMMIT; @@ -30,5 +27,6 @@ connection default; --echo # The above DELETE must delete all the rows in the table, so the --echo # following SELECT must show 0 rows. SELECT count(*) FROM t; +SET DEBUG_SYNC="reset"; DROP TABLE t; --source include/wait_until_count_sessions.inc |