1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
################################################################################
# Validate the behaviour of 'CREATE TABLE ... AS SELECT' with respect to
# write-set parallel applier.
#
# 1. Create a table using select statement from a empty table.
# 2. Create a table using select statement from a non empty table.
# 3. Verify that we fail to execution DML on table without PK.
# 4. Assert parallel applier indexes.
# 5. Check data consistency.
# 6. Clean-up
################################################################################
--source include/have_group_replication_plugin.inc
--source include/group_replication.inc
SET SESSION sql_log_bin= 0;
call mtr.add_suppression("Plugin group_replication reported: 'Table t5 does not have any PRIMARY KEY. This is not compatible with Group Replication.'");
SET SESSION sql_log_bin= 1;
--echo
--echo ############################################################
--echo # 1. Create a table using select statement from a empty table.
--let $rpl_connection_name= server1
--source include/rpl_connection.inc
CREATE TABLE t1 (c1 INT NOT NULL PRIMARY KEY);
CREATE TABLE t2 (c1 INT NOT NULL PRIMARY KEY) AS SELECT * FROM t1;
INSERT INTO t2 VALUES (1);
--echo
--echo ############################################################
--echo # 2. Create a table using select statement from a non empty table.
--let $rpl_connection_name= server1
--source include/rpl_connection.inc
CREATE TABLE t3 (c1 INT NOT NULL PRIMARY KEY);
INSERT INTO t3 VALUES (1);
CREATE TABLE t4 (c1 INT NOT NULL PRIMARY KEY) AS SELECT * FROM t3;
INSERT INTO t4 VALUES (2);
--echo
--echo # 3. Verify that we fail to execution DML on table without PK.
--echo ############################################################
--error ER_BEFORE_DML_VALIDATION_ERROR
CREATE TABLE t5 (c1 INT NOT NULL) AS SELECT * FROM t3;
--echo # Allow table creation when there is no DML executed.
CREATE TABLE t5 (c1 INT NOT NULL) AS SELECT * FROM t1;
--echo
--echo # 4. Assert parallel applier indexes.
--echo ############################################################
--source include/rpl_sync.inc
--let $rpl_connection_name= server2
--source include/rpl_connection.inc
--let $binlog_file= server-relay-log-group_replication_applier.000002
--let $logical_timestamps= 0 0;1 2;2 3;3 4;4 5;5 6;6 7;7 8;8 9
--source include/assert_logical_timestamps.inc
--let $is_relay_log= 1
--source include/assert_transaction_length.inc
--echo
--echo ############################################################
--echo # 5. Check data consistency.
--let $diff_tables=server1:test.t1 ,server2:test.t1
--source include/diff_tables.inc
--let $diff_tables=server1:test.t2 ,server2:test.t2
--source include/diff_tables.inc
--let $diff_tables=server1:test.t3 ,server2:test.t3
--source include/diff_tables.inc
--let $diff_tables=server1:test.t4 ,server2:test.t4
--source include/diff_tables.inc
--echo
--echo ############################################################
--echo # 5. Clean-up
--let $rpl_connection_name= server1
--source include/rpl_connection.inc
DROP TABLE t1;
DROP TABLE t2;
DROP TABLE t3;
DROP TABLE t4;
DROP TABLE t5;
--source include/group_replication_end.inc
|