"nanyi607rao" <nanyi607rao@gmail.com> writes:
I find a bug of ding-qing parallel replication.
let's consider a table like this:
create table t1( a int(11) NOT NULL DEFAULT '0', b varchar(10), PRIMARY KEY (a) )ENGINE=InnoDB
if we do transactions on master(binlog_format=ROW) like this: trans 1: begin; insert into t1 values(1, "tt"); update t1 set a=2 where a=1; commit; trans 2; begin; update t1 set b="kk" where a=2; commit;
then this two transactions binlog transmit to the slave, because trans 1 and trnas 2 has different primary keys, it would disaptch in different threads like this: thread 1 do trans 1 thread 2 do trans 2
I wonder if this problem is because the code does not detect that trans 1 accesses both primary key values a=1 and a=2? If so, it should be possible to fix. For an UPDATE statement, the row events have both the before image (with a=1) and the after image (with a=2). Maybe there is a bug in the current code that it does not look in the after image? (I am still very interested in adding this feature to MariaDB. Unfortunately I have been too busy with two other big tasks, hopefully once they are done I can get back to this one). - Kristian.