mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
bug#27571 merging. Fixing offsets and moving tests to the corrent
destination. Removing wrong (local temp) tests. mysql-test/suite/binlog/t/binlog_killed_simulate-master.opt: Rename: mysql-test/t/binlog_killed_simulate-master.opt -> mysql-test/suite/binlog/t/binlog_killed_simulate-master.opt BitKeeper/deleted/.del-binlog_killed_bug27571.test: Delete: mysql-test/t/binlog_killed_bug27571.test BitKeeper/deleted/.del-binlog_killed_bug27571-master.opt: Delete: mysql-test/t/binlog_killed_bug27571-master.opt mysql-test/suite/binlog/r/binlog_killed.result: results changed mysql-test/suite/binlog/t/binlog_killed.test: binlog offset made 5.1 specific mysql-test/suite/binlog/t/binlog_killed_simulate.test: binlog offset + guard to run the test with stmt/mixed format mysql-test/suite/binlog/r/binlog_killed_simulate.result: new results file
This commit is contained in:
@ -70,9 +70,10 @@ select * from t2 /* must be (1,2), (2,2) */;
|
|||||||
a b
|
a b
|
||||||
1 2
|
1 2
|
||||||
2 2
|
2 2
|
||||||
show master status /* must have the update event more to FD */;
|
must have the update event more to FD
|
||||||
File Position Binlog_Do_DB Binlog_Ignore_DB
|
show binlog events from <binlog_start>;
|
||||||
master-bin.000001 211
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
|
master-bin.000001 # Query # # use `test`; update t2 set b=b + bug27563(b) order by a
|
||||||
select
|
select
|
||||||
(@a:=load_file("MYSQLTEST_VARDIR/tmp/binlog_killed_bug27571.binlog"))
|
(@a:=load_file("MYSQLTEST_VARDIR/tmp/binlog_killed_bug27571.binlog"))
|
||||||
is not null;
|
is not null;
|
||||||
@ -98,9 +99,9 @@ select * from t2 /* must be (1,2), (2,2) */;
|
|||||||
a b
|
a b
|
||||||
1 1
|
1 1
|
||||||
2 2
|
2 2
|
||||||
show master status /* must have the update event more to FD */;
|
must have the update event more to FD
|
||||||
File Position Binlog_Do_DB Binlog_Ignore_DB
|
show binlog events from <binlog_start>;
|
||||||
master-bin.000001 98
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
select
|
select
|
||||||
(@a:=load_file("MYSQLTEST_VARDIR/tmp/binlog_killed_bug27571.binlog"))
|
(@a:=load_file("MYSQLTEST_VARDIR/tmp/binlog_killed_bug27571.binlog"))
|
||||||
is not null;
|
is not null;
|
||||||
|
33
mysql-test/suite/binlog/r/binlog_killed_simulate.result
Normal file
33
mysql-test/suite/binlog/r/binlog_killed_simulate.result
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
drop table if exists t1,t2;
|
||||||
|
create table t1 (a int) engine=MyISAM;
|
||||||
|
insert into t1 set a=1;
|
||||||
|
reset master;
|
||||||
|
update t1 set a=2 /* will be "killed" after work has been done */;
|
||||||
|
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 1 /* must return 1 as query completed before got killed*/;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
create table t2 (a int, b int) ENGINE=MyISAM;
|
||||||
|
reset master;
|
||||||
|
load data infile '../std_data_ln/rpl_loaddata.dat' into table t2 /* will be "killed" in the middle */;
|
||||||
|
ERROR 70100: Query execution was interrupted
|
||||||
|
show binlog events from <binlog_start>;
|
||||||
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
|
master-bin.000001 # Begin_load_query # # ;file_id=1;block_len=12
|
||||||
|
master-bin.000001 # Execute_load_query # # use `test`; load data infile '../std_data_ln/rpl_loaddata.dat' into table t2 /* will be "killed" in the middle */ ;file_id=1
|
||||||
|
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
|
||||||
|
drop table t1,t2;
|
||||||
|
end of the tests
|
@ -216,11 +216,12 @@ connection con2;
|
|||||||
--error ER_QUERY_INTERRUPTED
|
--error ER_QUERY_INTERRUPTED
|
||||||
reap;
|
reap;
|
||||||
select * from t2 /* must be (1,2), (2,2) */;
|
select * from t2 /* must be (1,2), (2,2) */;
|
||||||
show master status /* must have the update event more to FD */;
|
--echo must have the update event more to FD
|
||||||
|
source include/show_binlog_events.inc;
|
||||||
|
|
||||||
# a proof the query is binlogged with an error
|
# a proof the query is binlogged with an error
|
||||||
|
|
||||||
--exec $MYSQL_BINLOG --start-position=98 $MYSQLTEST_VARDIR/log/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/binlog_killed_bug27571.binlog
|
--exec $MYSQL_BINLOG --start-position=106 $MYSQLTEST_VARDIR/log/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/binlog_killed_bug27571.binlog
|
||||||
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
|
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
|
||||||
eval select
|
eval select
|
||||||
(@a:=load_file("$MYSQLTEST_VARDIR/tmp/binlog_killed_bug27571.binlog"))
|
(@a:=load_file("$MYSQLTEST_VARDIR/tmp/binlog_killed_bug27571.binlog"))
|
||||||
@ -256,11 +257,12 @@ connection con2;
|
|||||||
--error ER_QUERY_INTERRUPTED
|
--error ER_QUERY_INTERRUPTED
|
||||||
reap;
|
reap;
|
||||||
select * from t2 /* must be (1,2), (2,2) */;
|
select * from t2 /* must be (1,2), (2,2) */;
|
||||||
show master status /* must have the update event more to FD */;
|
--echo must have the update event more to FD
|
||||||
|
source include/show_binlog_events.inc;
|
||||||
|
|
||||||
# a proof the query is binlogged with an error
|
# a proof the query is binlogged with an error
|
||||||
|
|
||||||
--exec $MYSQL_BINLOG --start-position=98 $MYSQLTEST_VARDIR/log/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/binlog_killed_bug27571.binlog
|
--exec $MYSQL_BINLOG --start-position=106 $MYSQLTEST_VARDIR/log/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/binlog_killed_bug27571.binlog
|
||||||
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
|
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
|
||||||
eval select
|
eval select
|
||||||
(@a:=load_file("$MYSQLTEST_VARDIR/tmp/binlog_killed_bug27571.binlog"))
|
(@a:=load_file("$MYSQLTEST_VARDIR/tmp/binlog_killed_bug27571.binlog"))
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
-- source include/have_binlog_format_mixed_or_statement.inc
|
||||||
#
|
#
|
||||||
# bug#27571 asynchronous setting mysql_$query()'s local error and
|
# bug#27571 asynchronous setting mysql_$query()'s local error and
|
||||||
# Query_log_event::error_code
|
# Query_log_event::error_code
|
||||||
@ -18,8 +19,10 @@ reset master;
|
|||||||
update t1 set a=2 /* will be "killed" after work has been done */;
|
update t1 set a=2 /* will be "killed" after work has been done */;
|
||||||
|
|
||||||
# a proof the query is binlogged with no error
|
# a proof the query is binlogged with no error
|
||||||
|
#todo: introduce a suite private macro that provides numeric values
|
||||||
--exec $MYSQL_BINLOG --start-position=98 $MYSQLTEST_VARDIR/log/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/binlog_killed_bug27571.binlog
|
# for some constants like the offset of the first real event
|
||||||
|
# that is different between severs versions.
|
||||||
|
--exec $MYSQL_BINLOG --start-position=106 $MYSQLTEST_VARDIR/log/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/binlog_killed_bug27571.binlog
|
||||||
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
|
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
|
||||||
eval select
|
eval select
|
||||||
(@a:=load_file("$MYSQLTEST_VARDIR/tmp/binlog_killed_bug27571.binlog"))
|
(@a:=load_file("$MYSQLTEST_VARDIR/tmp/binlog_killed_bug27571.binlog"))
|
@ -1 +0,0 @@
|
|||||||
--loose-debug=d,stop_after_row_loop_done
|
|
@ -1,68 +0,0 @@
|
|||||||
--source include/have_innodb.inc
|
|
||||||
--source include/not_embedded.inc
|
|
||||||
--source include/have_log_bin.inc
|
|
||||||
|
|
||||||
#
|
|
||||||
# bug#27571 asynchronous setting mysql_`query`::error and Query_log_e::error_code
|
|
||||||
#
|
|
||||||
# Checking that if killing happens inbetween of the end of rows loop and
|
|
||||||
# recording into binlog that will not lead to recording any error incl
|
|
||||||
# the killed error.
|
|
||||||
#
|
|
||||||
|
|
||||||
connect (looser, localhost, root,,);
|
|
||||||
connect (killer, localhost, root,,);
|
|
||||||
|
|
||||||
create table t1 (a int auto_increment, b int, PRIMARY KEY (a)) ENGINE=InnoDB;
|
|
||||||
|
|
||||||
delete from t1;
|
|
||||||
insert into t1 values (1,1),(2,2);
|
|
||||||
reset master;
|
|
||||||
|
|
||||||
connection looser;
|
|
||||||
let $ID= `select connection_id()`;
|
|
||||||
send update t1 set b=11 where a=2;
|
|
||||||
|
|
||||||
connection killer;
|
|
||||||
sleep 1; # let 1 second for the update to get to the sleeping point
|
|
||||||
--replace_result $ID ID
|
|
||||||
eval kill query $ID;
|
|
||||||
|
|
||||||
connection looser;
|
|
||||||
--error 0 # zero even though the query must be got killed while it was sleepin for 5 secs
|
|
||||||
reap;
|
|
||||||
|
|
||||||
#
|
|
||||||
# this is another possible artifact. The killed error was not caught
|
|
||||||
# as that is logical as killing was not effective:
|
|
||||||
# data are ok and well as binlog event is without killed error (further).
|
|
||||||
# The reason of the following `show error' is to prove that
|
|
||||||
# killing simulation was effective
|
|
||||||
#
|
|
||||||
show errors;
|
|
||||||
|
|
||||||
connection killer;
|
|
||||||
|
|
||||||
# nothing is rolled back
|
|
||||||
|
|
||||||
select * from t1 where a=2 /* must be 11 */;
|
|
||||||
|
|
||||||
# a proof the query is binlogged with an error
|
|
||||||
|
|
||||||
--exec $MYSQL_BINLOG --start-position=98 $MYSQLTEST_VARDIR/log/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/binlog_killed_bug27571.binlog
|
|
||||||
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
|
|
||||||
eval select
|
|
||||||
(@a:=load_file("$MYSQLTEST_VARDIR/tmp/binlog_killed_bug27571.binlog"))
|
|
||||||
is not null;
|
|
||||||
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
|
|
||||||
let $error_code= `select @a like "%#%error_code=0%"`;
|
|
||||||
|
|
||||||
eval select $error_code /* must return 1*/;
|
|
||||||
|
|
||||||
#
|
|
||||||
# cleanup
|
|
||||||
#
|
|
||||||
|
|
||||||
drop table t1;
|
|
||||||
|
|
||||||
--echo end of the tests
|
|
Reference in New Issue
Block a user