diff options
author | guilhem@mysql.com <> | 2003-05-15 18:35:39 +0200 |
---|---|---|
committer | guilhem@mysql.com <> | 2003-05-15 18:35:39 +0200 |
commit | 4a0e006230a1a8f05d10bdc538e7796be2c9e5e6 (patch) | |
tree | 67d58f120ff62e57e109c20e887b75ad2ce0c104 /mysql-test | |
parent | da0e28b7d6f7a1f1c26c22327a2217ee2a23c82d (diff) | |
download | mariadb-git-4a0e006230a1a8f05d10bdc538e7796be2c9e5e6.tar.gz |
Scrum task 845. Thi is a behaviour change :
now by default, FLUSH, OPTIMIZE, ANALYZE, REPAIR commands are written to the
binlog, unless the new NO_WRITE_TO_BINLOG keyword was used :
OPTIMIZE NO_WRITE_TO_BINLOG table t;
Previously these commands were never written to the binlog, but there are
2 reasons to change this :
- the RENAME TABLE in MERGE table bug (#175) on slave
- the possible "differently optimised queries may lead to different
updates on the master and slave" bug, until we have automatic ORDER BY.
FLUSH LOGS/SLAVE/MASTER/TABLES WITH READ LOCK are never written to the binlog.
New test for the new logging behaviour.
Other small change : reload_acl_and_cache() and reset_slave() don't send their errors themselves,
this is more usual.
Diffstat (limited to 'mysql-test')
-rw-r--r-- | mysql-test/mysql-test-run.sh | 4 | ||||
-rw-r--r-- | mysql-test/r/rpl_flush_tables.result | 40 | ||||
-rw-r--r-- | mysql-test/t/rpl_flush_tables.test | 33 |
3 files changed, 76 insertions, 1 deletions
diff --git a/mysql-test/mysql-test-run.sh b/mysql-test/mysql-test-run.sh index 8e0490f441e..a3343b8e019 100644 --- a/mysql-test/mysql-test-run.sh +++ b/mysql-test/mysql-test-run.sh @@ -625,7 +625,9 @@ report_stats () { $RM -f $MY_LOG_DIR/warnings $MY_LOG_DIR/warnings.tmp # Remove some non fatal warnings from the log files $SED -e 's!Warning: Table:.* on delete!!g' \ - $MY_LOG_DIR/*.err > $MY_LOG_DIR/warnings.tmp + $MY_LOG_DIR/*.err \ + | $SED -e 's!Warning: Table:.* on rename!!g' \ + > $MY_LOG_DIR/warnings.tmp found_error=0 # Find errors diff --git a/mysql-test/r/rpl_flush_tables.result b/mysql-test/r/rpl_flush_tables.result new file mode 100644 index 00000000000..7eb3b77758e --- /dev/null +++ b/mysql-test/r/rpl_flush_tables.result @@ -0,0 +1,40 @@ +stop slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +reset master; +reset slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +start slave; +create table t1 (a int); +insert into t1 values (10); +create table t2 (a int); +create table t3 (a int) type=merge union(t1); +create table t4 (a int); +insert into t4 select * from t3; +rename table t1 to t5, t2 to t1; +flush no_write_to_binlog tables; +show binlog events; +Log_name Pos Event_type Server_id Orig_log_pos Info +master-bin.000001 4 Start 1 4 Server ver: 4.1.1-alpha-debug-log, Binlog ver: 3 +master-bin.000001 79 Query 1 79 use `test`; create table t1 (a int) +master-bin.000001 137 Query 1 137 use `test`; insert into t1 values (10) +master-bin.000001 198 Query 1 198 use `test`; create table t2 (a int) +master-bin.000001 256 Query 1 256 use `test`; create table t3 (a int) type=merge union(t1) +master-bin.000001 335 Query 1 335 use `test`; create table t4 (a int) +master-bin.000001 393 Query 1 393 use `test`; insert into t4 select * from t3 +master-bin.000001 459 Query 1 459 use `test`; rename table t1 to t5, t2 to t1 +select * from t3; +a +flush tables; +show binlog events; +Log_name Pos Event_type Server_id Orig_log_pos Info +master-bin.000001 4 Start 1 4 Server ver: 4.1.1-alpha-debug-log, Binlog ver: 3 +master-bin.000001 79 Query 1 79 use `test`; create table t1 (a int) +master-bin.000001 137 Query 1 137 use `test`; insert into t1 values (10) +master-bin.000001 198 Query 1 198 use `test`; create table t2 (a int) +master-bin.000001 256 Query 1 256 use `test`; create table t3 (a int) type=merge union(t1) +master-bin.000001 335 Query 1 335 use `test`; create table t4 (a int) +master-bin.000001 393 Query 1 393 use `test`; insert into t4 select * from t3 +master-bin.000001 459 Query 1 459 use `test`; rename table t1 to t5, t2 to t1 +master-bin.000001 525 Query 1 525 use `test`; flush tables +select * from t3; +a diff --git a/mysql-test/t/rpl_flush_tables.test b/mysql-test/t/rpl_flush_tables.test new file mode 100644 index 00000000000..e62ba2e94c7 --- /dev/null +++ b/mysql-test/t/rpl_flush_tables.test @@ -0,0 +1,33 @@ +# +# Test of replicating FLUSH TABLES to make +# RENAME TABLE work with MERGE tables on the slave. +# Test of FLUSH NO_WRITE_TO_BINLOG by the way. +# +source include/master-slave.inc; + +create table t1 (a int); +insert into t1 values (10); +create table t2 (a int); +create table t3 (a int) type=merge union(t1); +create table t4 (a int); +# We force the slave to open t3 (because we want to try confusing him) with this : +insert into t4 select * from t3; +rename table t1 to t5, t2 to t1; +# RENAME may have confused the master (this is a known bug): so FLUSH tables, +# first don't write it to the binlog, to test the NO_WRITE_TO_BINLOG keyword. +flush no_write_to_binlog tables; +# Check that it's not in the binlog. +show binlog events; +# Check that the master is not confused. +select * from t3; +# This FLUSH should go into the binlog to not confuse the slave. +flush tables; +# Check that it's in the binlog. +show binlog events; +save_master_pos; +connection slave; +sync_with_master; +# Check that the slave is not confused. +select * from t3; +# Note that all this confusion may cause warnings 'table xx is open on rename' +# in the .err files; these are not fatal and are not reported by mysql-test-run. |