RESET MASTER; connection default; # MERGE is the only remaning non-specialized SE (like NDB or P_S) # which implements TRUNCATE TABLE through handler::truncate(). CREATE TABLE t0(id INT AUTO_INCREMENT PRIMARY KEY, a INT, b INT) ENGINE=MyISAM; CREATE TABLE t1(id INT AUTO_INCREMENT PRIMARY KEY, a INT, b INT) ENGINE=MERGE UNION=(t0) INSERT_METHOD=LAST; INSERT INTO t1(a, b) VALUES(1,2),(2,4),(3,6),(4,8),(5,10); SET DEBUG_SYNC = "open_and_process_table signal truncate_before_lock wait_for forever"; TRUNCATE t1; connect con1,localhost,root,,; SET DEBUG_SYNC = "now wait_for truncate_before_lock"; SELECT ((@id := id) - id) FROM information_schema.processlist WHERE processlist.info LIKE '%TRUNCATE t1%' AND state LIKE '%open_and_process_table%'; ((@id := id) - id) 0 Warnings: Warning 1287 Setting user variables within expressions is deprecated and will be removed in a future release. Consider alternatives: 'SET variable=expression, ...', or 'SELECT expression(s) INTO variables(s)'. KILL QUERY @id; connection default; ERROR 70100: Query execution was interrupted connection con1; include/show_binlog_events.inc connection con1; connection con1; Log_name Pos Event_type Server_id End_log_pos Info binlog.000001 # Query # # use `test`; CREATE TABLE t0(id INT AUTO_INCREMENT PRIMARY KEY, a INT, b INT) ENGINE=MyISAM binlog.000001 # Query # # use `test`; CREATE TABLE t1(id INT AUTO_INCREMENT PRIMARY KEY, a INT, b INT) ENGINE=MERGE UNION=(t0) INSERT_METHOD=LAST binlog.000001 # Query # # BEGIN binlog.000001 # Intvar # # INSERT_ID=1 binlog.000001 # Query # # use `test`; INSERT INTO t1(a, b) VALUES(1,2),(2,4),(3,6),(4,8),(5,10) binlog.000001 # Query # # COMMIT connection con1; connection con1; disconnect con1; connection default; SELECT * FROM t1; id a b 1 1 2 2 2 4 3 3 6 4 4 8 5 5 10 DROP TABLE t1, t0; SET DEBUG_SYNC= 'RESET';