drop table if exists t1,t2; drop database if exists mysqltest; create temporary table t1(n int not null primary key); create table t2(n int); insert into t2 values(3); select * from t1; n 3 flush tables with read lock; drop table t2; ERROR HY000: Can't execute the query because you have a conflicting read lock drop table t2; unlock tables; create database mysqltest; create table mysqltest.t1(n int); insert into mysqltest.t1 values (23); flush tables with read lock; drop database mysqltest; select * from mysqltest.t1; n 23 unlock tables; create table t1 (n int); flush tables with read lock; insert into t1 values (345); select * from t1; n 345 drop table t1; create table t1 (c1 int); lock table t1 write; flush tables with read lock; ERROR HY000: Can't execute the given command because you have active locked tables or an active transaction lock table t1 read; flush tables with read lock; ERROR HY000: Can't execute the given command because you have active locked tables or an active transaction unlock tables; flush tables with read lock; lock table t1 write; ERROR HY000: Can't execute the query because you have a conflicting read lock lock table t1 read; lock table t1 write; ERROR HY000: Can't execute the query because you have a conflicting read lock unlock tables; create table t2 (c1 int); create table t3 (c1 int); lock table t1 read, t2 read, t3 write; flush tables with read lock; ERROR HY000: Can't execute the given command because you have active locked tables or an active transaction lock table t1 read, t2 read, t3 read; flush tables with read lock; ERROR HY000: Can't execute the given command because you have active locked tables or an active transaction unlock tables; drop table t1, t2, t3; create table t1 (c1 int); create table t2 (c1 int); lock table t1 write; flush tables with read lock; insert into t2 values(1); unlock tables; drop table t1, t2; drop table if exists t1, t2; set session low_priority_updates=1; create table t1 (a int); create table t2 (b int); lock tables t1 write; flush tables with read lock; ERROR HY000: Can't execute the given command because you have active locked tables or an active transaction unlock tables; lock tables t1 read, t2 write; flush tables with read lock; ERROR HY000: Can't execute the given command because you have active locked tables or an active transaction unlock tables; lock tables t1 read; flush tables with read lock; ERROR HY000: Can't execute the given command because you have active locked tables or an active transaction unlock tables; drop table t1, t2; set session low_priority_updates=default; select benchmark(200, (select sin(1))) > 1000; End of 5.0 tests 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; End of 5.1 tests # # Additional test for bug #51136 "Crash in pthread_rwlock_rdlock # on TEMPORARY + HANDLER + LOCK + SP". # Also see the main test for this bug in include/handler.inc. # drop tables if exists t1, t2; create table t1 (i int); create temporary table t2 (j int); flush tables with read lock; lock table t2 read; # This commit should not release any MDL locks. commit; # The below statement crashed before the bug fix as it # has attempted to release global shared metadata lock # which was already released by commit. unlock tables; drop tables t1, t2; # # Tests for WL#5000 FLUSH TABLES|TABLE table_list WITH READ LOCK # # I. Check the incompatible changes in the grammar. # flush tables with read lock, hosts; ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' hosts' at line 1 flush privileges, tables; ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'tables' at line 1 flush privileges, tables with read lock; ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'tables with read lock' at line 1 flush privileges, tables; ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'tables' at line 1 flush tables with read lock, tables; ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' tables' at line 1 show tables; Tables_in_test # # II. Check the allowed syntax. # drop table if exists t1, t2, t3; create table t1 (a int); create table t2 (a int); create table t3 (a int); lock table t1 read, t2 read; flush tables with read lock; ERROR HY000: Can't execute the given command because you have active locked tables or an active transaction unlock tables; flush tables with read lock; flush tables t1, t2 with read lock; flush tables t1, t2 with read lock; ERROR HY000: Can't execute the given command because you have active locked tables or an active transaction flush tables with read lock; ERROR HY000: Can't execute the given command because you have active locked tables or an active transaction select * from t1; a select * from t2; a select * from t3; ERROR HY000: Table 't3' was not locked with LOCK TABLES insert into t1 (a) values (1); ERROR HY000: Table 't1' was locked with a READ lock and can't be updated insert into t2 (a) values (1); ERROR HY000: Table 't2' was locked with a READ lock and can't be updated insert into t3 (a) values (1); ERROR HY000: Table 't3' was not locked with LOCK TABLES lock table no_such_table read; ERROR 42S02: Table 'test.no_such_table' doesn't exist # # We implicitly left the locked tables # mode but still have the read lock. # insert into t2 (a) values (1); ERROR HY000: Can't execute the query because you have a conflicting read lock unlock tables; insert into t1 (a) values (1); insert into t2 (a) values (1); flush table t1, t2 with read lock; select * from t1; a 1 select * from t2; a 1 select * from t3; ERROR HY000: Table 't3' was not locked with LOCK TABLES insert into t1 (a) values (2); ERROR HY000: Table 't1' was locked with a READ lock and can't be updated insert into t2 (a) values (2); ERROR HY000: Table 't2' was locked with a READ lock and can't be updated insert into t3 (a) values (2); ERROR HY000: Table 't3' was not locked with LOCK TABLES lock table no_such_table read; ERROR 42S02: Table 'test.no_such_table' doesn't exist insert into t3 (a) values (2); # # III. Concurrent tests. # # --> connection default # # Check that flush tables with read lock # does not affect non-locked tables. # flush tables t1 with read lock; # --> connection con1; select * from t1; a 1 select * from t2; a 1 insert into t2 (a) values (3); # --> connection default; unlock tables; # --> connection con1 drop table t1, t2, t3;