mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Bug #40221 Replication failure on RBR + UPDATE the primary key
Extending bug#40221 regression test: 1. include INSERT 2. convert prim key + autoinc to unique. mysql-test/suite/binlog/r/binlog_innodb_row.result: results changed. mysql-test/suite/binlog/t/binlog_innodb_row.test: Extending bug#40221 regression test to include the INSERT dup key errored-out case.
This commit is contained in:
@ -1,16 +1,10 @@
|
|||||||
CREATE TABLE t1 (pk int auto_increment primary key) ENGINE=innodb;
|
CREATE TABLE t1 (i int unique) ENGINE=innodb;
|
||||||
show create table t1;
|
|
||||||
Table Create Table
|
|
||||||
t1 CREATE TABLE `t1` (
|
|
||||||
`pk` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
PRIMARY KEY (`pk`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
|
||||||
reset master;
|
reset master;
|
||||||
begin;
|
begin;
|
||||||
insert into t1 values (1),(2);
|
insert into t1 values (1),(2);
|
||||||
*** the following UPDATE query wont generate any updates for the binlog ***
|
*** the following UPDATE query wont generate any updates for the binlog ***
|
||||||
update t1 set pk = 3 where pk < 3;
|
update t1 set i = 3 where i < 3;
|
||||||
ERROR 23000: Duplicate entry '3' for key 'PRIMARY'
|
ERROR 23000: Duplicate entry '3' for key 'i'
|
||||||
commit;
|
commit;
|
||||||
*** Results of the test: the binlog must have only Write_rows events not any Update_rows ***
|
*** Results of the test: the binlog must have only Write_rows events not any Update_rows ***
|
||||||
show binlog events from <binlog_start>;
|
show binlog events from <binlog_start>;
|
||||||
@ -19,4 +13,19 @@ master-bin.000001 # Query # # use `test`; BEGIN
|
|||||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
||||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||||
|
delete from t1;
|
||||||
|
reset master;
|
||||||
|
begin;
|
||||||
|
insert into t1 values (1),(2);
|
||||||
|
*** the following UPDATE query wont generate any updates for the binlog ***
|
||||||
|
insert into t1 values (3),(4),(1),(2);
|
||||||
|
ERROR 23000: Duplicate entry '1' for key 'i'
|
||||||
|
commit;
|
||||||
|
*** Results of the test: the binlog must have only one Write_rows event not two ***
|
||||||
|
show binlog events from <binlog_start>;
|
||||||
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
|
master-bin.000001 # Query # # use `test`; BEGIN
|
||||||
|
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
||||||
|
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||||
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
@ -9,18 +9,34 @@ source include/have_binlog_format_row.inc;
|
|||||||
# Bug #40221 Replication failure on RBR + UPDATE the primary key
|
# Bug #40221 Replication failure on RBR + UPDATE the primary key
|
||||||
#
|
#
|
||||||
|
|
||||||
CREATE TABLE t1 (pk int auto_increment primary key) ENGINE=innodb;
|
CREATE TABLE t1 (i int unique) ENGINE=innodb;
|
||||||
show create table t1;
|
reset master;
|
||||||
|
|
||||||
|
# part 1: update can cause the dup key
|
||||||
|
|
||||||
|
begin;
|
||||||
|
insert into t1 values (1),(2);
|
||||||
|
--echo *** the following UPDATE query wont generate any updates for the binlog ***
|
||||||
|
--error ER_DUP_ENTRY
|
||||||
|
update t1 set i = 3 where i < 3;
|
||||||
|
commit;
|
||||||
|
|
||||||
|
--echo *** Results of the test: the binlog must have only Write_rows events not any Update_rows ***
|
||||||
|
source include/show_binlog_events.inc;
|
||||||
|
|
||||||
|
# part 2: insert can cause the dup key
|
||||||
|
|
||||||
|
delete from t1;
|
||||||
reset master;
|
reset master;
|
||||||
|
|
||||||
begin;
|
begin;
|
||||||
insert into t1 values (1),(2);
|
insert into t1 values (1),(2);
|
||||||
--echo *** the following UPDATE query wont generate any updates for the binlog ***
|
--echo *** the following UPDATE query wont generate any updates for the binlog ***
|
||||||
--error ER_DUP_ENTRY
|
--error ER_DUP_ENTRY
|
||||||
update t1 set pk = 3 where pk < 3;
|
insert into t1 values (3),(4),(1),(2);
|
||||||
commit;
|
commit;
|
||||||
|
|
||||||
--echo *** Results of the test: the binlog must have only Write_rows events not any Update_rows ***
|
--echo *** Results of the test: the binlog must have only one Write_rows event not two ***
|
||||||
source include/show_binlog_events.inc;
|
source include/show_binlog_events.inc;
|
||||||
|
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
Reference in New Issue
Block a user