mysqlbinlog.test 5.52 KB
Newer Older
dlenev@mysql.com's avatar
dlenev@mysql.com committed
1
# We are using .opt file since we need small binlog size
2
# TODO: Need to look at making a row based version once the new row based client is completed. [jbm]
3
-- source include/have_binlog_format_mixed_or_statement.inc
dlenev@mysql.com's avatar
dlenev@mysql.com committed
4

5 6 7
# Embedded server doesn't support binlogging
-- source include/not_embedded.inc

dlenev@mysql.com's avatar
dlenev@mysql.com committed
8 9 10
# we need this for getting fixed timestamps inside of this test
set timestamp=1000000000;

11 12 13 14
--disable_warnings
drop table if exists t1,t2;
--enable_warnings

dlenev@mysql.com's avatar
dlenev@mysql.com committed
15 16 17 18 19 20 21 22 23 24 25 26
create table t1 (word varchar(20));
create table t2 (id int auto_increment not null primary key);

# simple test for simple statement and various events
insert into t1 values ("abirvalg");
insert into t2 values ();
# Should be uncommented in 4.1
# set @a:=1
# insert into t2 values (@a);

# test for load data and load data distributed among the several 
# files (we need to fill up first binlog)
27 28 29 30 31
load data infile '../std_data_ln/words.dat' into table t1;
load data infile '../std_data_ln/words.dat' into table t1;
load data infile '../std_data_ln/words.dat' into table t1;
load data infile '../std_data_ln/words.dat' into table t1;
load data infile '../std_data_ln/words.dat' into table t1;
dlenev@mysql.com's avatar
dlenev@mysql.com committed
32 33 34 35 36 37 38 39 40 41 42 43 44 45
# simple query to show more in second binlog
insert into t1 values ("Alas");
flush logs;

# delimiters are for easier debugging in future
--disable_query_log
select "--- Local --" as "";
--enable_query_log

#
# We should use --short-form everywhere because in other case output will
# be time dependend. Better than nothing.
#

46 47
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
--exec $MYSQL_BINLOG --short-form --local-load=$MYSQLTEST_VARDIR/tmp/ $MYSQLTEST_VARDIR/log/master-bin.000001 
48

dlenev@mysql.com's avatar
dlenev@mysql.com committed
49 50 51 52
# this should not fail but shouldn't produce any working statements
--disable_query_log
select "--- Broken LOAD DATA --" as "";
--enable_query_log
53 54
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
--exec $MYSQL_BINLOG --short-form --local-load=$MYSQLTEST_VARDIR/tmp/ $MYSQLTEST_VARDIR/log/master-bin.000002
dlenev@mysql.com's avatar
dlenev@mysql.com committed
55 56 57 58 59

# this should show almost nothing
--disable_query_log
select "--- --database --" as "";
--enable_query_log
60 61
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
--exec $MYSQL_BINLOG --short-form --local-load=$MYSQLTEST_VARDIR/tmp/ --database=nottest $MYSQLTEST_VARDIR/log/master-bin.000001
dlenev@mysql.com's avatar
dlenev@mysql.com committed
62 63 64 65 66

# this test for position option
--disable_query_log
select "--- --position --" as "";
--enable_query_log
67
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
68
--exec $MYSQL_BINLOG --short-form --local-load=$MYSQLTEST_VARDIR/tmp/ --position=235 $MYSQLTEST_VARDIR/log/master-bin.000002
dlenev@mysql.com's avatar
dlenev@mysql.com committed
69 70 71 72 73 74 75 76 77

# These are tests for remote binlog.
# They should return the same as previous test.

--disable_query_log
select "--- Remote --" as "";
--enable_query_log

# This is broken now
78 79
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
--exec $MYSQL_BINLOG --short-form --local-load=$MYSQLTEST_VARDIR/tmp/ --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001
dlenev@mysql.com's avatar
dlenev@mysql.com committed
80 81 82 83 84

# This is broken too
--disable_query_log
select "--- Broken LOAD DATA --" as "";
--enable_query_log
85 86
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
--exec $MYSQL_BINLOG --short-form --local-load=$MYSQLTEST_VARDIR/tmp/ --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000002
dlenev@mysql.com's avatar
dlenev@mysql.com committed
87 88 89 90 91

# And this too ! (altough it is documented)
--disable_query_log
select "--- --database --" as "";
--enable_query_log
92 93
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
--exec $MYSQL_BINLOG --short-form --local-load=$MYSQLTEST_VARDIR/tmp/ --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT --database=nottest master-bin.000001
dlenev@mysql.com's avatar
dlenev@mysql.com committed
94 95 96 97 98

# Strangely but this works
--disable_query_log
select "--- --position --" as "";
--enable_query_log
99
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
100
--exec $MYSQL_BINLOG --short-form --local-load=$MYSQLTEST_VARDIR/tmp/ --read-from-remote-server --position=235 --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000002
dlenev@mysql.com's avatar
dlenev@mysql.com committed
101

102 103 104 105 106
# Bug#7853 (mysqlbinlog does not accept input from stdin)
--disable_query_log
select "--- reading stdin --" as "";
--enable_query_log
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
kent@mysql.com's avatar
kent@mysql.com committed
107
--exec $MYSQL_BINLOG --short-form - < $MYSQL_TEST_DIR/std_data/trunc_binlog.000001
108 109

--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
kent@mysql.com's avatar
kent@mysql.com committed
110
--exec $MYSQL_BINLOG --short-form --position=79 - < $MYSQL_TEST_DIR/std_data/trunc_binlog.000001
111

112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
# Bug#16217 (mysql client did not know how not switch its internal charset)
flush logs;
create table t3 (f text character set utf8);
create table t4 (f text character set cp932); 
--exec $MYSQL --default-character-set=utf8 test -e "insert into t3 values(_utf8'ソ')"
--exec $MYSQL --default-character-set=cp932 test -e "insert into t4 values(_cp932'\');"
flush logs;
rename table t3 to t03, t4 to t04;
--exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000004 | $MYSQL --default-character-set=utf8
# original and recovered data must be equal
select HEX(f) from t03;
select HEX(f) from t3;
select HEX(f) from t04;
select HEX(f) from t4;

127
#
128
#BUG#14157: utf8 encoding in binlog without set character_set_client
129 130
#
flush logs;
131
--exec $MYSQL test -e 'create table if not exists t5 (a int); set names latin1; create temporary table `` (a int); insert into `` values (1); insert into t5 select * from ``'
132

133 134 135
# resulted binlog, parly consisting of multi-byte utf8 chars, 
# must be digestable for both client and server. In 4.1 the client 
# should use default-character-set same as the server.
136
--exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000006 | $MYSQL
137
select * from t5  /* must be (1),(1) */;
138

dlenev@mysql.com's avatar
dlenev@mysql.com committed
139
# clean up
140
drop table t1, t2, t03, t04, t3, t4, t5; 
serg@serg.mylan's avatar
serg@serg.mylan committed
141

142
# End of 5.0 tests