diff options
author | unknown <guilhem@mysql.com> | 2005-09-20 17:41:47 +0200 |
---|---|---|
committer | unknown <guilhem@mysql.com> | 2005-09-20 17:41:47 +0200 |
commit | 03045ee70ab6a3adf93c2a7506a3281f411d66fa (patch) | |
tree | a1843ec4af67e94bc6f5c15e3952b7ad581513a3 /mysql-test | |
parent | 2b24a2b5b57177db854cd93991afc3229f1a69cc (diff) | |
download | mariadb-git-03045ee70ab6a3adf93c2a7506a3281f411d66fa.tar.gz |
Fix fur BUG#13348: "multi-table updates and deletes are not logged if no rows were affected".
Not fixed in 4.1 as not critical. Also I'm correcting error checking of multi-UPDATE/DELETE
when it comes to binlogging, to make it consistent with when we rollback the statement.
mysql-test/r/rpl_multi_delete.result:
result update
mysql-test/r/rpl_multi_update.result:
result update
mysql-test/t/rpl_multi_delete.test:
test for BUG#13348
mysql-test/t/rpl_multi_update.test:
test of BUG#13348
sql/sql_delete.cc:
We now binlog multi-DELETE even if no row was updated (like we do for DELETE).
I'm also correcting some error checking (< instead of <=), basing myself on when we rollback.
sql/sql_update.cc:
we now binlog multi-UPDATE even if no row was updated (like we do for UPDATE).
Adding to existing tests to test new behaviour.
I'm also correcting some error checking (< instead of <=), basing myself on when we rollback.
Diffstat (limited to 'mysql-test')
-rw-r--r-- | mysql-test/r/rpl_multi_delete.result | 9 | ||||
-rw-r--r-- | mysql-test/r/rpl_multi_update.result | 13 | ||||
-rw-r--r-- | mysql-test/t/rpl_multi_delete.test | 24 | ||||
-rw-r--r-- | mysql-test/t/rpl_multi_update.test | 23 |
4 files changed, 65 insertions, 4 deletions
diff --git a/mysql-test/r/rpl_multi_delete.result b/mysql-test/r/rpl_multi_delete.result index e94a4e7947e..d2c68eee62e 100644 --- a/mysql-test/r/rpl_multi_delete.result +++ b/mysql-test/r/rpl_multi_delete.result @@ -19,4 +19,13 @@ a select * from t2; a 1 +delete from t1; +delete from t2; +insert into t1 values(1); +insert into t2 values(1); +DELETE t1.*, t2.* from t1, t2; +select * from t1; +a +select * from t2; +a drop table t1,t2; diff --git a/mysql-test/r/rpl_multi_update.result b/mysql-test/r/rpl_multi_update.result index 34f99746c7d..04cb1bc7460 100644 --- a/mysql-test/r/rpl_multi_update.result +++ b/mysql-test/r/rpl_multi_update.result @@ -24,3 +24,16 @@ a b 1 0 2 1 UPDATE t1, t2 SET t1.b = t2.b WHERE t1.a = t2.a; +delete from t1; +delete from t2; +insert into t1 values(1,1); +insert into t2 values(1,1); +update t1 set a=2; +UPDATE t1, t2 SET t1.a = t2.a; +select * from t1; +a b +1 1 +select * from t2; +a b +1 1 +drop table t1, t2; diff --git a/mysql-test/t/rpl_multi_delete.test b/mysql-test/t/rpl_multi_delete.test index 2fd7b820b1a..0538d0d7bae 100644 --- a/mysql-test/t/rpl_multi_delete.test +++ b/mysql-test/t/rpl_multi_delete.test @@ -16,10 +16,26 @@ sync_with_master; select * from t1; select * from t2; +# End of 4.1 tests + +# Check if deleting 0 rows is binlogged (BUG#13348) + connection master; -drop table t1,t2; -save_master_pos; +delete from t1; +delete from t2; + connection slave; -sync_with_master; +# force a difference to see if master's multi-DELETE will correct it +insert into t1 values(1); +insert into t2 values(1); -# End of 4.1 tests +connection master; +DELETE t1.*, t2.* from t1, t2; + +sync_slave_with_master; +select * from t1; +select * from t2; + +connection master; +drop table t1,t2; +sync_slave_with_master; diff --git a/mysql-test/t/rpl_multi_update.test b/mysql-test/t/rpl_multi_update.test index dd75edb3055..f400e722556 100644 --- a/mysql-test/t/rpl_multi_update.test +++ b/mysql-test/t/rpl_multi_update.test @@ -24,3 +24,26 @@ connection slave; sync_with_master; # End of 4.1 tests + +# Check if updating 0 rows is binlogged (BUG#13348) + +connection master; +delete from t1; +delete from t2; +insert into t1 values(1,1); +insert into t2 values(1,1); + +connection slave; +# 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; + +connection master; +drop table t1, t2; +sync_slave_with_master; |