← Back to team overview

maria-developers team mailing list archive

Re: a bug of ding-qing parallel replication

 

"nanyi607rao" <nanyi607rao@xxxxxxxxx> 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.


References