1--source include/have_metadata_lock_info.inc 2--source include/have_innodb.inc 3 4--echo # 5--echo # MDEV-12882 - Assertion `mdl_ticket->m_type == MDL_SHARED_UPGRADABLE || 6--echo # mdl_ticket->m_type == MDL_SHARED_NO_WRITE || 7--echo # mdl_ticket->m_type == MDL_SHARED_NO_READ_WRITE || 8--echo # mdl_ticket->m_type == MDL_SHARED_READ' 9--echo # failed in MDL_context::upgrade_shared_lock 10--echo # 11 12CREATE TABLE t1(a INT) ENGINE=InnoDB; 13CREATE TABLE t3(a INT) ENGINE=myisam; 14LOCK TABLES t1 WRITE CONCURRENT, t1 AS t2 READ; 15SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; 16UNLOCK TABLES; 17LOCK TABLES t1 AS t2 READ, t1 WRITE CONCURRENT; 18SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; 19UNLOCK TABLES; 20LOCK TABLES t1 WRITE CONCURRENT, t3 WRITE; 21SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; 22UNLOCK TABLES; 23LOCK TABLES t3 WRITE, t1 WRITE CONCURRENT; 24SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; 25UNLOCK TABLES; 26LOCK TABLES t1 WRITE, mysql.user WRITE; 27SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; 28UNLOCK TABLES; 29--error ER_CANT_LOCK_LOG_TABLE 30LOCK TABLES mysql.general_log WRITE; 31# The following may work in embedded server 32--error 0,ER_DBACCESS_DENIED_ERROR 33LOCK TABLES t1 WRITE,information_schema.tables READ; 34UNLOCK TABLES; 35DROP TABLE t1,t3; 36 37--echo # 38--echo # Check MDL locks taken for different kind of tables by open 39--echo # 40 41CREATE TABLE t1(a INT) ENGINE=InnoDB; 42CREATE TABLE t3(a INT) ENGINE=myisam; 43connect (locker,localhost,root,,); 44connection default; 45 46FLUSH TABLES WITH READ LOCK; 47connection locker; 48--send insert into t1 values (1) 49connection default; 50# Wait till above update gets blocked on a user lock. 51let $wait_condition= 52 select count(*) > 0 from information_schema.processlist 53 where state = "Waiting for backup lock"; 54--source include/wait_condition.inc 55connection default; 56SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; 57unlock tables; 58connection locker; 59--reap 60unlock tables; 61connection default; 62 63FLUSH TABLES WITH READ LOCK; 64connection locker; 65--send insert into t3 values (2) 66connection default; 67# Wait till above update gets blocked on a user lock. 68let $wait_condition= 69 select count(*) > 0 from information_schema.processlist 70 where state = "Waiting for backup lock"; 71--source include/wait_condition.inc 72connection default; 73SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; 74unlock tables; 75connection locker; 76--reap 77unlock tables; 78connection default; 79 80disconnect locker; 81DROP TABLE t1,t3; 82