binlog_killed.result 3.68 KB
Newer Older
1
call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
2 3 4 5 6 7 8
create table t1 (a int auto_increment, b int, PRIMARY KEY (a)) ENGINE=InnoDB;
create table t2 (a int auto_increment, b int, PRIMARY KEY (a)) ENGINE=MyISAM;
create table t3 (a int auto_increment, b int, PRIMARY KEY (a)) ENGINE=InnoDB;
select get_lock("a", 20);
get_lock("a", 20)
1
reset master;
unknown's avatar
unknown committed
9
insert into t2 values (null, null), (null, get_lock("a", 10));
unknown's avatar
unknown committed
10 11 12
select @result /* must be zero either way */;
@result
0
unknown's avatar
unknown committed
13 14 15
select RELEASE_LOCK("a");
RELEASE_LOCK("a")
1
16 17 18 19 20
delete from t1;
delete from t2;
insert into t1 values (1,1),(2,2);
begin;
update t1 set b=11 where a=2;
21
begin;
22 23 24
update t1 set b=b+10;
kill query ID;
rollback;
25
rollback;
26
select * from t1  order by a /* must be the same as before (1,1),(2,2) */;
27 28 29 30 31
a	b
1	1
2	2
begin;
delete from t1 where a=2;
32
begin;
33 34 35
delete from t1 where a=2;
kill query ID;
rollback;
36
rollback;
37
select * from t1 order by a /* must be the same as before (1,1),(2,2) */;
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
a	b
1	1
2	2
drop table if exists t4;
create table t4 (a int, b int) engine=innodb;
insert into t4 values (3, 3);
begin;
insert into t1 values (3, 3);
begin;
insert into t1 select * from t4 for update;
kill query ID;
rollback;
rollback;
select * from t1 /* must be the same as before (1,1),(2,2) */;
a	b
1	1
2	2
drop table t4;
56
create table t4 (a int, b int) ENGINE=MyISAM /* for killing update and delete */;
57 58 59 60
create function bug27563(n int) 
RETURNS int(11)
DETERMINISTIC
begin
61
if @b > 0 then
unknown's avatar
unknown committed
62
select get_lock("a", 20)  into @a;
63 64
else 
set @b= 1;
65 66 67
end if;
return n;
end|
68 69
delete from t4;
insert into t4 values (1,1), (1,1);
70 71 72 73
reset master;
select get_lock("a", 20);
get_lock("a", 20)
1
74 75
set @b= 0;
update t4 set b=b + bug27563(b);
unknown's avatar
unknown committed
76 77 78
select count(*) FROM INFORMATION_SCHEMA.PROCESSLIST where state='User lock';
count(*)
1
79
kill query ID;
unknown's avatar
unknown committed
80
ERROR 70100: Query execution was interrupted
81
select * from t4 order by b /* must be (1,1), (1,2) */;
82
a	b
83
1	1
84
1	2
85 86 87 88
select @b  /* must be 1 at the end of a stmt calling bug27563() */;
@b
1
must have the update query event more to FD
89 90
show binlog events from <binlog_start>;
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
91
master-bin.000001	#	Query	#	#	BEGIN
92 93
master-bin.000001	#	User var	#	#	@`b`=0
master-bin.000001	#	Query	#	#	use `test`; update t4 set b=b + bug27563(b)
94
master-bin.000001	#	Query	#	#	COMMIT
95 96 97 98 99 100 101 102 103 104 105 106
select
(@a:=load_file("MYSQLTEST_VARDIR/tmp/binlog_killed_bug27571.binlog"))
is not null;
(@a:=load_file("MYSQLTEST_VARDIR/tmp/binlog_killed_bug27571.binlog"))
is not null
1
select 0 /* must return 0 to mean the killed query is in */;
0
0
select RELEASE_LOCK("a");
RELEASE_LOCK("a")
1
107 108
delete from t4;
insert into t4 values (1,1), (2,2);
109 110 111 112
reset master;
select get_lock("a", 20);
get_lock("a", 20)
1
113 114
set @b= 0;
delete from t4 where b=bug27563(1) or b=bug27563(2);
unknown's avatar
unknown committed
115 116 117
select count(*) FROM INFORMATION_SCHEMA.PROCESSLIST where state='User lock';
count(*)
1
118
kill query ID;
unknown's avatar
unknown committed
119
ERROR 70100: Query execution was interrupted
120 121 122 123 124 125 126
select count(*) from t4 /* must be 1 */;
count(*)
1
select @b  /* must be 1 at the end of a stmt calling bug27563() */;
@b
1
must have the delete query event more to FD
127 128
show binlog events from <binlog_start>;
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
129
master-bin.000001	#	Query	#	#	BEGIN
130 131
master-bin.000001	#	User var	#	#	@`b`=0
master-bin.000001	#	Query	#	#	use `test`; delete from t4 where b=bug27563(1) or b=bug27563(2)
132
master-bin.000001	#	Query	#	#	COMMIT
133 134 135 136 137 138 139 140 141 142 143 144
select
(@a:=load_file("MYSQLTEST_VARDIR/tmp/binlog_killed_bug27571.binlog"))
is not null;
(@a:=load_file("MYSQLTEST_VARDIR/tmp/binlog_killed_bug27571.binlog"))
is not null
1
select 0 /* must return 0 to mean the killed query is in */;
0
0
select RELEASE_LOCK("a");
RELEASE_LOCK("a")
1
145
drop table t4;
146
drop function bug27563;
147
drop table t1,t2,t3;
148
end of the tests