Skip to content

Commit e0c136b

Browse files
committed
MDEV-9737 Duplicate error in replication with slave triggers and auto increment
delete deferred events after they're executed (otherwise they can be executed again for a sub-statement) See also commit 0e78d1d Author: Venkatesh Duggirala <venkatesh.duggirala@oracle.com> Date: Wed Mar 20 11:20:47 2013 +0530 BUG#15850951-DUPLICATE ERROR IN REPLICATION WITH SLAVE TRIGGERS AND AUTO INCREMENT
1 parent d5a8051 commit e0c136b

File tree

3 files changed

+55
-0
lines changed

3 files changed

+55
-0
lines changed
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
include/master-slave.inc
2+
[connection master]
3+
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");
4+
create table t1(id int auto_increment primary key);
5+
create table t2(id int auto_increment primary key);
6+
create table slave_only(id int auto_increment primary key);
7+
insert into slave_only values(NULL);
8+
create trigger t1i after insert on t1 for each row insert into slave_only values(NULL);
9+
stop slave;
10+
set global replicate_ignore_table="test.t2";
11+
start slave;
12+
insert into t2 values(NULL);
13+
insert into t1 values(NULL);
14+
drop table t1, t2, slave_only;
15+
stop slave;
16+
set global replicate_ignore_table="";
17+
start slave;
18+
drop table t1, t2;
19+
include/rpl_end.inc
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
#
2+
# MDEV-9737 Duplicate error in replication with slave triggers and auto increment
3+
#
4+
source include/master-slave.inc;
5+
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");
6+
7+
8+
create table t1(id int auto_increment primary key);
9+
create table t2(id int auto_increment primary key);
10+
11+
sync_slave_with_master;
12+
create table slave_only(id int auto_increment primary key);
13+
insert into slave_only values(NULL);
14+
create trigger t1i after insert on t1 for each row insert into slave_only values(NULL);
15+
16+
stop slave;
17+
set global replicate_ignore_table="test.t2";
18+
start slave;
19+
20+
connection master;
21+
insert into t2 values(NULL);
22+
insert into t1 values(NULL);
23+
24+
sync_slave_with_master;
25+
26+
drop table t1, t2, slave_only;
27+
stop slave;
28+
set global replicate_ignore_table="";
29+
start slave;
30+
31+
connection master;
32+
drop table t1, t2;
33+
34+
source include/rpl_end.inc;
35+

sql/log_event.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7463,6 +7463,7 @@ bool slave_execute_deferred_events(THD *thd)
74637463
return res;
74647464

74657465
res= rgi->deferred_events->execute(rgi);
7466+
rgi->deferred_events->rewind();
74667467

74677468
return res;
74687469
}

0 commit comments

Comments
 (0)