diff options
Diffstat (limited to 'mysql-test/r/kill.result')
-rw-r--r-- | mysql-test/r/kill.result | 274 |
1 files changed, 154 insertions, 120 deletions
diff --git a/mysql-test/r/kill.result b/mysql-test/r/kill.result index 1f4f4bb32eb..964f2947f6a 100644 --- a/mysql-test/r/kill.result +++ b/mysql-test/r/kill.result @@ -1,143 +1,178 @@ -set @old_concurrent_insert= @@global.concurrent_insert; -set @@global.concurrent_insert= 0; -drop table if exists t1, t2, t3; -create table t1 (kill_id int); -insert into t1 values(connection_id()); -select ((@id := kill_id) - kill_id) from t1; -((@id := kill_id) - kill_id) -0 -kill @id; -select ((@id := kill_id) - kill_id) from t1; -((@id := kill_id) - kill_id) -0 -select @id != connection_id(); -@id != connection_id() +SET DEBUG_SYNC = 'RESET'; +DROP TABLE IF EXISTS t1, t2, t3; +DROP FUNCTION IF EXISTS MY_KILL; +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| +SET DEBUG_SYNC= 'thread_end SIGNAL con1_end'; +SET DEBUG_SYNC= 'before_do_command_net_read SIGNAL con1_read'; +SET DEBUG_SYNC='now WAIT_FOR con1_read'; +SET DEBUG_SYNC= 'now WAIT_FOR con1_end'; +SET DEBUG_SYNC = 'RESET'; +SELECT 1; +Got one of the listed errors +SELECT 1; +1 1 -select 4; +SELECT @id != CONNECTION_ID(); +@id != CONNECTION_ID() +1 +SELECT 4; 4 4 -drop table t1; -kill (select count(*) from mysql.user); +KILL (SELECT COUNT(*) FROM mysql.user); ERROR 42000: This version of MySQL doesn't yet support 'Usage of subqueries or stored function calls as part of this statement' -create table t1 (id int primary key); -create table t2 (id int unsigned not null); -insert into t2 select id from t1; -create table t3 (kill_id int); -insert into t3 values(connection_id()); -select id from t1 where id in (select distinct a.id from t2 a, t2 b, t2 c, t2 d group by a.id, b.id, c.id, d.id having a.id between 10 and 20); -select ((@id := kill_id) - kill_id) from t3; -((@id := kill_id) - kill_id) -0 -kill @id; +SET DEBUG_SYNC= 'thread_end SIGNAL con1_end'; +SET DEBUG_SYNC= 'before_do_command_net_read SIGNAL con1_read WAIT_FOR kill'; +SET DEBUG_SYNC= 'now WAIT_FOR con1_read'; +SET DEBUG_SYNC= 'now WAIT_FOR con1_end'; +SET DEBUG_SYNC = 'RESET'; +SELECT 1; Got one of the listed errors -drop table t1, t2, t3; -select get_lock("a", 10); -get_lock("a", 10) -1 -select get_lock("a", 10); -get_lock("a", 10) -NULL -select 1; -1 -1 -select RELEASE_LOCK("a"); -RELEASE_LOCK("a") -1 -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 @a= get_lock("lock27563", 10); -return 1; -end| -select get_lock("lock27563",10); -get_lock("lock27563",10) -1 -insert into t1 values (bug27563()); -ERROR 70100: Query execution was interrupted -select @a; -@a -NULL -select * from t1; +SELECT 1; +1 +1 +SELECT @id != CONNECTION_ID(); +@id != CONNECTION_ID() +1 +SELECT 4; +4 +4 +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; +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); +SET DEBUG_SYNC= 'now WAIT_FOR in_sync'; +KILL @id; +SET DEBUG_SYNC= 'now WAIT_FOR con1_end'; +Got one of the listed errors +SELECT 1; +1 +1 +SET DEBUG_SYNC = 'RESET'; +DROP TABLE t1, t2; +SET DEBUG_SYNC= 'before_acos_function SIGNAL in_sync WAIT_FOR kill'; +SELECT ACOS(0); +SET DEBUG_SYNC= 'now WAIT_FOR in_sync'; +KILL QUERY @id; +ACOS(0) +1.5707963267948966 +SELECT 1; +1 +1 +SELECT @id = CONNECTION_ID(); +@id = CONNECTION_ID() +1 +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| +INSERT INTO t1 VALUES (bug27563()); +SET DEBUG_SYNC= 'now WAIT_FOR in_sync'; +KILL QUERY @id; +ERROR 70100: Query execution was interrupted +SELECT * FROM t1; f1 -insert into t1 values(0); -update t1 set f1= bug27563(); +SET DEBUG_SYNC = 'RESET'; +INSERT INTO t1 VALUES(0); +UPDATE t1 SET f1= bug27563(); +SET DEBUG_SYNC= 'now WAIT_FOR in_sync'; +KILL QUERY @id; ERROR 70100: Query execution was interrupted -select @a; -@a -NULL -select * from t1; +SELECT * FROM t1; f1 0 -insert into t1 values(1); -delete from t1 where bug27563() is null; +SET DEBUG_SYNC = 'RESET'; +INSERT INTO t1 VALUES(1); +DELETE FROM t1 WHERE bug27563() IS NULL; +SET DEBUG_SYNC= 'now WAIT_FOR in_sync'; +KILL QUERY @id; ERROR 70100: Query execution was interrupted -select @a; -@a -NULL -select * from t1; +SELECT * FROM t1; f1 0 1 -select * from t1 where f1= bug27563(); -ERROR 70100: Query execution was interrupted -select @a; -@a -NULL -create procedure proc27563() -begin -declare continue handler for sqlstate '70100' set @a:= 'killed'; -declare continue handler for sqlexception set @a:= 'exception'; -select get_lock("lock27563",10); -select "shouldn't be selected"; -end| -call proc27563(); -get_lock("lock27563",10) -NULL -ERROR 70100: Query execution was interrupted -select @a; -@a -NULL -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'; -set @a:= get_lock("lock27563",10); -insert into t2 values(1); -end| -insert into t1 values(2),(3); -ERROR 70100: Query execution was interrupted -select @a; -@a -NULL -select * from t1; +SET DEBUG_SYNC = 'RESET'; +SELECT * FROM t1 WHERE f1= bug27563(); +SET DEBUG_SYNC= 'now WAIT_FOR in_sync'; +KILL QUERY @id; +ERROR 70100: Query execution was interrupted +SELECT * FROM t1; f1 0 1 -select * from t2; -f2 -select release_lock("lock27563"); -release_lock("lock27563") +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| +INSERT INTO t1 VALUES(2),(3); +SET DEBUG_SYNC= 'now WAIT_FOR in_sync'; +KILL QUERY @id; +ERROR 70100: Query execution was interrupted +SELECT * FROM t1; +f1 +0 1 -drop table t1, t2; -drop function bug27563; -drop procedure proc27563; +SELECT * FROM t2; +f2 +0 +SET DEBUG_SYNC = 'RESET'; +DROP TABLE t1, t2; +SET DEBUG_SYNC= 'before_join_optimize SIGNAL in_sync'; PREPARE stmt FROM 'EXPLAIN SELECT * FROM t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16,t17,t18,t19,t20,t21,t22,t23,t24,t25,t26,t27,t28,t29,t30,t31,t32,t33,t34,t35,t36,t37,t38,t39,t40 WHERE a1=a2 AND a2=a3 AND a3=a4 AND a4=a5 AND a5=a6 AND a6=a7 AND a7=a8 AND a8=a9 AND a9=a10 AND a10=a11 AND a11=a12 AND a12=a13 AND a13=a14 AND a14=a15 AND a15=a16 AND a16=a17 AND a17=a18 AND a18=a19 AND a19=a20 AND a20=a21 AND a21=a22 AND a22=a23 AND a23=a24 AND a24=a25 AND a25=a26 AND a26=a27 AND a27=a28 AND a28=a29 AND a29=a30 AND a30=a31 AND a31=a32 AND a32=a33 AND a33=a34 AND a34=a35 AND a35=a36 AND a36=a37 AND a37=a38 AND a38=a39 AND a39=a40 '; EXECUTE stmt; +SET DEBUG_SYNC= 'now WAIT_FOR in_sync'; +KILL QUERY @id; +ERROR 70100: Query execution was interrupted +SET DEBUG_SYNC = 'RESET'; # # Bug#19723: kill of active connection yields different error code # depending on platform. # -# Connection: con2. -KILL CONNECTION_ID(); -# CR_SERVER_LOST, CR_SERVER_GONE_ERROR, depending on the timing -# of close of the connection socket +# Connection: con1. +SET DEBUG_SYNC= 'thread_end SIGNAL con1_end'; +KILL @id; +ERROR 70100: Query execution was interrupted +SET DEBUG_SYNC= 'now WAIT_FOR con1_end'; +# 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 +SET DEBUG_SYNC = 'RESET'; # # Additional test for WL#3726 "DDL locking for all metadata objects" # Check that DDL and DML statements waiting for metadata locks can @@ -208,13 +243,11 @@ ERROR 70100: Query execution was interrupted # Test for DML waiting for meta-data lock # Switching to connection 'blocker' unlock tables; -drop table t2; -create table t2 (k int); lock tables t1 read; # Switching to connection 'ddl' -rename tables t1 to t3, t2 to t1; +truncate table t1; # Switching to connection 'dml' -insert into t2 values (1); +insert into t1 values (1); # Switching to connection 'default' kill query ID2; # Switching to connection 'dml' @@ -239,6 +272,7 @@ unlock tables; # Switching to connection 'ddl' # Cleanup. # Switching to connection 'default' -drop table t3; drop table t1; -set @@global.concurrent_insert= @old_concurrent_insert; +drop table t2; +SET DEBUG_SYNC = 'RESET'; +DROP FUNCTION MY_KILL; |