mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 13:02:28 +01:00
930e542f44
The following is an excerption from the WL. 1. Change so that MIXED is default format 1.1 to change the default for command line --binlog-format 1.2 to alter global_system_variables.binlog_format calculation basing on command line --binlog-format parameter and its default. 2. Change test suite so that more testing is done by MIXED format. 2.1 to check if there are test cases requiring --binlog-foramt=statement via `source include/have_binlog_format_statement.inc' and affected by altering the latter to be "mixed". 2.2 to check the content of such vulnerable cases to find if extending to the mixed does not modify results. In that case simply substitute source arguments as explained. 2.3 if a test in mixed mode deals with features triggering row-binlogging then if necessary we can switch explicitly to statement mode or create another test to run with non-recommended STATEMENT mode Particullarily, extracting INSERT DELAYED binlogging subtest for statement mode is performed, and the snippet is moved into a separate test file. Note that since now all three modes verify this use case through 3 different tests. No changes in item 3 of HLD appeared to be needed. mysql-test/extra/binlog_tests/binlog.test: Moving INSERT DELAYED verification section into separate file. The latter is sourced from two different files: the current one and a newly created for STATEMENT mode check. mysql-test/extra/rpl_tests/rpl_loaddata.test: require mixed_or_statement mysql-test/extra/rpl_tests/rpl_stm_000001.test: require mixed_or_statement mysql-test/extra/rpl_tests/rpl_stm_charset.test: require mixed_or_statement mysql-test/r/binlog_stm_binlog.result: new result to correspond to MIXED mode. mysql-test/r/rpl_rbr_to_sbr.result: result changed mysql-test/t/archive.test: require mixed_or_statement mysql-test/t/binlog_stm_binlog.test: require exclusive mixed format because of INSERT DELAYED. mysql-test/t/binlog_stm_blackhole.test: require mixed_or_statement mysql-test/t/binlog_stm_ctype_cp932.test: require mixed_or_statement mysql-test/t/binlog_stm_ctype_ucs.test: require mixed_or_statement mysql-test/t/binlog_stm_drop_tmp_tbl.test: require mixed_or_statement mysql-test/t/binlog_stm_innodb_stat.test: require mixed_or_statement mysql-test/t/binlog_stm_insert_select.test: require mixed_or_statement mysql-test/t/binlog_stm_mix_innodb_myisam.test: require mixed_or_statement mysql-test/t/create_select_tmp.test: require mixed_or_statement mysql-test/t/ctype_cp932_binlog_stm.test: require mixed_or_statement mysql-test/t/date_formats.test: MIXED case appended to the replace instruction mysql-test/t/mysqlbinlog.test: require mixed_or_statement mysql-test/t/mysqlbinlog2.test: require mixed_or_statement mysql-test/t/ndb_multi.test: require mixed_or_statement mysql-test/t/rpl000013.test: require mixed_or_statement mysql-test/t/rpl_heap.test: require mixed_or_statement mysql-test/t/rpl_loaddata_s.test: require mixed_or_statement mysql-test/t/rpl_mixed_ddl_dml.test: require mixed_or_statement mysql-test/t/rpl_rbr_to_sbr.test: Rather meaningless line is discarded. The test does not loose anything without it and without considering the WL. mysql-test/t/rpl_rewrt_db.test: require mixed_or_statement mysql-test/t/rpl_rotate_logs.test: require mixed_or_statement mysql-test/t/rpl_stm_EE_err2.test: require mixed_or_statement mysql-test/t/rpl_stm_flsh_tbls.test: require mixed_or_statement mysql-test/t/rpl_stm_log.test: require mixed_or_statement mysql-test/t/rpl_stm_max_relay_size.test: require mixed_or_statement mysql-test/t/rpl_stm_multi_query.test: require mixed_or_statement mysql-test/t/rpl_stm_mystery22.test: require mixed_or_statement mysql-test/t/rpl_stm_no_op.test: require mixed_or_statement mysql-test/t/rpl_stm_reset_slave.test: require mixed_or_statement mysql-test/t/rpl_stm_until.test: require mixed_or_statement mysql-test/t/rpl_temp_table.test: require mixed_or_statement mysql-test/t/rpl_trigger.test: require mixed_or_statement mysql-test/t/rpl_trunc_temp.test: require mixed_or_statement mysql-test/t/user_var-binlog.test: require mixed_or_statement sql/mysqld.cc: Implementation of making BINLOG_FORMAT_MIXED to be the default of global_system_variables.binlog_format. Not in the case of embedded. mysql-test/extra/binlog_tests/binlog_insert_delayed.test: Snippend sourced from two tests to verify INSERT DELAYED in all three binlog formats. mysql-test/include/have_binlog_format_mixed.inc: Part of exclusive MIXED format requirement mysql-test/include/have_binlog_format_mixed_or_statement.inc: requirement to have mixed or statement. Most of the tests with STATEMENT format indeed are tolerant to MIXED format to yield the same result files. There are few exception because of features triggering RBR events when MIXED format. mysql-test/r/binlog_statement_insert_delayed.result: BitKeeper file /home/elkin/MySQL/TEAM/FIXES/5.1/wl3368_mixed_default/mysql-test/r/binlog_statement_insert_delayed.result mysql-test/r/have_binlog_format_mixed.require: Exclusive MIXED format mysql-test/t/binlog_statement_insert_delayed.test: BitKeeper file /home/elkin/MySQL/TEAM/FIXES/5.1/wl3368_mixed_default/mysql-test/t/binlog_statement_insert_delayed.test
93 lines
2.2 KiB
Text
93 lines
2.2 KiB
Text
# It's true only in statement-based replication that a statement which
|
|
# updates no rows (UPDATE/DELETE) is binlogged; in row-based
|
|
# replication, as we log modified rows, nothing is binlogged in this
|
|
# case. So this test is meaningul only in statement-based (and if it was
|
|
# enabled in row-based, it would fail as expected).
|
|
|
|
-- source include/have_binlog_format_mixed_or_statement.inc
|
|
|
|
source include/master-slave.inc;
|
|
|
|
# see if DROP DATABASE is binlogged even if no effect
|
|
connection slave;
|
|
create database mysqltest;
|
|
connection master;
|
|
drop database if exists mysqltest;
|
|
sync_slave_with_master;
|
|
# can't read dir
|
|
--replace_result "Errcode: 1" "Errcode: X" "Errcode: 2" "Errcode: X" \\ /
|
|
--error 1049
|
|
show tables from mysqltest;
|
|
|
|
# see if DROP TABLE is binlogged even if no effect
|
|
connection slave;
|
|
create table t1 (a int);
|
|
connection master;
|
|
drop table if exists t1;
|
|
sync_slave_with_master;
|
|
# table does not exist
|
|
--error 1146
|
|
select * from t1;
|
|
|
|
# see if single-table DELETE is binlogged even if no effect
|
|
connection master;
|
|
create table t1 (a int, b int);
|
|
sync_slave_with_master;
|
|
insert into t1 values(1,1);
|
|
connection master;
|
|
delete from t1;
|
|
sync_slave_with_master;
|
|
select * from t1;
|
|
|
|
# see if single-table UPDATE is binlogged even if no effect
|
|
insert into t1 values(1,1);
|
|
connection master;
|
|
insert into t1 values(2,1);
|
|
update t1 set a=2;
|
|
sync_slave_with_master;
|
|
select * from t1;
|
|
|
|
# End of 4.1 tests
|
|
|
|
# see if multi-table UPDATE is binlogged even if no effect (BUG#13348)
|
|
|
|
connection master;
|
|
create table t2 (a int, b int);
|
|
delete from t1;
|
|
insert into t1 values(1,1);
|
|
insert into t2 values(1,1);
|
|
|
|
sync_slave_with_master;
|
|
# force a difference to see if master's multi-UPDATE will correct it
|
|
update t1 set a=2;
|
|
|
|
connection master;
|
|
UPDATE t1, t2 SET t1.a = t2.a;
|
|
|
|
sync_slave_with_master;
|
|
select * from t1;
|
|
select * from t2;
|
|
|
|
# See if multi-table DELETE is binlogged even if no effect
|
|
|
|
connection master;
|
|
delete from t1;
|
|
delete from t2;
|
|
|
|
sync_slave_with_master;
|
|
# force a difference to see if master's multi-DELETE will correct it
|
|
insert into t1 values(1,1);
|
|
insert into t2 values(1,1);
|
|
|
|
connection master;
|
|
DELETE t1.*, t2.* from t1, t2;
|
|
|
|
sync_slave_with_master;
|
|
select * from t1;
|
|
select * from t2;
|
|
|
|
|
|
# cleanup
|
|
connection master;
|
|
drop table t1, t2;
|
|
sync_slave_with_master;
|