Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions mysql-test/suite/rpl/r/rpl_multi_delete_join.result
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
include/master-slave.inc
[connection master]
#
# MDEV-38003 Intermittent Replication Failure on a multi-table DELETE
#
connection master;
set sql_log_bin=1;
connection slave;
set sql_log_bin=1;
reset master;
connection master;
create database mdev38003;
use mdev38003;
create table t1 (pk int, num int);
create table t2 (pk int, num int);
create table t3 (pk int, num int);
insert into t1 (pk, num) values (1,1900),(2,1901);
insert into t2 (pk, num) values (2,2001),(2,2002);
insert into t3 (pk, num) values (1,40),(2,42);
select * from t1 left join t2 on t1.pk = t2.pk left join t3 on t2.pk = t3.pk;
pk num pk num pk num
2 1901 2 2001 2 42
2 1901 2 2002 2 42
1 1900 NULL NULL NULL NULL
select * from t1 left join t2 on t1.pk = t2.pk left join t3 on t2.pk = t3.pk where t2.num <= 2002;
pk num pk num pk num
2 1901 2 2001 2 42
2 1901 2 2002 2 42
connection slave;
use mdev38003;
select * from t1 left join t2 on t1.pk = t2.pk left join t3 on t2.pk = t3.pk;
pk num pk num pk num
2 1901 2 2001 2 42
2 1901 2 2002 2 42
1 1900 NULL NULL NULL NULL
select * from t1 left join t2 on t1.pk = t2.pk left join t3 on t2.pk = t3.pk where t2.num <= 2002;
pk num pk num pk num
2 1901 2 2001 2 42
2 1901 2 2002 2 42
connection master;
use mdev38003;
delete t1, t2, t3 from t1 left join t2 on t1.pk = t2.pk left join t3 on t2.pk = t3.pk where t2.num <= 2002;
select * from t1 left join t2 on t1.pk = t2.pk left join t3 on t2.pk = t3.pk;
pk num pk num pk num
1 1900 NULL NULL NULL NULL
select * from t1 left join t2 on t1.pk = t2.pk left join t3 on t2.pk = t3.pk where t2.num <= 2002;
pk num pk num pk num
connection slave;
use mdev38003;
select * from t1 left join t2 on t1.pk = t2.pk left join t3 on t2.pk = t3.pk;
pk num pk num pk num
1 1900 NULL NULL NULL NULL
select * from t1 left join t2 on t1.pk = t2.pk left join t3 on t2.pk = t3.pk where t2.num <= 2002;
pk num pk num pk num
connection master;
use mdev38003;
drop table t1, t2, t3;
drop database mdev38003;
# End of 11.8 tests
include/rpl_end.inc
46 changes: 46 additions & 0 deletions mysql-test/suite/rpl/t/rpl_multi_delete_join.test
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
source include/master-slave.inc;

--echo #
--echo # MDEV-38003 Intermittent Replication Failure on a multi-table DELETE
--echo #
connection master;
set sql_log_bin=1;
sync_slave_with_master;
set sql_log_bin=1;
reset master;
connection master;
create database mdev38003;
use mdev38003;
create table t1 (pk int, num int);
create table t2 (pk int, num int);
create table t3 (pk int, num int);
insert into t1 (pk, num) values (1,1900),(2,1901);
insert into t2 (pk, num) values (2,2001),(2,2002);
insert into t3 (pk, num) values (1,40),(2,42);
select * from t1 left join t2 on t1.pk = t2.pk left join t3 on t2.pk = t3.pk;
select * from t1 left join t2 on t1.pk = t2.pk left join t3 on t2.pk = t3.pk where t2.num <= 2002;

sync_slave_with_master;
use mdev38003;
select * from t1 left join t2 on t1.pk = t2.pk left join t3 on t2.pk = t3.pk;
select * from t1 left join t2 on t1.pk = t2.pk left join t3 on t2.pk = t3.pk where t2.num <= 2002;

connection master;
use mdev38003;
delete t1, t2, t3 from t1 left join t2 on t1.pk = t2.pk left join t3 on t2.pk = t3.pk where t2.num <= 2002;
select * from t1 left join t2 on t1.pk = t2.pk left join t3 on t2.pk = t3.pk;
select * from t1 left join t2 on t1.pk = t2.pk left join t3 on t2.pk = t3.pk where t2.num <= 2002;

sync_slave_with_master;
use mdev38003;
select * from t1 left join t2 on t1.pk = t2.pk left join t3 on t2.pk = t3.pk;
select * from t1 left join t2 on t1.pk = t2.pk left join t3 on t2.pk = t3.pk where t2.num <= 2002;

connection master;
use mdev38003;
drop table t1, t2, t3;
drop database mdev38003;

--echo # End of 11.8 tests

--source include/rpl_end.inc
1 change: 1 addition & 0 deletions sql/sql_delete.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1474,6 +1474,7 @@ int multi_delete::send_data(List<Item> &values)
}
found++;
}
error= 0;
}
}
}
Expand Down