set local sql_mode=""; set global sql_mode=""; CREATE FUNCTION MY_KILL(tid INT) RETURNS INT BEGIN DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN END; KILL tid; RETURN (SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE ID = tid); END| connect con1, localhost, root; connect con2, localhost, root; connection con1; connection con2; connection con1; SET DEBUG_SYNC= 'thread_end SIGNAL con1_end'; SET DEBUG_SYNC= 'before_do_command_net_read SIGNAL con1_read'; connection con2; SET DEBUG_SYNC='now WAIT_FOR con1_read'; SET DEBUG_SYNC= 'now WAIT_FOR con1_end'; SET DEBUG_SYNC = 'RESET'; connection con1; SELECT 1; Got one of the listed errors SELECT 1; 1 1 SELECT @id != CONNECTION_ID(); @id != CONNECTION_ID() 1 connection con2; SELECT 4; 4 4 connection default; KILL (SELECT COUNT(*) FROM mysql.user); ERROR 42000: KILL does not support subqueries or stored functions connection con1; connection con2; connection con1; SET DEBUG_SYNC= 'thread_end SIGNAL con1_end'; SET DEBUG_SYNC= 'before_do_command_net_read SIGNAL con1_read WAIT_FOR kill'; connection con2; SET DEBUG_SYNC= 'now WAIT_FOR con1_read'; SET DEBUG_SYNC= 'now WAIT_FOR con1_end'; SET DEBUG_SYNC = 'RESET'; connection con1; SELECT 1; Got one of the listed errors SELECT 1; 1 1 SELECT @id != CONNECTION_ID(); @id != CONNECTION_ID() 1 connection con2; SELECT 4; 4 4 connection default; CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT); CREATE TABLE t2 (id INT UNSIGNED NOT NULL); INSERT INTO t1 VALUES (0),(0),(0),(0),(0),(0),(0),(0), (0),(0),(0),(0),(0),(0),(0),(0), (0),(0),(0),(0),(0),(0),(0),(0), (0),(0),(0),(0),(0),(0),(0),(0), (0),(0),(0),(0),(0),(0),(0),(0), (0),(0),(0),(0),(0),(0),(0),(0), (0),(0),(0),(0),(0),(0),(0),(0), (0),(0),(0),(0),(0),(0),(0),(0); INSERT t1 SELECT 0 FROM t1 AS a1, t1 AS a2 LIMIT 4032; INSERT INTO t2 SELECT id FROM t1; connection con1; connection con2; connection con1; SET DEBUG_SYNC= 'thread_end SIGNAL con1_end'; SET DEBUG_SYNC= 'before_acos_function SIGNAL in_sync'; SELECT id FROM t1 WHERE id IN (SELECT DISTINCT a.id FROM t2 a, t2 b, t2 c, t2 d GROUP BY ACOS(1/a.id), b.id, c.id, d.id HAVING a.id BETWEEN 10 AND 20); connection con2; SET DEBUG_SYNC= 'now WAIT_FOR in_sync'; KILL @id; SET DEBUG_SYNC= 'now WAIT_FOR con1_end'; connection con1; Got one of the listed errors SELECT 1; 1 1 connection default; SET DEBUG_SYNC = 'RESET'; DROP TABLE t1, t2; connection con1; connection con2; connection con1; SET DEBUG_SYNC= 'before_acos_function SIGNAL in_sync WAIT_FOR kill'; SELECT ACOS(0); connection con2; SET DEBUG_SYNC= 'now WAIT_FOR in_sync'; KILL QUERY @id; connection con1; ACOS(0) 1.5707963267948966 SELECT 1; 1 1 SELECT @id = CONNECTION_ID(); @id = CONNECTION_ID() 1 connection default; SET DEBUG_SYNC = 'RESET'; CREATE TABLE t1 (f1 INT); CREATE FUNCTION bug27563() RETURNS INT(11) DETERMINISTIC BEGIN DECLARE CONTINUE HANDLER FOR SQLSTATE '70100' SET @a:= 'killed'; DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET @a:= 'exception'; SET DEBUG_SYNC= 'now SIGNAL in_sync WAIT_FOR kill'; RETURN 1; END| connection con1; connection con2; connection con1; INSERT INTO t1 VALUES (bug27563()); connection con2; SET DEBUG_SYNC= 'now WAIT_FOR in_sync'; KILL QUERY @id; connection con1; ERROR 70100: Query execution was interrupted SELECT * FROM t1; f1 connection default; SET DEBUG_SYNC = 'RESET'; INSERT INTO t1 VALUES(0); connection con1; UPDATE t1 SET f1= bug27563(); connection con2; SET DEBUG_SYNC= 'now WAIT_FOR in_sync'; KILL QUERY @id; connection con1; ERROR 70100: Query execution was interrupted SELECT * FROM t1; f1 0 connection default; SET DEBUG_SYNC = 'RESET'; INSERT INTO t1 VALUES(1); connection con1; DELETE FROM t1 WHERE bug27563() IS NULL; connection con2; SET DEBUG_SYNC= 'now WAIT_FOR in_sync'; KILL QUERY @id; connection con1; ERROR 70100: Query execution was interrupted SELECT * FROM t1; f1 0 1 connection default; SET DEBUG_SYNC = 'RESET'; connection con1; SELECT * FROM t1 WHERE f1= bug27563(); connection con2; SET DEBUG_SYNC= 'now WAIT_FOR in_sync'; KILL QUERY @id; connection con1; ERROR 70100: Query execution was interrupted SELECT * FROM t1; f1 0 1 connection default; SET DEBUG_SYNC = 'RESET'; DROP FUNCTION bug27563; CREATE TABLE t2 (f2 INT); CREATE TRIGGER trg27563 BEFORE INSERT ON t1 FOR EACH ROW BEGIN DECLARE CONTINUE HANDLER FOR SQLSTATE '70100' SET @a:= 'killed'; DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET @a:= 'exception'; INSERT INTO t2 VALUES(0); SET DEBUG_SYNC= 'now SIGNAL in_sync WAIT_FOR kill'; INSERT INTO t2 VALUES(1); END| connection con1; INSERT INTO t1 VALUES(2),(3); connection con2; SET DEBUG_SYNC= 'now WAIT_FOR in_sync'; KILL QUERY @id; connection con1; ERROR 70100: Query execution was interrupted SELECT * FROM t1; f1 0 1 SELECT * FROM t2; f2 0 connection default; SET DEBUG_SYNC = 'RESET'; DROP TABLE t1, t2; # # Bug#19723: kill of active connection yields different error code # depending on platform. # connection con1; SET DEBUG_SYNC= 'thread_end SIGNAL con1_end'; KILL @id; ERROR 70100: Connection was killed connection con2; SET DEBUG_SYNC= 'now WAIT_FOR con1_end'; connection con1; # ER_SERVER_SHUTDOWN, CR_SERVER_GONE_ERROR, CR_SERVER_LOST, # depending on the timing of close of the connection socket SELECT 1; Got one of the listed errors SELECT 1; 1 1 SELECT @id != CONNECTION_ID(); @id != CONNECTION_ID() 1 connection default; SET DEBUG_SYNC = 'RESET'; DROP FUNCTION MY_KILL; set global sql_mode=default; disconnect con1; disconnect con2; # # MDEV-29368 Assertion `trx->mysql_thd == thd' failed in innobase_kill_query from process_timers/timer_handler and use-after-poison in innobase_kill_query # connect foo,localhost,root; create table t1 (a int) engine=innodb; insert t1 values (1); set debug_sync='THD_cleanup_after_set_killed SIGNAL go0 WAIT_FOR go1'; set debug_sync='innobase_connection_closed SIGNAL go2 WAIT_FOR go3'; disconnect foo; connection default; set debug_sync='now WAIT_FOR go0'; set debug_sync='found_killee SIGNAL go1 WAIT_FOR go2'; kill $id; select variable_value into @threads_cached from information_schema.global_status where variable_name='threads_cached'; set debug_sync='now SIGNAL go3'; drop table t1; set debug_sync='reset';