diff options
Diffstat (limited to 'mysql-test/main/mdl.test')
-rw-r--r-- | mysql-test/main/mdl.test | 64 |
1 files changed, 63 insertions, 1 deletions
diff --git a/mysql-test/main/mdl.test b/mysql-test/main/mdl.test index b90c74a8f7f..23a862f5212 100644 --- a/mysql-test/main/mdl.test +++ b/mysql-test/main/mdl.test @@ -10,10 +10,72 @@ --echo # CREATE TABLE t1(a INT) ENGINE=InnoDB; +CREATE TABLE t3(a INT) ENGINE=myisam; LOCK TABLES t1 WRITE CONCURRENT, t1 AS t2 READ; SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; UNLOCK TABLES; LOCK TABLES t1 AS t2 READ, t1 WRITE CONCURRENT; SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; UNLOCK TABLES; -DROP TABLE t1; +LOCK TABLES t1 WRITE CONCURRENT, t3 WRITE; +SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; +UNLOCK TABLES; +LOCK TABLES t3 WRITE, t1 WRITE CONCURRENT; +SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; +UNLOCK TABLES; +LOCK TABLES t1 WRITE, mysql.user WRITE; +SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; +UNLOCK TABLES; +--error ER_CANT_LOCK_LOG_TABLE +LOCK TABLES mysql.general_log WRITE; +# The following may work in embedded server +--error 0,ER_DBACCESS_DENIED_ERROR +LOCK TABLES t1 WRITE,information_schema.tables READ; +UNLOCK TABLES; +DROP TABLE t1,t3; + +--echo # +--echo # Check MDL locks taken for different kind of tables by open +--echo # + +CREATE TABLE t1(a INT) ENGINE=InnoDB; +CREATE TABLE t3(a INT) ENGINE=myisam; +connect (locker,localhost,root,,); +connection default; + +FLUSH TABLES WITH READ LOCK; +connection locker; +--send insert into t1 values (1) +connection default; +# Wait till above update gets blocked on a user lock. +let $wait_condition= + select count(*) > 0 from information_schema.processlist + where state = "Waiting for backup lock"; +--source include/wait_condition.inc +connection default; +SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; +unlock tables; +connection locker; +--reap +unlock tables; +connection default; + +FLUSH TABLES WITH READ LOCK; +connection locker; +--send insert into t3 values (2) +connection default; +# Wait till above update gets blocked on a user lock. +let $wait_condition= + select count(*) > 0 from information_schema.processlist + where state = "Waiting for backup lock"; +--source include/wait_condition.inc +connection default; +SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; +unlock tables; +connection locker; +--reap +unlock tables; +connection default; + +disconnect locker; +DROP TABLE t1,t3; |