|
| 1 | +################################################################################ |
| 2 | +# Validate the behaviour of 'CREATE TABLE ... AS SELECT' coming from an async |
| 3 | +# replication channel to group replication. |
| 4 | +# |
| 5 | +# Bug#36784284 - Secondary fails when executing a CREATE TABLE SELECT from |
| 6 | +# an async channel |
| 7 | +# |
| 8 | +# 1. Setup Group Replication on server 1 and 2. |
| 9 | +# 2. Setup a asynchronous replication connection from server 3 |
| 10 | +# into group (server 1) |
| 11 | +# 3. Execute CREATE TABLE ... SELECT statements on server 3. |
| 12 | +# 4. Wait until transactions executed on server 3 are applied on group. |
| 13 | +# Secondary should not fail when executing a CREATE TABLE SELECT. |
| 14 | +# 5. Clean-up |
| 15 | +################################################################################ |
| 16 | + |
| 17 | +--source include/have_group_replication_plugin.inc |
| 18 | +--let $rpl_skip_group_replication_start= 1 |
| 19 | +--let $rpl_server_count= 3 |
| 20 | +--source include/group_replication.inc |
| 21 | + |
| 22 | +--echo # Bug#36784284 - Secondary fails when executing a CREATE TABLE SELECT from |
| 23 | +--echo # an async channel |
| 24 | + |
| 25 | +--echo |
| 26 | +--echo ############################################################ |
| 27 | +--echo # 1. Setup Group Replication on server 1 and 2. |
| 28 | +--let $rpl_connection_name= server1 |
| 29 | +--source include/rpl_connection.inc |
| 30 | +--source include/start_and_bootstrap_group_replication.inc |
| 31 | + |
| 32 | +--let $rpl_connection_name= server2 |
| 33 | +--source include/rpl_connection.inc |
| 34 | +--source include/start_group_replication.inc |
| 35 | + |
| 36 | +--let $group_replication_number_of_members= 2 |
| 37 | +--source include/gr_wait_for_number_of_members.inc |
| 38 | + |
| 39 | + |
| 40 | +--echo |
| 41 | +--echo ############################################################ |
| 42 | +--echo # 2. Setup a asynchronous replication connection from server 3 |
| 43 | +--echo # into group (server 1) |
| 44 | +--let $rpl_connection_name= server1 |
| 45 | +--source include/rpl_connection.inc |
| 46 | +--replace_result $SERVER_MYPORT_3 SERVER_3_PORT |
| 47 | +--eval CHANGE REPLICATION SOURCE TO SOURCE_HOST="127.0.0.1", SOURCE_USER="root", SOURCE_PASSWORD="", SOURCE_PORT=$SERVER_MYPORT_3, SOURCE_AUTO_POSITION=1, REQUIRE_TABLE_PRIMARY_KEY_CHECK=OFF, REQUIRE_ROW_FORMAT=1 FOR CHANNEL "" |
| 48 | +--source include/start_slave.inc |
| 49 | + |
| 50 | +--echo |
| 51 | +--echo ############################################################ |
| 52 | +--echo # 3. Execute CREATE TABLE ... SELECT statements on server 3. |
| 53 | +--let $rpl_connection_name= server3 |
| 54 | +--source include/rpl_connection.inc |
| 55 | + |
| 56 | +CREATE TABLE t1 (c1 INT, c2 VARCHAR(80),PRIMARY KEY (c1)); |
| 57 | +CREATE TABLE t2 (PRIMARY KEY (c1)) AS SELECT * FROM t1; |
| 58 | + |
| 59 | +INSERT INTO t1 VALUES (1, 'aaaa'); |
| 60 | +CREATE TABLE t3 (PRIMARY KEY (c1)) AS SELECT * FROM t1; |
| 61 | + |
| 62 | +--echo |
| 63 | +--echo ############################################################ |
| 64 | +--echo # 4. Wait until transactions executed on server 3 are |
| 65 | +--echo # applied on group. |
| 66 | +--let $sync_slave_connection= server1 |
| 67 | +--source include/sync_slave_sql_with_master.inc |
| 68 | + |
| 69 | +--let $rpl_connection_name= server3 |
| 70 | +--source include/rpl_connection.inc |
| 71 | +--let $sync_slave_connection= server2 |
| 72 | +--source include/sync_slave_sql_with_master.inc |
| 73 | + |
| 74 | +--echo |
| 75 | +--echo ############################################################ |
| 76 | +--echo # 5. Cleanup |
| 77 | +--let $rpl_connection_name= server3 |
| 78 | +--source include/rpl_connection.inc |
| 79 | +DROP TABLE t1, t2, t3; |
| 80 | + |
| 81 | +--let $sync_slave_connection= server1 |
| 82 | +--source include/sync_slave_sql_with_master.inc |
| 83 | + |
| 84 | +--let $rpl_connection_name= server3 |
| 85 | +--source include/rpl_connection.inc |
| 86 | +--let $sync_slave_connection= server2 |
| 87 | +--source include/sync_slave_sql_with_master.inc |
| 88 | + |
| 89 | +--let $rpl_connection_name= server1 |
| 90 | +--source include/rpl_connection.inc |
| 91 | +--source include/stop_slave.inc |
| 92 | +CHANGE REPLICATION SOURCE TO SOURCE_AUTO_POSITION=0 FOR CHANNEL ""; |
| 93 | + |
| 94 | +--source include/group_replication_end.inc |
0 commit comments