初版
This commit is contained in:
201
build/lib/mysql/mysql-test/t/flush.test
Normal file
201
build/lib/mysql/mysql-test/t/flush.test
Normal file
@@ -0,0 +1,201 @@
|
||||
connect (con1,localhost,root,,);
|
||||
connect (con2,localhost,root,,);
|
||||
connection con1;
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1,t2;
|
||||
drop database if exists mysqltest;
|
||||
--enable_warnings
|
||||
|
||||
create temporary table t1(n int not null primary key);
|
||||
create table t2(n int);
|
||||
insert into t2 values(3);
|
||||
let $1=100;
|
||||
disable_query_log;
|
||||
while ($1)
|
||||
{
|
||||
connection con1;
|
||||
send replace into t1 select n from t2;
|
||||
connection con2;
|
||||
send flush tables;
|
||||
connection con1;
|
||||
reap;
|
||||
connection con2;
|
||||
reap;
|
||||
dec $1;
|
||||
}
|
||||
enable_query_log;
|
||||
connection con1;
|
||||
select * from t1;
|
||||
connection con2;
|
||||
flush tables with read lock;
|
||||
--error 1223
|
||||
drop table t2;
|
||||
connection con1;
|
||||
send drop table t2;
|
||||
connection con2;
|
||||
unlock tables;
|
||||
connection con1;
|
||||
reap;
|
||||
|
||||
#test if drop database will wait until we release the global read lock
|
||||
connection con1;
|
||||
create database mysqltest;
|
||||
create table mysqltest.t1(n int);
|
||||
insert into mysqltest.t1 values (23);
|
||||
flush tables with read lock;
|
||||
connection con2;
|
||||
send drop database mysqltest;
|
||||
connection con1;
|
||||
select * from mysqltest.t1;
|
||||
unlock tables;
|
||||
connection con2;
|
||||
reap;
|
||||
|
||||
# test if dirty close releases global read lock
|
||||
connection con1;
|
||||
create table t1 (n int);
|
||||
flush tables with read lock;
|
||||
dirty_close con1;
|
||||
connection con2;
|
||||
insert into t1 values (345);
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug#9459 - deadlock with flush with lock, and lock table write
|
||||
#
|
||||
create table t1 (c1 int);
|
||||
lock table t1 write;
|
||||
# Cannot get the global read lock with write locked tables.
|
||||
--error 1192
|
||||
flush tables with read lock;
|
||||
lock table t1 read;
|
||||
# Can get the global read lock with read locked tables.
|
||||
flush tables with read lock;
|
||||
--error 1223
|
||||
lock table t1 write;
|
||||
lock table t1 read;
|
||||
--error 1223
|
||||
lock table t1 write;
|
||||
# Release all table locks and the global read lock.
|
||||
unlock tables;
|
||||
create table t2 (c1 int);
|
||||
create table t3 (c1 int);
|
||||
lock table t1 read, t2 read, t3 write;
|
||||
# Cannot get the global read lock with write locked tables.
|
||||
--error 1192
|
||||
flush tables with read lock;
|
||||
lock table t1 read, t2 read, t3 read;
|
||||
# Can get the global read lock with read locked tables.
|
||||
flush tables with read lock;
|
||||
# Release all table locks and the global read lock.
|
||||
unlock tables;
|
||||
drop table t1, t2, t3;
|
||||
|
||||
# End of 4.1 tests
|
||||
|
||||
#
|
||||
# Test of deadlock problem when doing FLUSH TABLE with read lock
|
||||
# (Bug was in NTPL threads in Linux when using different mutex while
|
||||
# waiting for a condtion variable)
|
||||
|
||||
create table t1 (c1 int);
|
||||
create table t2 (c1 int);
|
||||
|
||||
connect (con1,localhost,root,,);
|
||||
connect (con3,localhost,root,,);
|
||||
|
||||
connection con1;
|
||||
lock table t1 write;
|
||||
|
||||
connection con2;
|
||||
send flush tables with read lock;
|
||||
--sleep 1
|
||||
|
||||
connection con3;
|
||||
send insert into t2 values(1);
|
||||
--sleep 1
|
||||
|
||||
connection con1;
|
||||
unlock tables;
|
||||
disconnect con1;
|
||||
|
||||
connection con2;
|
||||
reap;
|
||||
disconnect con2;
|
||||
|
||||
connection con3;
|
||||
# It hangs here (insert into t2 does not end).
|
||||
reap;
|
||||
disconnect con3;
|
||||
|
||||
connection default;
|
||||
drop table t1, t2;
|
||||
|
||||
#
|
||||
# Bug#32528 Global read lock with a low priority write lock causes a server crash
|
||||
#
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1, t2;
|
||||
--enable_warnings
|
||||
|
||||
set session low_priority_updates=1;
|
||||
|
||||
create table t1 (a int);
|
||||
create table t2 (b int);
|
||||
|
||||
lock tables t1 write;
|
||||
--error ER_LOCK_OR_ACTIVE_TRANSACTION
|
||||
flush tables with read lock;
|
||||
unlock tables;
|
||||
|
||||
lock tables t1 read, t2 write;
|
||||
--error ER_LOCK_OR_ACTIVE_TRANSACTION
|
||||
flush tables with read lock;
|
||||
unlock tables;
|
||||
|
||||
lock tables t1 read;
|
||||
flush tables with read lock;
|
||||
unlock tables;
|
||||
|
||||
drop table t1, t2;
|
||||
|
||||
set session low_priority_updates=default;
|
||||
|
||||
#
|
||||
# Bug #33334 mysqltest_embedded crashes when disconnecting before reap
|
||||
#
|
||||
|
||||
connect (con1,localhost,root,,);
|
||||
send select benchmark(200, (select sin(1))) > 1000;
|
||||
disconnect con1;
|
||||
--source include/wait_until_disconnected.inc
|
||||
connection default;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
||||
#
|
||||
# Bug #26380: LOCK TABLES + FLUSH LOGS causes deadlock
|
||||
#
|
||||
set @old_general_log= @@general_log;
|
||||
set @old_read_only= @@read_only;
|
||||
set global general_log= on;
|
||||
|
||||
flush tables with read lock;
|
||||
flush logs;
|
||||
unlock tables;
|
||||
|
||||
set global read_only=1;
|
||||
flush logs;
|
||||
unlock tables;
|
||||
|
||||
flush tables with read lock;
|
||||
flush logs;
|
||||
unlock tables;
|
||||
|
||||
set global general_log= @old_general_log;
|
||||
set global read_only= @old_read_only;
|
||||
|
||||
--echo End of 5.1 tests
|
||||
Reference in New Issue
Block a user