mirror of
https://github.com/MariaDB/server.git
synced 2025-04-29 21:37:04 +03:00
field does not work Fix to prevent MyISAM from reading data from NULL BLOB. Fix to make record comparison independent of values of unused bits in record. Updating binlog positions in tests. mysql-test/extra/rpl_tests/rpl_multi_query.test: Binlog position change mysql-test/extra/rpl_tests/rpl_stm_charset.test: Binlog position change mysql-test/include/show_binlog_events.inc: Binlog position change mysql-test/r/binlog_stm_binlog.result: Result change mysql-test/r/binlog_stm_ctype_ucs.result: Result change mysql-test/r/binlog_stm_insert_select.result: Result change mysql-test/r/binlog_stm_mix_innodb_myisam.result: Result change mysql-test/r/ctype_cp932_binlog_stm.result: Result change mysql-test/r/ndb_binlog_multi.result: Result change mysql-test/r/rpl_known_bugs_detection.result: Result change mysql-test/r/rpl_loaddata.result: Result change mysql-test/r/rpl_loaddata_s.result: Result change mysql-test/r/rpl_ndb_charset.result: Result change mysql-test/r/rpl_ndb_extraCol.result: Result change mysql-test/r/rpl_ndb_log.result: Result change mysql-test/r/rpl_ndb_multi.result: Result change mysql-test/r/rpl_rbr_to_sbr.result: Result change mysql-test/r/rpl_rotate_logs.result: Result change mysql-test/r/rpl_sp.result: Result change mysql-test/r/rpl_stm_charset.result: Result change mysql-test/r/rpl_stm_flsh_tbls.result: Result change mysql-test/r/rpl_stm_log.result: Result change mysql-test/r/rpl_stm_max_relay_size.result: Result change mysql-test/r/rpl_stm_multi_query.result: Result change mysql-test/r/rpl_stm_reset_slave.result: Result change mysql-test/r/rpl_stm_until.result: Result change mysql-test/r/rpl_truncate_7ndb.result: Result change mysql-test/r/user_var-binlog.result: Result change mysql-test/t/binlog_stm_mix_innodb_myisam.test: Binlog position change mysql-test/t/ctype_cp932_binlog_stm.test: Binlog position change mysql-test/t/mysqlbinlog.test: Binlog position change mysql-test/t/mysqlbinlog2.test: Binlog position change mysql-test/t/rpl_sp.test: Binlog position change mysql-test/t/rpl_stm_flsh_tbls.test: Binlog position change sql/log_event.cc: Emptying the record entirely since it appears MyISAM reads blob column data even when they are NULL. Adding code to set unused bits of the records before doing a comparison, and restoring the original values after. Setting the unused bits is necessary since NDB does not set them correctly, and resetting them afterwards is needed because MyISAM compares the record with the one located when updating or deleting it. mysql-test/r/rpl_row_basic_11bugs-master.opt: New BitKeeper file ``mysql-test/r/rpl_row_basic_11bugs-master.opt'' mysql-test/r/rpl_row_basic_11bugs-slave.opt: New BitKeeper file ``mysql-test/r/rpl_row_basic_11bugs-slave.opt''
231 lines
8.1 KiB
Plaintext
231 lines
8.1 KiB
Plaintext
# We are using .opt file since we need small binlog size
|
||
# TODO: Need to look at making a row based version once the new row based client is completed. [jbm]
|
||
-- source include/have_binlog_format_mixed_or_statement.inc
|
||
|
||
# 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,t3,t4,t5,t03,t04;
|
||
--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=238 $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=238 --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
|
||
drop table t1,t2;
|
||
|
||
#
|
||
# 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;
|
||
--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;
|
||
drop table t3,t4,t03,t04;
|
||
|
||
#
|
||
#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 `<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>`'
|
||
|
||
# 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.
|
||
flush logs;
|
||
--exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000006 | $MYSQL
|
||
select * from t5 /* must be (1),(1) */;
|
||
drop table t5;
|
||
|
||
#
|
||
# Bug#22645 LC_TIME_NAMES: Statement not replicated
|
||
# Check that a dump created by mysqlbinlog reproduces
|
||
# lc_time_names dependent values correctly
|
||
#
|
||
flush logs;
|
||
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.000008 | $MYSQL
|
||
select * from t5 order by c1;
|
||
drop table t5;
|
||
|
||
#
|
||
# 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.000010
|
||
--exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000010 | $MYSQL
|
||
call p1();
|
||
drop procedure p1;
|
||
|
||
#
|
||
# Some coverage of not normally used parts
|
||
#
|
||
--disable_query_log
|
||
--exec $MYSQL_BINLOG --version 2>&1 > /dev/null
|
||
--exec $MYSQL_BINLOG --help 2>&1 > /dev/null
|
||
--enable_query_log
|
||
|
||
#
|
||
# Bug#15126 character_set_database is not replicated
|
||
# (LOAD DATA INFILE need it)
|
||
#
|
||
|
||
flush logs;
|
||
create table t1 (a varchar(64) character set utf8);
|
||
load data infile '../std_data_ln/loaddata6.dat' into table t1;
|
||
set character_set_database=koi8r;
|
||
load data infile '../std_data_ln/loaddata6.dat' into table t1;
|
||
set character_set_database=latin1;
|
||
load data infile '../std_data_ln/loaddata6.dat' into table t1;
|
||
load data infile '../std_data_ln/loaddata6.dat' into table t1;
|
||
set character_set_database=koi8r;
|
||
load data infile '../std_data_ln/loaddata6.dat' into table t1;
|
||
set character_set_database=latin1;
|
||
load data infile '../std_data_ln/loaddata6.dat' into table t1;
|
||
load data infile '../std_data_ln/loaddata6.dat' into table t1 character set koi8r;
|
||
select hex(a) from t1;
|
||
drop table t1;
|
||
flush logs;
|
||
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
|
||
--exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000012
|
||
|
||
# End of 5.0 tests
|
||
|
||
#
|
||
# Test --disable-force-if-open and --force-if-open
|
||
#
|
||
flush logs;
|
||
--error 1
|
||
--exec $MYSQL_BINLOG $MYSQLTEST_VARDIR/log/master-bin.000014 >/dev/null 2>/dev/null
|
||
--exec $MYSQL_BINLOG --force-if-open $MYSQLTEST_VARDIR/log/master-bin.000014 >/dev/null 2>/dev/null
|
||
|
||
# End of 5.1 tests
|