summaryrefslogtreecommitdiff
path: root/mysql-test/suite
diff options
context:
space:
mode:
authorSachin Setiya <sachinsetia1001@gmail.com>2016-12-27 14:13:32 +0530
committerSachin Setiya <sachinsetia1001@gmail.com>2017-01-01 16:45:44 +0530
commitd02a77bc5fbaf2e9504035e98f132fdf7145fd94 (patch)
tree229975b84877e7cecee4898d64d10117cd62c382 /mysql-test/suite
parent37f294fec20e5b27532c156cd6956d65d804a5df (diff)
downloadmariadb-git-d02a77bc5fbaf2e9504035e98f132fdf7145fd94.tar.gz
MDEV-11636 Extra persistent columns on slave always gets NULL in RBR
Problem:- In replication if slave has extra persistent column then these column are not computed while applying write-set from master. Solution:- While applying row events from server, we will generate values for extra persistent columns.
Diffstat (limited to 'mysql-test/suite')
-rw-r--r--mysql-test/suite/rpl/r/rpl_alter_extra_persistent.result220
-rw-r--r--mysql-test/suite/rpl/t/rpl_alter_extra_persistent.test106
2 files changed, 326 insertions, 0 deletions
diff --git a/mysql-test/suite/rpl/r/rpl_alter_extra_persistent.result b/mysql-test/suite/rpl/r/rpl_alter_extra_persistent.result
new file mode 100644
index 00000000000..84915073d87
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_alter_extra_persistent.result
@@ -0,0 +1,220 @@
+include/master-slave.inc
+[connection master]
+connection master;
+create table t1(a int primary key);
+insert into t1 values(1);
+insert into t1 values(2);
+insert into t1 values(3);
+insert into t1 values(4);
+connection slave;
+select * from t1 order by a;
+a
+1
+2
+3
+4
+alter table t1 add column z1 int as(a+1) virtual, add column z2 int as (a+2) persistent;
+select * from t1 order by a;
+a z1 z2
+1 2 3
+2 3 4
+3 4 5
+4 5 6
+connection master;
+insert into t1 values(5);
+insert into t1 values(6);
+connection slave;
+select * from t1 order by a;
+a z1 z2
+1 2 3
+2 3 4
+3 4 5
+4 5 6
+5 6 7
+6 7 8
+#UPDATE query
+connection master;
+update t1 set a = a+10;
+select * from t1 order by a;
+a
+11
+12
+13
+14
+15
+16
+connection slave;
+select * from t1 order by a;
+a z1 z2
+11 12 13
+12 13 14
+13 14 15
+14 15 16
+15 16 17
+16 17 18
+connection master;
+update t1 set a = a-10;
+select * from t1 order by a;
+a
+1
+2
+3
+4
+5
+6
+connection slave;
+select * from t1 order by a;
+a z1 z2
+1 2 3
+2 3 4
+3 4 5
+4 5 6
+5 6 7
+6 7 8
+#DELETE quert
+connection master;
+delete from t1 where a > 2 and a < 4;
+select * from t1 order by a;
+a
+1
+2
+4
+5
+6
+connection slave;
+select * from t1 order by a;
+a z1 z2
+1 2 3
+2 3 4
+4 5 6
+5 6 7
+6 7 8
+#REPLACE query
+connection master;
+replace into t1 values(1);
+replace into t1 values(3);
+replace into t1 values(1);
+connection slave;
+select * from t1 order by a;
+a z1 z2
+1 2 3
+2 3 4
+3 4 5
+4 5 6
+5 6 7
+6 7 8
+#SELECT query
+connection master;
+select * from t1 where a > 2 and a < 4;
+a
+3
+connection slave;
+select * from t1 where a > 2 and a < 4;
+a z1 z2
+3 4 5
+#UPDATE with SELECT query
+connection master;
+update t1 set a = a + 10 where a > 2 and a < 4;
+select * from t1 order by a;
+a
+1
+2
+4
+5
+6
+13
+connection slave;
+select * from t1 order by a;
+a z1 z2
+1 2 3
+2 3 4
+4 5 6
+5 6 7
+6 7 8
+13 14 15
+connection master;
+update t1 set a = a - 10 where a = 13;
+select * from t1 order by a;
+a
+1
+2
+3
+4
+5
+6
+connection slave;
+select * from t1 order by a;
+a z1 z2
+1 2 3
+2 3 4
+3 4 5
+4 5 6
+5 6 7
+6 7 8
+#Break Unique Constraint
+alter table t1 add column z4 int as (a % 6) persistent unique;
+connection master;
+#entering duplicate value for slave persistent column
+insert into t1 values(7);
+select * from t1 order by a;
+a
+1
+2
+3
+4
+5
+6
+7
+connection slave;
+include/wait_for_slave_sql_error.inc [errno=1062]
+connection slave;
+connection slave;
+select * from t1 order by a;
+a z1 z2 z4
+1 2 3 1
+2 3 4 2
+3 4 5 3
+4 5 6 4
+5 6 7 5
+6 7 8 0
+alter table t1 drop column z4;
+start slave;
+include/wait_for_slave_sql_to_start.inc
+connection slave;
+connection slave;
+connection master;
+connection slave;
+select * from t1 order by a;
+a z1 z2
+1 2 3
+2 3 4
+3 4 5
+4 5 6
+5 6 7
+6 7 8
+7 8 9
+connection master;
+select * from t1 order by a;
+a
+1
+2
+3
+4
+5
+6
+7
+drop table t1;
+include/rpl_end.inc
+connection server_2;
+connection server_2;
+connection server_2;
+connection server_2;
+connection server_1;
+connection server_1;
+connection server_1;
+connection server_2;
+connection server_1;
+connection server_2;
+connection server_2;
+connection server_1;
+connection server_1;
diff --git a/mysql-test/suite/rpl/t/rpl_alter_extra_persistent.test b/mysql-test/suite/rpl/t/rpl_alter_extra_persistent.test
new file mode 100644
index 00000000000..3b2fff1cb13
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_alter_extra_persistent.test
@@ -0,0 +1,106 @@
+--source include/master-slave.inc
+--source include/have_binlog_format_row.inc
+
+--enable_connect_log
+--connection master
+create table t1(a int primary key);
+insert into t1 values(1);
+insert into t1 values(2);
+insert into t1 values(3);
+insert into t1 values(4);
+
+--sync_slave_with_master
+select * from t1 order by a;
+alter table t1 add column z1 int as(a+1) virtual, add column z2 int as (a+2) persistent;
+select * from t1 order by a;
+
+--connection master
+insert into t1 values(5);
+insert into t1 values(6);
+
+--sync_slave_with_master
+select * from t1 order by a;
+
+
+--echo #UPDATE query
+
+--connection master
+update t1 set a = a+10;
+select * from t1 order by a;
+
+--sync_slave_with_master
+select * from t1 order by a;
+
+--connection master
+update t1 set a = a-10;
+select * from t1 order by a;
+
+--sync_slave_with_master
+select * from t1 order by a;
+
+--echo #DELETE quert
+--connection master
+delete from t1 where a > 2 and a < 4;
+select * from t1 order by a;
+
+--sync_slave_with_master
+select * from t1 order by a;
+
+--echo #REPLACE query
+--connection master
+replace into t1 values(1);
+replace into t1 values(3);
+replace into t1 values(1);
+
+--sync_slave_with_master
+select * from t1 order by a;
+
+--echo #SELECT query
+--connection master
+select * from t1 where a > 2 and a < 4;
+
+--connection slave
+select * from t1 where a > 2 and a < 4;
+
+--echo #UPDATE with SELECT query
+--connection master
+update t1 set a = a + 10 where a > 2 and a < 4;
+select * from t1 order by a;
+
+--sync_slave_with_master
+select * from t1 order by a;
+
+--connection master
+update t1 set a = a - 10 where a = 13;
+select * from t1 order by a;
+
+--sync_slave_with_master
+select * from t1 order by a;
+
+--echo #Break Unique Constraint
+alter table t1 add column z4 int as (a % 6) persistent unique;
+
+--connection master
+
+--echo #entering duplicate value for slave persistent column
+insert into t1 values(7);
+select * from t1 order by a;
+
+--connection slave
+--let $slave_sql_errno= 1062
+--source include/wait_for_slave_sql_error.inc
+select * from t1 order by a;
+alter table t1 drop column z4;
+start slave;
+
+--source include/wait_for_slave_sql_to_start.inc
+
+--connection master
+--sync_slave_with_master
+select * from t1 order by a;
+
+--connection master
+select * from t1 order by a;
+drop table t1;
+
+--source include/rpl_end.inc