~drizzle-trunk/drizzle/development

1 by brian
clean slate
1
-- source include/have_debug.inc
2
-- source include/have_log_bin.inc
3
-- source include/have_binlog_format_mixed_or_statement.inc
4
#
5
# bug#27571 asynchronous setting mysql_$query()'s local error and 
6
#           Query_log_event::error_code
7
#
8
9
--disable_warnings
10
drop table if exists t1,t2;
11
--enable_warnings
12
13
#
14
#  Checking that killing upon successful row-loop does not affect binlogging
15
#
16
17
create table t1  (a int) engine=MyISAM;
18
insert into t1 set a=1;
19
reset master;
20
21
update t1 set a=2 /* will be "killed" after work has been done */;
22
23
# a proof the query is binlogged with no error
24
#todo: introduce a suite private macro that provides numeric values
25
#      for some constants like the offset of the first real event
26
#      that is different between severs versions.
27
--exec $MYSQL_BINLOG --force-if-open --start-position=107 $MYSQLTEST_VARDIR/log/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/binlog_killed_bug27571.binlog
28
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
29
eval select
30
(@a:=load_file("$MYSQLTEST_VARDIR/tmp/binlog_killed_bug27571.binlog"))
31
is not null;
32
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
33
let $error_code= `select @a like "%#%error_code=0%" /* must return 1 */`;
34
eval select $error_code /* must return 1 as query completed before got killed*/;
35
36
# cleanup for the sub-case
37
system rm $MYSQLTEST_VARDIR/tmp/binlog_killed_bug27571.binlog;
38
39
40
#
41
#  Checking that killing inside of row-loop for LOAD DATA into
42
#  non-transactional table affects binlogging
43
#
44
45
create table t2 (a int, b int) ENGINE=MyISAM;
46
reset master;
47
--error ER_QUERY_INTERRUPTED
48
load data infile '../std_data_ln/rpl_loaddata.dat' into table t2 /* will be "killed" in the middle */;
49
50
51
# a proof the query is binlogged with an error
52
53
source include/show_binlog_events.inc;
54
55
--exec $MYSQL_BINLOG --force-if-open --start-position=107 $MYSQLTEST_VARDIR/log/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/binlog_killed_bug27571.binlog
56
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
57
eval select
58
(@a:=load_file("$MYSQLTEST_VARDIR/tmp/binlog_killed_bug27571.binlog"))
59
is not null;
60
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
61
let $error_code= `select @a like "%#%error_code=0%" /* must return 0*/`;
62
eval select $error_code /* must return 0 to mean the killed query is in */;
63
64
# cleanup for the sub-case
65
system rm $MYSQLTEST_VARDIR/tmp/binlog_killed_bug27571.binlog;
66
67
68
drop table t1,t2;
69
70
--echo end of the tests