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)
This commit is contained in:
parent
b26165d3a2
commit
9be599fc3d
@ -39,3 +39,17 @@ select * from t3;
|
|||||||
drop table if exists t1,t2,t3,t4;
|
drop table if exists t1,t2,t3,t4;
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1051 Unknown table 't4'
|
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
|
# This should give a warning for t4
|
||||||
drop table if exists t1,t2,t3,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);
|
DBUG_RETURN(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (wait_if_global_read_lock(thd,0))
|
||||||
|
DBUG_RETURN(1);
|
||||||
VOID(pthread_mutex_lock(&LOCK_open));
|
VOID(pthread_mutex_lock(&LOCK_open));
|
||||||
if (lock_table_names(thd, table_list))
|
if (lock_table_names(thd, table_list))
|
||||||
goto err;
|
goto err;
|
||||||
@ -93,6 +95,7 @@ bool mysql_rename_tables(THD *thd, TABLE_LIST *table_list)
|
|||||||
|
|
||||||
err:
|
err:
|
||||||
pthread_mutex_unlock(&LOCK_open);
|
pthread_mutex_unlock(&LOCK_open);
|
||||||
|
start_waiting_global_read_lock(thd);
|
||||||
DBUG_RETURN(error);
|
DBUG_RETURN(error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user