Commit ebbd986b authored by unknown's avatar unknown

fixed

BUG #2397 "RENAME TABLES is not blocked by FLUSH TABLES WITH READ LOCK"
(added waiting for global_read_lock in mysql_rename_tables)


mysql-test/r/rename.result:
  added test for 
  BUG #2397 "RENAME TABLES is not blocked by FLUSH TABLES WITH READ LOCK"
mysql-test/t/rename.test:
  added test for 
  BUG #2397 "RENAME TABLES is not blocked by FLUSH TABLES WITH READ LOCK"
sql/sql_rename.cc:
  fixed 
  BUG #2397 "RENAME TABLES is not blocked by FLUSH TABLES WITH READ LOCK"
  (added waiting for global_read_lock)
parent 518c3c83
......@@ -39,3 +39,17 @@ select * from t3;
drop table if exists t1,t2,t3,t4;
Warnings:
Note 1051 Unknown table 't4'
CREATE TABLE t1 (a int);
CREATE TABLE t3 (a int);
FLUSH TABLES WITH READ LOCK;
RENAME TABLE t1 TO t2, t3 to t4;
show tables;
Tables_in_test
t1
t3
UNLOCK TABLES;
show tables;
Tables_in_test
t2
t4
drop table t2, t4;
......@@ -35,3 +35,27 @@ select * from t3;
# This should give a warning for t4
drop table if exists t1,t2,t3,t4;
#
# Test-case for Bug #2397 RENAME TABLES is not blocked by
# FLUSH TABLES WITH READ LOCK
#
connect (con1,localhost,root,,);
connect (con2,localhost,root,,);
connection con1;
CREATE TABLE t1 (a int);
CREATE TABLE t3 (a int);
connection con2;
FLUSH TABLES WITH READ LOCK;
connection con1;
send RENAME TABLE t1 TO t2, t3 to t4;
connection con2;
sleep 1;
show tables;
UNLOCK TABLES;
sleep 1;
show tables;
drop table t2, t4;
......@@ -46,6 +46,8 @@ bool mysql_rename_tables(THD *thd, TABLE_LIST *table_list)
DBUG_RETURN(1);
}
if (wait_if_global_read_lock(thd,0))
DBUG_RETURN(1);
VOID(pthread_mutex_lock(&LOCK_open));
if (lock_table_names(thd, table_list))
goto err;
......@@ -93,6 +95,7 @@ bool mysql_rename_tables(THD *thd, TABLE_LIST *table_list)
err:
pthread_mutex_unlock(&LOCK_open);
start_waiting_global_read_lock(thd);
DBUG_RETURN(error);
}
......
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