SET DEBUG_SYNC='RESET'; DROP TABLE IF EXISTS t1; # # Bug#20667 - Truncate table fails for a write locked table # CREATE TABLE t1 (c1 INT); INSERT INTO t1 VALUES (1); # # connection con1 HANDLER t1 OPEN; # # connection default LOCK TABLE t1 WRITE; SET DEBUG_SYNC='mdl_upgrade_shared_lock_to_exclusive SIGNAL waiting'; TRUNCATE TABLE t1; # # connection con2 SET DEBUG_SYNC='now WAIT_FOR waiting'; KILL QUERY @id; # # connection con1 # Release shared metadata lock by closing HANDLER. HANDLER t1 CLOSE; # # connection default ERROR 70100: Query execution was interrupted UNLOCK TABLES; DROP TABLE t1; SET DEBUG_SYNC='RESET'; CREATE TABLE t1 (c1 INT); INSERT INTO t1 VALUES (1); # # connection con1 HANDLER t1 OPEN; # # connection default LOCK TABLE t1 WRITE; SET DEBUG_SYNC='mdl_upgrade_shared_lock_to_exclusive SIGNAL waiting'; TRUNCATE TABLE t1; # # connection con2 SET DEBUG_SYNC='now WAIT_FOR waiting'; # # connection con1 HANDLER t1 CLOSE; # # connection default ERROR 42S02: Table 'test.t1' doesn't exist UNLOCK TABLES; DROP TABLE t1; ERROR 42S02: Unknown table 't1' SET DEBUG_SYNC='RESET'; CREATE TABLE t1 (c1 INT); INSERT INTO t1 VALUES (1); # # connection con1 START TRANSACTION; INSERT INTO t1 VALUES (2); # # connection default SET DEBUG_SYNC='mdl_acquire_lock_wait SIGNAL waiting'; TRUNCATE TABLE t1; # # connection con1 SET DEBUG_SYNC='now WAIT_FOR waiting'; KILL QUERY @id; COMMIT; # # connection default ERROR 70100: Query execution was interrupted UNLOCK TABLES; DROP TABLE t1; SET DEBUG_SYNC='RESET';