|
For example, UPDATE statement. It currently writes Update_rows_event and Write_row_event for every updated row. It should write only Update_rows_event, and the slave, when executing it, should create the historical row internally. Because existing binlogs already have Update_rows_event and Write_row_event, the slave should ignore all events that modify the history.
source include/have_binlog_format_row.inc;
|
source include/master-slave.inc;
|
|
create table t1 (a int, rs timestamp(6) not null, re timestamp(6) not null);
|
|
sync_slave_with_master;
|
stop slave;
|
drop table t1;
|
create table t1 (a int, rs timestamp(6) as row start, re timestamp(6) as row end,
|
period for system_time(rs,re)) with system versioning;
|
start slave;
|
|
connection master;
|
# create two rows on the slave: one in the past, one with some fake row_start
|
insert t1 values (1, '2010-10-10 10:10:10', '2011-11-11 11:11:11');
|
insert t1 values (2, '2012-12-12 12:12:12', from_unixtime(2147483647.999999));
|
|
sync_slave_with_master;
|
select * from t1;
|
select * from t1 for system_time all;
|
|
connection master;
|
# now update the versioned row on the slave without leaving any trace
|
update t1 set a=3, rs='2009-09-09 9:9:9' where a=2;
|
sync_slave_with_master;
|
select * from t1;
|
select * from t1 for system_time all;
|
|
connection master;
|
drop table t1;
|
|
source include/rpl_end.inc;
|
|