diff options
Diffstat (limited to 'mysql-test/main/flush_table.test')
-rw-r--r-- | mysql-test/main/flush_table.test | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/mysql-test/main/flush_table.test b/mysql-test/main/flush_table.test new file mode 100644 index 00000000..91047c2d --- /dev/null +++ b/mysql-test/main/flush_table.test @@ -0,0 +1,133 @@ +# TODO: Only run this if we have privilege to do flush table + +# +# Test of flush table +# + +# Should work in embedded server after mysqltest is fixed +-- source include/not_embedded.inc + +--disable_service_connection + +--disable_warnings +drop table if exists t1,t2; +--enable_warnings +create table t1 (a int not null auto_increment primary key); +insert into t1 values(0); + +# Test for with read lock + flush + +lock table t1 read; +--error ER_TABLE_NOT_LOCKED_FOR_WRITE +flush table t1; +unlock tables; + +# Test for with write lock + flush + +lock table t1 write; +flush table t1; +check table t1; +unlock tables; + +# Test for with a write lock and a waiting read lock + flush + +lock table t1 write; +connect (locker,localhost,root,,test); +connection locker; +send lock table t1 read; +connection default; +sleep 2; +flush table t1; +select * from t1; +unlock tables; +connection locker; +reap; +unlock tables; +connection default; + +# Test for with a write lock and a waiting write lock + flush + +lock table t1 write; +connection locker; +send lock table t1 write; +connection default; +sleep 2; +flush table t1; +select * from t1; +unlock tables; +connection locker; +reap; +unlock tables; +select * from t1; +connection default; +drop table t1; +disconnect locker; +--enable_service_connection + +# +# In the following test FLUSH TABLES produces a deadlock +# (hang forever) if the fix for BUG #3565 is missing. +# And it shows that handler tables are re-opened after flush (BUG #4286). +# +create table t1(table_id char(20) primary key); +create table t2(table_id char(20) primary key); +insert into t1 values ('test.t1'); +insert into t1 values (''); +insert into t2 values ('test.t2'); +insert into t2 values (''); +handler t1 open as a1; +handler t1 open as a2; +handler t2 open; +handler a1 read first limit 9; +handler a2 read first limit 9; +handler t2 read first limit 9; +flush tables; +handler a1 read first limit 9; +handler a2 read first limit 9; +handler t2 read first limit 9; +# +--error 1066 +handler t1 open as a1; +--error 1066 +handler t1 open as a2; +--error 1066 +handler t2 open; +handler a1 read first limit 9; +handler a2 read first limit 9; +handler t2 read first limit 9; +flush table t1; +handler a1 read first limit 9; +handler a2 read first limit 9; +handler t2 read first limit 9; +flush table t2; +handler t2 close; +drop table t1; +drop table t2; + +# +# The fix for BUG #4286 cannot restore the position after a flush. +# +create table t1(table_id char(20) primary key); +insert into t1 values ('Record-01'); +insert into t1 values ('Record-02'); +insert into t1 values ('Record-03'); +insert into t1 values ('Record-04'); +insert into t1 values ('Record-05'); +handler t1 open; +handler t1 read first limit 1; +handler t1 read next limit 1; +handler t1 read next limit 1; +flush table t1; +handler t1 read next limit 1; +handler t1 read next limit 1; +handler t1 close; +drop table t1; + +# +# Bug #11934 Two sequential FLUSH TABLES WITH READ LOCK hangs client +# +FLUSH TABLES WITH READ LOCK ; +FLUSH TABLES WITH READ LOCK ; +UNLOCK TABLES; + +# End of 4.1 tests |