mysqlbinlog.test 5.01 KB
Newer Older
dlenev@mysql.com's avatar
dlenev@mysql.com committed
1 2
# We are using .opt file since we need small binlog size

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

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

9 10 11 12
--disable_warnings
drop table if exists t1,t2;
--enable_warnings

dlenev@mysql.com's avatar
dlenev@mysql.com committed
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
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)
load data infile '../../std_data/words.dat' into table t1;
load data infile '../../std_data/words.dat' into table t1;
load data infile '../../std_data/words.dat' into table t1;
load data infile '../../std_data/words.dat' into table t1;
load data infile '../../std_data/words.dat' into table t1;
load data infile '../../std_data/words.dat' into table t1;
# 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.
#

45
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
monty@mashka.mysql.fi's avatar
monty@mashka.mysql.fi committed
46
--exec $MYSQL_BINLOG --short-form --local-load=$MYSQL_TEST_DIR/var/tmp/ $MYSQL_TEST_DIR/var/log/master-bin.000001 
47

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

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

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

# 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
77
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
monty@mashka.mysql.fi's avatar
monty@mashka.mysql.fi committed
78
--exec $MYSQL_BINLOG --short-form --local-load=$MYSQL_TEST_DIR/var/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
79 80 81 82 83

# This is broken too
--disable_query_log
select "--- Broken LOAD DATA --" as "";
--enable_query_log
84
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
monty@mashka.mysql.fi's avatar
monty@mashka.mysql.fi committed
85
--exec $MYSQL_BINLOG --short-form --local-load=$MYSQL_TEST_DIR/var/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
86 87 88 89 90

# And this too ! (altough it is documented)
--disable_query_log
select "--- --database --" as "";
--enable_query_log
91
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
monty@mashka.mysql.fi's avatar
monty@mashka.mysql.fi committed
92
--exec $MYSQL_BINLOG --short-form --local-load=$MYSQL_TEST_DIR/var/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
93 94 95 96 97

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

101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116

# 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 $MYSQL_TEST_DIR/var/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;

117 118 119 120
#
#14157: utf8 encoding in binlog without set character_set_client
#
flush logs;
121
--exec $MYSQL test -e 'create table if not exists t5 (a int); set names koi8r; create temporary table `` (a int); insert into `` values (1); insert into t5 select * from ``'
122

123 124 125 126
# 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.
--exec $MYSQL_BINLOG --short-form $MYSQL_TEST_DIR/var/log/master-bin.000006 | $MYSQL
127
select * from t5  /* must be (1),(1) */;
128

dlenev@mysql.com's avatar
dlenev@mysql.com committed
129
# clean up
130
drop table t1, t2, t03, t04, t3, t4, t5; 
131 132

# End of 4.1 tests