diff --git a/mysql-test/r/lock.result b/mysql-test/r/lock.result index 348412ea441..5dbfa66b43e 100644 --- a/mysql-test/r/lock.result +++ b/mysql-test/r/lock.result @@ -369,5 +369,25 @@ INSERT INTO t1(f1) VALUES(0); ERROR HY000: Can't update table 't1' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. DROP TABLE t1; # +# Bug#43685 Lock table affects other non-related tables +# +DROP TABLE IF EXISTS t1, t2; +CREATE TABLE t1 (id INT); +CREATE TABLE t2 (id INT); +# Connection default +LOCK TABLE t1 WRITE; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status Table is already up to date +# Connection con2 +LOCK TABLE t2 WRITE; +# This used to hang until the first connection +# unlocked t1. +FLUSH TABLE t2; +UNLOCK TABLES; +# Connection default +UNLOCK TABLES; +DROP TABLE t1, t2; +# # End of 6.0 tests. # diff --git a/mysql-test/t/lock.test b/mysql-test/t/lock.test index 49e98abdc76..bc9d1ea8245 100644 --- a/mysql-test/t/lock.test +++ b/mysql-test/t/lock.test @@ -2,6 +2,9 @@ # Testing of table locking # +# Save the initial number of concurrent sessions. +--source include/count_sessions.inc + --disable_warnings drop table if exists t1,t2,t3; --enable_warnings @@ -463,6 +466,43 @@ INSERT INTO t1(f1) VALUES(0); DROP TABLE t1; +--echo # +--echo # Bug#43685 Lock table affects other non-related tables +--echo # + +--disable_warnings +DROP TABLE IF EXISTS t1, t2; +--enable_warnings + +connect (con2, localhost, root); +CREATE TABLE t1 (id INT); +CREATE TABLE t2 (id INT); + +--echo # Connection default +connection default; +LOCK TABLE t1 WRITE; +ANALYZE TABLE t1; + +--echo # Connection con2 +connection con2; +LOCK TABLE t2 WRITE; +--echo # This used to hang until the first connection +--echo # unlocked t1. +FLUSH TABLE t2; + +UNLOCK TABLES; + +--echo # Connection default +connection default; +UNLOCK TABLES; +DROP TABLE t1, t2; +disconnect con2; + + --echo # --echo # End of 6.0 tests. --echo # + +# Check that all connections opened by test cases in this file are really +# gone so execution of other tests won't be affected by their presence. +--source include/wait_until_count_sessions.inc