[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@3.133.152.151: ~ $
#
# Test engine native conflict resolution for ndb
#
#
--source include/have_ndb.inc
--source include/have_binlog_format_mixed_or_row.inc
--source suite/ndb_rpl/ndb_master-slave.inc

--disable_query_log
--connection master
CREATE TABLE mysql.ndb_replication
  (db VARBINARY(63),
   table_name VARBINARY(63),
   server_id INT UNSIGNED,
   binlog_type INT UNSIGNED,
   conflict_fn VARBINARY(128),
   PRIMARY KEY USING HASH (db,table_name,server_id))
  ENGINE=NDB PARTITION BY KEY(db,table_name);
--enable_query_log

# only test with binlog_type = 7, as everything else feels insane in context of conflict resolution
insert into mysql.ndb_replication values ("test", "t1_old", 0, 7, "NDB$OLD(X)");
insert into mysql.ndb_replication values ("test", "t1_max", 0, 7, "NDB$MAX(X)");
insert into mysql.ndb_replication values ("test", "t1_max_delete_win", 0, 7, "NDB$MAX_DELETE_WIN(X)");

create table `t1_old$EX`
  (server_id int unsigned,
   master_server_id int unsigned,
   master_epoch bigint unsigned,
   count int unsigned,
   a int not null,
   primary key(server_id, master_server_id, master_epoch, count)) engine ndb;

create table `t1_max$EX`
  (server_id int unsigned,
   master_server_id int unsigned,
   master_epoch bigint unsigned,
   count int unsigned,
   a int not null,
   primary key(server_id, master_server_id, master_epoch, count)) engine ndb;

create table `t1_max_delete_win$EX`
  (server_id int unsigned,
   master_server_id int unsigned,
   master_epoch bigint unsigned,
   count int unsigned,
   a int not null,
   primary key(server_id, master_server_id, master_epoch, count)) engine ndb;

create table t1_old (a int primary key, b varchar(32), X int unsigned) engine = ndb;
create table t1_max (a int primary key, b varchar(32), X int unsigned) engine = ndb;
create table t1_max_delete_win (a int primary key, b varchar(32), X int unsigned) engine = ndb;
--sync_slave_with_master

###############
--echo "Test 1"

--connection master
insert into t1_old values (1, 'Initial X=1', 1);
insert into t1_max values (1, 'Initial X=1', 1);
insert into t1_max_delete_win values (1, 'Initial X=1', 1);
--sync_slave_with_master

--connection slave
update t1_old set X = 2, b='Slave X=2';
update t1_max set X = 2, b='Slave X=2';
update t1_max_delete_win set X = 2, b='Slave X=2';

--connection master
update t1_old set X = 3, b='Master X=3';
update t1_max set X = 3, b='Master X=3';
update t1_max_delete_win set X = 3, b='Master X=3';
--sync_slave_with_master

--connection slave
--echo "Expect t1_old to contain slave row, and t1_max* to contain master row"
select * from t1_old;
select * from t1_max;
select * from t1_max_delete_win;

# syncronize
update t1_old set X = 3, b='Master X=3';

###############
--echo "Test 2"

--connection slave
update t1_old set X = 4, b='Slave X=4';
update t1_max set X = 4, b='Slave X=4';
update t1_max_delete_win set X = 4, b='Slave X=4';

--connection master
delete from t1_old;
delete from t1_max;
delete from t1_max_delete_win;
--sync_slave_with_master

--connection slave
--echo "Expect t1_old and t1_max to contain slave row, and t1_max_delete_win to be empty(as master)"
select * from t1_old;
select * from t1_max;
select * from t1_max_delete_win;

# syncronize
delete from t1_old;
delete from t1_max;

--connection master

# Now test with Blobs
drop table t1_old, t1_max, t1_max_delete_win;
delete from t1_old$EX;
delete from t1_max$EX;
delete from t1_max_delete_win$EX;

--sync_slave_with_master
--connection slave
# Delete on slave, as $EX table ops don't replicate
delete from t1_old$EX;
delete from t1_max$EX;
delete from t1_max_delete_win$EX;

--connection master

create table t1_old (a int primary key, b longtext, X int unsigned) engine = ndb;
create table t1_max (a int primary key, b longtext, X int unsigned) engine = ndb;
create table t1_max_delete_win (a int primary key, b longtext, X int unsigned) engine = ndb;

--sync_slave_with_master

###############
--echo "Test 3"

--connection master
insert into t1_old values (1, repeat('Initial X=1',1000), 1);
insert into t1_max values (1, repeat('Initial X=1',1000), 1);
insert into t1_max_delete_win values (1, repeat('Initial X=1',1000), 1);
--sync_slave_with_master

--connection slave
update t1_old set X = 2, b=repeat('Slave X=2',1001);
update t1_max set X = 2, b=repeat('Slave X=2',1001);
update t1_max_delete_win set X = 2, b=repeat('Slave X=2',1001);

--connection master
update t1_old set X = 3, b=repeat('Master X=3',1002);
update t1_max set X = 3, b=repeat('Master X=3',1002);
update t1_max_delete_win set X = 3, b=repeat('Master X=3',1002);
--sync_slave_with_master

--connection slave
--echo "Expect t1_old to contain slave row, and t1_max* to contain master row"
select a, left(b, 20), length(b), X from t1_old;
select a, left(b, 20), length(b), X from t1_max;
select a, left(b, 20), length(b), X from t1_max_delete_win;

--echo Expect t1_old to have 1 entry, and t1_max* to have no entries
select server_id, master_server_id, count, a from t1_old$EX order by count;
select server_id, master_server_id, count, a from t1_max$EX order by count;
select server_id, master_server_id, count, a from t1_max_delete_win$EX order by count;

delete from t1_max$EX;
delete from t1_max_delete_win$EX;
delete from t1_old$EX;

# syncronize
update t1_old set X = 3, b=repeat('Master X=3', 1002);

###############
--echo "Test 4"

--connection slave
update t1_old set X = 4, b=repeat('Slave X=4',2000);
update t1_max set X = 4, b=repeat('Slave X=4',2000);
update t1_max_delete_win set X = 4, b=repeat('Slave X=4',2000);

--connection master
delete from t1_old;
delete from t1_max;
delete from t1_max_delete_win;
--sync_slave_with_master

--connection slave
--echo "Expect t1_old and t1_max to contain slave row, and t1_max_delete_win to be empty(as master)"
select a, left(b, 20), length(b), X from t1_old;
select a, left(b, 20), length(b), X from t1_max;
select a, left(b, 20), length(b), X from t1_max_delete_win;

--echo Expect t1_old and t1_max to contain 1 entry, and t1_max_delete_win to be empty
select server_id, master_server_id, count, a from t1_old$EX order by count;
select server_id, master_server_id, count, a from t1_max$EX order by count;
select server_id, master_server_id, count, a from t1_max_delete_win$EX order by count;

delete from t1_max$EX;
delete from t1_max_delete_win$EX;
delete from t1_old$EX;

delete from t1_old;
delete from t1_max;
delete from t1_max_delete_win;

--connection master
delete from t1_old;
delete from t1_max;
delete from t1_max_delete_win;

#################
--echo "Test 5"

--echo Test that Updates affecting Blobs are rejected
--echo correctly on the slave
drop table t1_max;
create table t1_max (a int primary key, b int, c longtext, d longtext, X int unsigned) engine = ndb;

insert into t1_max values (1, 1, repeat("B", 10000), repeat("E", 10001), 1);
insert into t1_max values (2, 2, repeat("A", 10002), repeat("T", 10003), 1);

--sync_slave_with_master
--connection slave

# Bump up tuple versions
update t1_max set X=20;

--echo Initial values on Slave
select a,b,SHA1(c),length(c), SHA1(d), length(d), X from t1_max order by a;

--connection master
--echo Originate update which will be rejected
update t1_max set c=repeat("Z", 10006), d=repeat("I", 10005), X=2 where a=1;

--sync_slave_with_master
--connection slave
--echo Check slave has rejected due to lower version
select a,b,SHA1(c),length(c), SHA1(d), length(d), X from t1_max order by a;

--connection master
--echo Originate delete which will be rejected (due to NDB-OLD) algorith
delete from t1_max where a=1;

--sync_slave_with_master
--connection slave
--echo Check slave has rejected due to before image mismatch
select a,b,SHA1(c),length(c), SHA1(d), length(d), X from t1_max order by a;

--connection master
--echo Originate insert which will be rejected (as row exists)
insert into t1_max values (1, 1, repeat("R", 10004), repeat("A", 10007), 1);

--sync_slave_with_master
--connection slave
--echo Check slave has rejected due to row existing already
select a,b,SHA1(c),length(c), SHA1(d), length(d), X from t1_max order by a;

--echo Expect t1_max to have 3 entries
select server_id, master_server_id, count, a from t1_old$EX order by count;
select server_id, master_server_id, count, a from t1_max$EX order by count;
select server_id, master_server_id, count, a from t1_max_delete_win$EX order by count;

delete from t1_max$EX;
delete from t1_max_delete_win$EX;
delete from t1_old$EX;

--connection master

#######
--echo Test 6
--echo Check that non-Blob related operations in a batch with a Blob
--echo operation are still subject to conflict detection.
--echo
insert into mysql.ndb_replication values ("test", "t2_max", 0, 7, "NDB$MAX(X)");

create table `t2_max$EX`
  (server_id int unsigned,
   master_server_id int unsigned,
   master_epoch bigint unsigned,
   count int unsigned,
   a int not null,
   primary key(server_id, master_server_id, master_epoch, count)) engine ndb;

create table t2_max (a int primary key, b int, X bigint unsigned) engine=ndb;

insert into t2_max values (1,1,10), (2,2,10), (3,3,10), (4,4,10), (5,5,10);

--sync_slave_with_master

--connection master
--echo Now issue a transaction with a successful Blob op, and unsuccessful
--echo non-Blob op.  Check that the Blob op succeeds, and the unsuccessful
--echo non-Blob op is handled as expected.

begin;
update t2_max set b=b+1, X=1 where a=3; # conflicts
update t1_max set c=repeat("R", 10008), d=repeat("A", 10009), X = 21 where a=1; # ok
commit;

--sync_slave_with_master

--connection slave
--echo Contents on Slave
--echo Expect Blob data applied to t1_max, no update applied to t2_max
select a,b,left(c,1), length(c), left(d,1), length(d), X from t1_max where a=1;
select * from t2_max order by a;

--echo Expect No conflict in t1_max, 1 conflict in t2_max$EX
select server_id, master_server_id, count, a from t1_max$EX order by count;
select server_id, master_server_id, count, a from t2_max$EX order by count;

--connection master
drop table t2_max, t2_max$EX;


###############
--echo "Cleanup"

--connection master
drop table mysql.ndb_replication;
drop table t1_old, `t1_old$EX`, t1_max, `t1_max$EX`, t1_max_delete_win, `t1_max_delete_win$EX`;
--sync_slave_with_master

--source include/rpl_end.inc

Filemanager

Name Type Size Permission Actions
disabled.def File 688 B 0644
ndb_apply_status.frm File 8.51 KB 0644
ndb_conflict_info.inc File 1013 B 0644
ndb_conflict_info_init.inc File 692 B 0644
ndb_rpl_2innodb-master.opt File 32 B 0644
ndb_rpl_2innodb-slave.opt File 56 B 0644
ndb_rpl_2innodb.test File 1.63 KB 0644
ndb_rpl_2multi_basic.inc File 3.42 KB 0644
ndb_rpl_2multi_eng.inc File 10.33 KB 0644
ndb_rpl_2myisam-master.opt File 25 B 0644
ndb_rpl_2myisam-slave.opt File 47 B 0644
ndb_rpl_2myisam.test File 1.6 KB 0644
ndb_rpl_2ndb-slave.opt File 58 B 0644
ndb_rpl_2ndb.test File 648 B 0644
ndb_rpl_2other-slave.opt File 54 B 0644
ndb_rpl_2other.test File 2.18 KB 0644
ndb_rpl_add_column.test File 3.56 KB 0644
ndb_rpl_apply_status-master.opt File 28 B 0644
ndb_rpl_apply_status.test File 1.29 KB 0644
ndb_rpl_auto_inc.test File 3.98 KB 0644
ndb_rpl_bank.test File 6.47 KB 0644
ndb_rpl_basic.test File 11.29 KB 0644
ndb_rpl_binlog_format_errors.test File 3.26 KB 0644
ndb_rpl_bitfield.test File 7.9 KB 0644
ndb_rpl_blob.test File 3.91 KB 0644
ndb_rpl_break_3_chain.cnf File 1.71 KB 0644
ndb_rpl_break_3_chain.test File 3.53 KB 0644
ndb_rpl_bug22045.test File 2.2 KB 0644
ndb_rpl_check_for_mixed.test File 804 B 0644
ndb_rpl_circular.test File 4.21 KB 0644
ndb_rpl_circular_2ch.cnf File 878 B 0644
ndb_rpl_circular_2ch.test File 4.21 KB 0644
ndb_rpl_circular_2ch_rep_status.cnf File 183 B 0644
ndb_rpl_circular_2ch_rep_status.test File 9.01 KB 0644
ndb_rpl_circular_simplex.test File 2.22 KB 0644
ndb_rpl_conflict.test File 9.99 KB 0644
ndb_rpl_conflict_1.inc File 5.15 KB 0644
ndb_rpl_conflict_epoch.cnf File 561 B 0644
ndb_rpl_conflict_epoch.test File 6.86 KB 0644
ndb_rpl_conflict_epoch_1.inc File 12.36 KB 0644
ndb_rpl_conflict_max-master.opt File 28 B 0644
ndb_rpl_conflict_max.test File 2.83 KB 0644
ndb_rpl_conflict_max_delete_win-master.opt File 28 B 0644
ndb_rpl_conflict_max_delete_win.test File 2.86 KB 0644
ndb_rpl_conflict_old-master.opt File 28 B 0644
ndb_rpl_conflict_old.test File 2.83 KB 0644
ndb_rpl_ctype_ucs2_def-master.opt File 70 B 0644
ndb_rpl_ctype_ucs2_def.test File 1.13 KB 0644
ndb_rpl_dd_advance.test File 10.04 KB 0644
ndb_rpl_dd_basic.test File 1.38 KB 0644
ndb_rpl_dd_partitions-master.opt File 11 B 0644
ndb_rpl_dd_partitions-slave.opt File 11 B 0644
ndb_rpl_dd_partitions.test File 8.53 KB 0644
ndb_rpl_do_db-slave.opt File 26 B 0644
ndb_rpl_do_db.test File 1.52 KB 0644
ndb_rpl_do_table-slave.opt File 29 B 0644
ndb_rpl_do_table.test File 1.21 KB 0644
ndb_rpl_empty_epoch.test File 934 B 0644
ndb_rpl_gap_event-master.opt File 24 B 0644
ndb_rpl_gap_event.test File 1.52 KB 0644
ndb_rpl_get_binlog_events.inc File 1.09 KB 0644
ndb_rpl_idempotent.test File 2.95 KB 0644
ndb_rpl_ignore_db-master.opt File 25 B 0644
ndb_rpl_ignore_db.test File 1.07 KB 0644
ndb_rpl_init_rep_status.test File 2.95 KB 0644
ndb_rpl_innodb2ndb-master.opt File 9 B 0644
ndb_rpl_innodb2ndb-slave.opt File 42 B 0644
ndb_rpl_innodb2ndb.test File 714 B 0644
ndb_rpl_innodb_trans-slave.opt File 34 B 0644
ndb_rpl_innodb_trans.test File 1.54 KB 0644
ndb_rpl_load.test File 2.34 KB 0644
ndb_rpl_logging.test File 3.76 KB 0644
ndb_rpl_mix_eng_trans-master.opt File 9 B 0644
ndb_rpl_mix_eng_trans-slave.opt File 9 B 0644
ndb_rpl_mix_eng_trans.test File 8.84 KB 0644
ndb_rpl_mix_innodb-master.opt File 41 B 0644
ndb_rpl_mix_innodb.test File 533 B 0644
ndb_rpl_mixed_tables-master.opt File 22 B 0644
ndb_rpl_mixed_tables-slave.opt File 70 B 0644
ndb_rpl_mixed_tables.test File 8.35 KB 0644
ndb_rpl_multi.test File 2.68 KB 0644
ndb_rpl_multi_binlog_update.cnf File 1.85 KB 0644
ndb_rpl_multi_binlog_update.inc File 6.78 KB 0644
ndb_rpl_multi_update2-slave.opt File 42 B 0644
ndb_rpl_myisam2ndb-slave.opt File 42 B 0644
ndb_rpl_myisam2ndb.test File 672 B 0644
ndb_rpl_ndbapi_multi.test File 614 B 0644
ndb_rpl_relayrotate-slave.opt File 57 B 0644
ndb_rpl_rep_error.test File 2.29 KB 0644
ndb_rpl_rep_ignore-slave.opt File 63 B 0644
ndb_rpl_rep_ignore.test File 1.58 KB 0644
ndb_rpl_skip_gap_event-slave.opt File 24 B 0644
ndb_rpl_skip_gap_event.test File 1.65 KB 0644
ndb_rpl_slave_lsu.cnf File 57 B 0644
ndb_rpl_slave_lsu.test File 5.66 KB 0644
ndb_rpl_slave_lsu_anyval.cnf File 176 B 0644
ndb_rpl_slave_lsu_anyval.test File 2.25 KB 0644
ndb_rpl_slave_restart.test File 2.87 KB 0644
ndb_rpl_stm_innodb-master.opt File 41 B 0644
ndb_rpl_stm_innodb.test File 622 B 0644
ndb_rpl_sync.test File 3.02 KB 0644
ndb_rpl_ui.test File 1.2 KB 0644
ndb_rpl_ui2.test File 747 B 0644
ndb_rpl_ui3.test File 1.3 KB 0644
ndb_rpl_xxx_innodb.inc File 6.22 KB 0644
rpl_truncate_7ndb.test File 1.58 KB 0644
rpl_truncate_7ndb_2.test File 383 B 0644
select_ndb_apply_status.inc File 505 B 0644
wait_schema_logging.inc File 2.33 KB 0644