# We are using .opt file since we need small binlog size # Embedded server doesn't support binlogging -- source include/not_embedded.inc # we need this for getting fixed timestamps inside of this test set timestamp=1000000000; --disable_warnings drop table if exists t1,t2; --enable_warnings 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_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; # 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. # --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR --exec $MYSQL_BINLOG --short-form --local-load=$MYSQLTEST_VARDIR/tmp/ $MYSQLTEST_VARDIR/log/master-bin.000001 # this should not fail but shouldn't produce any working statements --disable_query_log select "--- Broken LOAD DATA --" as ""; --enable_query_log --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR --exec $MYSQL_BINLOG --short-form --local-load=$MYSQLTEST_VARDIR/tmp/ $MYSQLTEST_VARDIR/log/master-bin.000002 2> /dev/null # this should show almost nothing --disable_query_log select "--- --database --" as ""; --enable_query_log --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR --exec $MYSQL_BINLOG --short-form --local-load=$MYSQLTEST_VARDIR/tmp/ --database=nottest $MYSQLTEST_VARDIR/log/master-bin.000001 2> /dev/null # this test for position option --disable_query_log select "--- --position --" as ""; --enable_query_log --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR --exec $MYSQL_BINLOG --short-form --local-load=$MYSQLTEST_VARDIR/tmp/ --position=231 $MYSQLTEST_VARDIR/log/master-bin.000002 # 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 --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 # This is broken too --disable_query_log select "--- Broken LOAD DATA --" as ""; --enable_query_log --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 2> /dev/null # And this too ! (altough it is documented) --disable_query_log select "--- --database --" as ""; --enable_query_log --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 2> /dev/null # Strangely but this works --disable_query_log select "--- --position --" as ""; --enable_query_log --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR --exec $MYSQL_BINLOG --short-form --local-load=$MYSQLTEST_VARDIR/tmp/ --read-from-remote-server --position=231 --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000002 # 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 --exec $MYSQL_BINLOG --short-form - < $MYSQL_TEST_DIR/std_data/trunc_binlog.000001 --replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR --exec $MYSQL_BINLOG --short-form --position=79 - < $MYSQL_TEST_DIR/std_data/trunc_binlog.000001 # 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; # #BUG#14157: utf8 encoding in binlog without set character_set_client # flush logs; --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 `������`' # 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 $MYSQLTEST_VARDIR/log/master-bin.000006 | $MYSQL select * from t5 /* must be (1),(1) */; # # Bug#22645 LC_TIME_NAMES: Statement not replicated # Check that a dump created by mysqlbinlog reproduces # lc_time_names dependent values correctly # flush logs; drop table if exists t5; create table t5 (c1 int, c2 varchar(128) character set latin1 not null); insert into t5 values (1, date_format('2001-01-01','%W')); set lc_time_names=de_DE; insert into t5 values (2, date_format('2001-01-01','%W')); set lc_time_names=en_US; insert into t5 values (3, date_format('2001-01-01','%W')); select * from t5 order by c1; flush logs; drop table t5; --exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000007 | $MYSQL select * from t5 order by c1; # # Bug#20396 Bin Log does not get DELIMETER cmd - Recover StoredProc fails # --disable_warnings drop procedure if exists p1; --enable_warnings flush logs; delimiter //; create procedure p1() begin select 1; end; // delimiter ;// flush logs; call p1(); drop procedure p1; --error 1305 call p1(); --exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000009 --exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000009 | $MYSQL call p1(); drop procedure p1; # clean up drop table t1, t2, t03, t04, t3, t4, t5; # End of 5.0 tests