2003-09-24 23:25:58 +04:00
# We are using .opt file since we need small binlog size
2005-03-29 17:17:46 -08:00
# Embedded server doesn't support binlogging
-- source include/not_embedded.inc
2003-09-24 23:25:58 +04:00
# we need this for getting fixed timestamps inside of this test
set timestamp=1000000000;
2004-06-09 16:07:01 +02:00
--disable_warnings
drop table if exists t1,t2;
--enable_warnings
2003-09-24 23:25:58 +04:00
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.
#
2003-09-29 12:31:35 +03:00
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
2006-07-24 18:12:57 +02:00
--exec $MYSQL_BINLOG --short-form --local-load=$MYSQL_TEST_DIR/var/tmp/ $MYSQL_TEST_DIR/var/log/master-bin.000001
2003-09-29 23:10:30 +04:00
2003-09-24 23:25:58 +04:00
# this should not fail but shouldn't produce any working statements
--disable_query_log
select "--- Broken LOAD DATA --" as "";
--enable_query_log
2003-09-29 23:10:30 +04:00
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
2006-07-24 18:12:57 +02:00
--exec $MYSQL_BINLOG --short-form --local-load=$MYSQL_TEST_DIR/var/tmp/ $MYSQL_TEST_DIR/var/log/master-bin.000002 2> /dev/null
2003-09-24 23:25:58 +04:00
# this should show almost nothing
--disable_query_log
select "--- --database --" as "";
--enable_query_log
2003-09-29 12:31:35 +03:00
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
2006-07-24 18:12:57 +02:00
--exec $MYSQL_BINLOG --short-form --local-load=$MYSQL_TEST_DIR/var/tmp/ --database=nottest $MYSQL_TEST_DIR/var/log/master-bin.000001 2> /dev/null
2003-09-24 23:25:58 +04:00
# this test for position option
--disable_query_log
select "--- --position --" as "";
--enable_query_log
2003-09-29 12:31:35 +03:00
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
2003-10-16 03:08:40 +03:00
--exec $MYSQL_BINLOG --short-form --local-load=$MYSQL_TEST_DIR/var/tmp/ --position=27 $MYSQL_TEST_DIR/var/log/master-bin.000002
2003-09-24 23:25:58 +04:00
# 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
2003-09-29 23:10:30 +04:00
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
2003-10-16 03:08:40 +03:00
--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
2003-09-24 23:25:58 +04:00
# This is broken too
--disable_query_log
select "--- Broken LOAD DATA --" as "";
--enable_query_log
2003-09-29 23:10:30 +04:00
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
2006-07-24 18:12:57 +02:00
--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 2> /dev/null
2003-09-24 23:25:58 +04:00
# And this too ! (altough it is documented)
--disable_query_log
select "--- --database --" as "";
--enable_query_log
2003-09-29 23:10:30 +04:00
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
2006-07-24 18:12:57 +02:00
--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 2> /dev/null
2003-09-24 23:25:58 +04:00
# Strangely but this works
--disable_query_log
select "--- --position --" as "";
--enable_query_log
2003-09-29 23:10:30 +04:00
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
2003-10-16 03:08:40 +03:00
--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
2003-09-24 23:25:58 +04:00
2006-02-10 15:12:27 +02:00
# 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'<27> \');"
flush logs;
rename table t3 to t03, t4 to t04;
2006-07-26 11:08:15 +02:00
--exec $MYSQL_BINLOG --short-form $MYSQL_TEST_DIR/var/log/master-bin.000004 > $MYSQL_TEST_DIR/var/tmp/bug16217.sql
--exec $MYSQL --default-character-set=utf8 < $MYSQL_TEST_DIR/var/tmp/bug16217.sql
2006-02-10 15:12:27 +02:00
# 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;
2006-05-09 23:01:31 +03:00
#
2006-05-28 19:47:01 +03:00
#BUG#14157: utf8 encoding in binlog without set character_set_client
2006-05-09 23:01:31 +03:00
#
flush logs;
2006-05-28 19:47:01 +03:00
--exec $MYSQL test -e 'create table if not exists t5 (a int); set names latin1; create temporary table `<60> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ` (a int); insert into `<60> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ` values (1); insert into t5 select * from `<60> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> `'
2006-05-09 23:01:31 +03:00
2006-05-20 12:34:56 +03:00
# 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.
2006-07-26 11:08:15 +02:00
--exec $MYSQL_BINLOG --short-form $MYSQL_TEST_DIR/var/log/master-bin.000006 > $MYSQL_TEST_DIR/var/tmp/bug14157.sql
--exec $MYSQL < $MYSQL_TEST_DIR/var/tmp/bug14157.sql
2006-05-09 23:01:31 +03:00
select * from t5 /* must be (1),(1) */;
2006-02-10 15:12:27 +02:00
2003-09-24 23:25:58 +04:00
# clean up
2006-05-09 23:01:31 +03:00
drop table t1, t2, t03, t04, t3, t4, t5;
2005-07-28 03:22:47 +03:00
# End of 4.1 tests
2006-07-24 18:12:57 +02:00