Commit c2beb683 authored by Jon Olav Hauglid's avatar Jon Olav Hauglid

Bug #43685 Lock table affects other non-related tables

The problem was that FLUSH TABLE <table_list> would block, 
waiting for all tables with old versions to be removed from 
the table definition cache, rather than waiting for only 
the tables in <table_list>. This could happen if FLUSH TABLE
was used in combination with LOCK TABLES.

With the new MDL code, this problem is no longer repeatable.
Regression test case added to lock.test. This commit contains
no code changes.
parent 5045ad38
......@@ -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.
#
......@@ -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
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment