MINI MINI MANI MO
#
# Check that Group Replication parallel applier parallelization
# indexes are correct according to WL#8440.
# All the transactions tested here, despite being committed by
# different members (no client commit order preservation) and not
# having dependencies from previous transactions, must have
# disjoint indexes, that is, must be applied sequentially.
# Cases:
# 1) DDL
# 2) Empty transactions
# 3) Management commands, like CREATE USER
#
--source ../inc/have_group_replication_plugin.inc
--echo
--echo ############################################################
--echo # 1. Setup a new group with four members.
--echo # Four view_change transactions will be logged on member
--echo # 4. All these transactions, when seen on member 4, will
--echo # have indexes:
--echo # server_id=4, last_committed=0, sequence_number=0
--echo #
--let $rpl_server_count= 4
--source ../inc/group_replication.inc
--echo
--echo ############################################################
--echo # 2. Execute some transactions on member 1, 2 and 3 that will
--echo # be applied on member 4 through Group Replication applier.
--echo #
--let $rpl_connection_name= server1
--source include/rpl_connection.inc
# server_id=1, last_committed=4, sequence_number=5
CREATE TABLE t1 (c1 INT NOT NULL PRIMARY KEY) ENGINE=InnoDB;
--let $rpl_connection_name= server2
--source include/rpl_connection.inc
# server_id=2, last_committed=5, sequence_number=6
CREATE USER user@nohost1;
--let $rpl_connection_name= server3
--source include/rpl_connection.inc
# server_id=3, last_committed=6, sequence_number=7
SET GTID_NEXT= 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa:1';
BEGIN;
COMMIT;
SET GTID_NEXT= AUTOMATIC;
--let $rpl_connection_name= server1
--source include/rpl_connection.inc
# server_id=1, last_committed=7, sequence_number=8
DROP TABLE t1;
--let $rpl_connection_name= server2
--source include/rpl_connection.inc
# server_id=2, last_committed=8, sequence_number=9
CREATE TABLE t2 (c1 INT NOT NULL PRIMARY KEY) ENGINE=InnoDB;
--let $rpl_connection_name= server3
--source include/rpl_connection.inc
# server_id=3, last_committed=9, sequence_number=10
CREATE DATABASE db1;
--source include/rpl_sync.inc
--echo
--echo ############################################################
--echo # 3. Dump Group Replication applier channel relay log and
--echo # validate its indexes on member 4.
--echo #
--let $rpl_connection_name= server4
--source include/rpl_connection.inc
--let $dump_file=$MYSQLTEST_VARDIR/tmp/group_replication_parallel_applier_sequential_indexes.dump
--exec $MYSQL_BINLOG --force-if-open $server_4_datadir/server-relay-log-group_replication_applier.000002 > $dump_file
--let $grep_file= $dump_file
--let $grep_pattern= last_committed
--let $grep_output= print_each
--replace_regex /# at [0-9]*/# at #/ /#[0-9]+/#time#/ /[[:space:]]+[0-9]+:[0-9]+:[0-9]+/ ##:##:##/ /end_log_pos [0-9]+/end_log_pos ##/
--source include/grep_pattern.inc
--remove_file $dump_file
--let $binlog_file= server-relay-log-group_replication_applier.000002
--let $logical_timestamps= 0 0;0 0;0 0;0 0;4 5;5 6;6 7;7 8;8 9;9 10
--source include/assert_logical_timestamps.inc
--echo
--echo ############################################################
--echo # 4. Test cleanup.
DROP USER user@nohost1;
DROP TABLE t2;
DROP DATABASE db1;
--source ../inc/group_replication_end.inc
OHA YOOOO