mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 20:42:30 +01:00
fixed
BUG #2397 "RENAME TABLES is not blocked by FLUSH TABLES WITH READ LOCK" (added waiting for global_read_lock in mysql_rename_tables)
This commit is contained in:
parent
3bfbe6e0dd
commit
7a580ce991
3 changed files with 41 additions and 0 deletions
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue