MDEV-26307 multi-source-replication support mysql syntax(for channel)
Author: woqutech Reviewer: monty@mariadb.org
This commit is contained in:
parent
4ebaa80f0b
commit
267a07e846
@ -102,6 +102,10 @@ if ($all_slaves_status)
|
|||||||
if ($slave_name)
|
if ($slave_name)
|
||||||
{
|
{
|
||||||
--let $_show_query=SHOW SLAVE $slave_name STATUS
|
--let $_show_query=SHOW SLAVE $slave_name STATUS
|
||||||
|
if ($for_channel)
|
||||||
|
{
|
||||||
|
--let $_show_query=SHOW SLAVE STATUS for channel $slave_name
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,6 +1,12 @@
|
|||||||
|
# This script ensures that a slave has executed everything in the relay log
|
||||||
|
# files. This can be used to ensure slave is in a predicate place after
|
||||||
|
# a FLUSH RELAY LOGS command.
|
||||||
|
# Note that this script does not guarantee that the slave has read everything
|
||||||
|
# from the master(s). If this is needed on should use the sync_with_master
|
||||||
|
# command or the sync_with_master script.
|
||||||
|
|
||||||
--let $show_statement = show all slaves status
|
--let $show_statement = show all slaves status
|
||||||
--let $field = Slave_SQL_State
|
--let $field = Slave_SQL_State
|
||||||
--let $condition = = 'Slave has read all relay log; waiting for more updates'
|
--let $condition = = 'Slave has read all relay log; waiting for more updates'
|
||||||
--let $wait_for_all = 1
|
--let $wait_for_all = 1
|
||||||
--source include/wait_show_condition.inc
|
--source include/wait_show_condition.inc
|
||||||
|
|
||||||
|
366
mysql-test/suite/multi_source/multisource_for_channel.result
Normal file
366
mysql-test/suite/multi_source/multisource_for_channel.result
Normal file
@ -0,0 +1,366 @@
|
|||||||
|
RESET MASTER;
|
||||||
|
connect slave,127.0.0.1,root,,,$SERVER_MYPORT_3;
|
||||||
|
change master to relay_log_file='' for channel 'abc1';
|
||||||
|
ERROR HY000: Failed initializing relay log position: Could not find target log during relay log initialization
|
||||||
|
change master to master_host='' for channel 'abc2';
|
||||||
|
ERROR HY000: Incorrect arguments to MASTER_HOST
|
||||||
|
change master to
|
||||||
|
master_port=MYPORT_1,
|
||||||
|
master_host='127.0.0.1',
|
||||||
|
master_user='root'
|
||||||
|
for channel 'master1';
|
||||||
|
start slave for channel 'master1';
|
||||||
|
set default_master_connection = 'master1';
|
||||||
|
include/wait_for_slave_to_start.inc
|
||||||
|
connect master1,127.0.0.1,root,,,$SERVER_MYPORT_1;
|
||||||
|
connection slave;
|
||||||
|
#
|
||||||
|
# Checking SHOW SLAVE 'master1' STATUS
|
||||||
|
#
|
||||||
|
Master_Port = 'MYPORT_1'
|
||||||
|
Relay_Log_File = 'mysqld-relay-bin-master1.000002'
|
||||||
|
Slave_IO_Running = 'Yes'
|
||||||
|
Slave_SQL_Running = 'Yes'
|
||||||
|
Last_Errno = '0'
|
||||||
|
Last_SQL_Errno = '0'
|
||||||
|
#
|
||||||
|
# Checking SHOW SLAVE STATUS
|
||||||
|
#
|
||||||
|
Master_Port = 'MYPORT_1'
|
||||||
|
Relay_Log_File = 'mysqld-relay-bin-master1.000002'
|
||||||
|
Slave_IO_Running = 'Yes'
|
||||||
|
Slave_SQL_Running = 'Yes'
|
||||||
|
Last_Errno = '0'
|
||||||
|
Last_SQL_Errno = '0'
|
||||||
|
#
|
||||||
|
# Checking SHOW ALL SLAVES STATUS
|
||||||
|
#
|
||||||
|
Connection_name = 'master1'
|
||||||
|
Master_Port = 'MYPORT_1'
|
||||||
|
Relay_Log_File = 'mysqld-relay-bin-master1.000002'
|
||||||
|
Slave_IO_Running = 'Yes'
|
||||||
|
Slave_SQL_Running = 'Yes'
|
||||||
|
Last_Errno = '0'
|
||||||
|
Last_SQL_Errno = '0'
|
||||||
|
Slave_heartbeat_period = '60.000'
|
||||||
|
#
|
||||||
|
connection master1;
|
||||||
|
drop database if exists db1;
|
||||||
|
create database db1;
|
||||||
|
use db1;
|
||||||
|
create table t1 (i int auto_increment, f1 varchar(16), primary key pk (i,f1)) engine=MyISAM;
|
||||||
|
Warnings:
|
||||||
|
Warning 1280 Name 'pk' ignored for PRIMARY key.
|
||||||
|
insert into t1 (f1) values ('one'),('two');
|
||||||
|
connection slave;
|
||||||
|
select * from db1.t1;
|
||||||
|
i f1
|
||||||
|
1 one
|
||||||
|
2 two
|
||||||
|
# List of relay log files in the datadir
|
||||||
|
mysqld-relay-bin-master1.000001
|
||||||
|
mysqld-relay-bin-master1.000002
|
||||||
|
mysqld-relay-bin-master1.index
|
||||||
|
include/show_events.inc
|
||||||
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
|
mysqld-relay-bin-master1.000001 # Format_desc # # SERVER_VERSION, BINLOG_VERSION
|
||||||
|
mysqld-relay-bin-master1.000001 # Rotate # # mysqld-relay-bin-master1.000002;pos=4
|
||||||
|
include/show_events.inc
|
||||||
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
|
mysqld-relay-bin-master1.000002 # Format_desc # # SERVER_VERSION, BINLOG_VERSION
|
||||||
|
mysqld-relay-bin-master1.000002 # Rotate # # master-bin.000001;pos=POS
|
||||||
|
mysqld-relay-bin-master1.000002 # Format_desc # # SERVER_VERSION, BINLOG_VERSION
|
||||||
|
mysqld-relay-bin-master1.000002 # Gtid_list # # []
|
||||||
|
mysqld-relay-bin-master1.000002 # Binlog_checkpoint # # master-bin.000001
|
||||||
|
mysqld-relay-bin-master1.000002 # Gtid # # GTID #-#-#
|
||||||
|
mysqld-relay-bin-master1.000002 # Query # # drop database if exists db1
|
||||||
|
mysqld-relay-bin-master1.000002 # Gtid # # GTID #-#-#
|
||||||
|
mysqld-relay-bin-master1.000002 # Query # # create database db1
|
||||||
|
mysqld-relay-bin-master1.000002 # Gtid # # GTID #-#-#
|
||||||
|
mysqld-relay-bin-master1.000002 # Query # # use `db1`; create table t1 (i int auto_increment, f1 varchar(16), primary key pk (i,f1)) engine=MyISAM
|
||||||
|
mysqld-relay-bin-master1.000002 # Gtid # # BEGIN GTID #-#-#
|
||||||
|
mysqld-relay-bin-master1.000002 # Intvar # # INSERT_ID=1
|
||||||
|
mysqld-relay-bin-master1.000002 # Query # # use `db1`; insert into t1 (f1) values ('one'),('two')
|
||||||
|
mysqld-relay-bin-master1.000002 # Query # # COMMIT
|
||||||
|
change master to
|
||||||
|
master_port=MYPORT_2,
|
||||||
|
master_host='127.0.0.1',
|
||||||
|
master_user='root'
|
||||||
|
for channel 'master1';
|
||||||
|
ERROR HY000: This operation cannot be performed as you have a running slave 'master1'; run STOP SLAVE 'master1' first
|
||||||
|
change master to
|
||||||
|
master_port=MYPORT_2,
|
||||||
|
master_host='127.0.0.1',
|
||||||
|
master_user='root';
|
||||||
|
ERROR HY000: This operation cannot be performed as you have a running slave 'master1'; run STOP SLAVE 'master1' first
|
||||||
|
change master to
|
||||||
|
master_port=MYPORT_1,
|
||||||
|
master_host='127.0.0.1',
|
||||||
|
master_user='root' for channel 'master2';
|
||||||
|
ERROR HY000: Connection 'master2' conflicts with existing connection 'master1'
|
||||||
|
set default_master_connection = '';
|
||||||
|
change master to
|
||||||
|
master_port=MYPORT_2,
|
||||||
|
master_host='127.0.0.1',
|
||||||
|
master_user='root';
|
||||||
|
start slave;
|
||||||
|
include/wait_for_slave_to_start.inc
|
||||||
|
#
|
||||||
|
# Checking SHOW ALL SLAVES STATUS
|
||||||
|
#
|
||||||
|
Connection_name = ''
|
||||||
|
Connection_name = 'master1'
|
||||||
|
Master_Port = 'MYPORT_2'
|
||||||
|
Master_Port = 'MYPORT_1'
|
||||||
|
Relay_Log_File = 'mysqld-relay-bin.000002'
|
||||||
|
Relay_Log_File = 'mysqld-relay-bin-master1.000002'
|
||||||
|
Slave_IO_Running = 'Yes'
|
||||||
|
Slave_IO_Running = 'Yes'
|
||||||
|
Slave_SQL_Running = 'Yes'
|
||||||
|
Slave_SQL_Running = 'Yes'
|
||||||
|
Last_Errno = '0'
|
||||||
|
Last_Errno = '0'
|
||||||
|
Last_SQL_Errno = '0'
|
||||||
|
Last_SQL_Errno = '0'
|
||||||
|
Slave_heartbeat_period = '60.000'
|
||||||
|
Slave_heartbeat_period = '60.000'
|
||||||
|
#
|
||||||
|
connection master1;
|
||||||
|
insert into t1 (f1) values ('three');
|
||||||
|
connect master2,127.0.0.1,root,,,$SERVER_MYPORT_2;
|
||||||
|
drop database if exists db2;
|
||||||
|
create database db2;
|
||||||
|
use db2;
|
||||||
|
create table t1 (pk int auto_increment primary key, f1 int) engine=InnoDB;
|
||||||
|
begin;
|
||||||
|
insert into t1 (f1) values (1),(2);
|
||||||
|
connection slave;
|
||||||
|
connection master2;
|
||||||
|
connection slave;
|
||||||
|
select * from db1.t1;
|
||||||
|
i f1
|
||||||
|
1 one
|
||||||
|
2 two
|
||||||
|
3 three
|
||||||
|
select * from db2.t1;
|
||||||
|
pk f1
|
||||||
|
connection master2;
|
||||||
|
commit;
|
||||||
|
connection slave;
|
||||||
|
select * from db2.t1;
|
||||||
|
pk f1
|
||||||
|
1 1
|
||||||
|
2 2
|
||||||
|
connection master1;
|
||||||
|
flush logs;
|
||||||
|
connection slave;
|
||||||
|
connection master1;
|
||||||
|
purge binary logs to 'master-bin.000002';
|
||||||
|
show binary logs;
|
||||||
|
Log_name File_size
|
||||||
|
master-bin.000002 filesize
|
||||||
|
insert into t1 (f1) values ('four');
|
||||||
|
create table db1.t3 (f1 int) engine=InnoDB;
|
||||||
|
connection slave;
|
||||||
|
#
|
||||||
|
# Checking SHOW ALL SLAVES STATUS
|
||||||
|
#
|
||||||
|
Connection_name = ''
|
||||||
|
Connection_name = 'master1'
|
||||||
|
Master_Port = 'MYPORT_2'
|
||||||
|
Master_Port = 'MYPORT_1'
|
||||||
|
Relay_Log_File = 'mysqld-relay-bin.000002'
|
||||||
|
Relay_Log_File = 'mysqld-relay-bin-master1.000004'
|
||||||
|
Slave_IO_Running = 'Yes'
|
||||||
|
Slave_IO_Running = 'Yes'
|
||||||
|
Slave_SQL_Running = 'Yes'
|
||||||
|
Slave_SQL_Running = 'Yes'
|
||||||
|
Last_Errno = '0'
|
||||||
|
Last_Errno = '0'
|
||||||
|
Last_SQL_Errno = '0'
|
||||||
|
Last_SQL_Errno = '0'
|
||||||
|
Slave_heartbeat_period = '60.000'
|
||||||
|
Slave_heartbeat_period = '60.000'
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# MDEV:16437: merge 5.7 P_S replication instrumentation and tables
|
||||||
|
#
|
||||||
|
SELECT * FROM performance_schema.replication_applier_status_by_coordinator;
|
||||||
|
CHANNEL_NAME master1
|
||||||
|
THREAD_ID #
|
||||||
|
SERVICE_STATE ON
|
||||||
|
LAST_ERROR_NUMBER 0
|
||||||
|
LAST_ERROR_MESSAGE
|
||||||
|
LAST_ERROR_TIMESTAMP 0000-00-00 00:00:00
|
||||||
|
LAST_SEEN_TRANSACTION 0-1-7
|
||||||
|
LAST_TRANS_RETRY_COUNT 0
|
||||||
|
CHANNEL_NAME
|
||||||
|
THREAD_ID #
|
||||||
|
SERVICE_STATE ON
|
||||||
|
LAST_ERROR_NUMBER 0
|
||||||
|
LAST_ERROR_MESSAGE
|
||||||
|
LAST_ERROR_TIMESTAMP 0000-00-00 00:00:00
|
||||||
|
LAST_SEEN_TRANSACTION 0-2-4
|
||||||
|
LAST_TRANS_RETRY_COUNT 0
|
||||||
|
select * from db1.t1;
|
||||||
|
i f1
|
||||||
|
1 one
|
||||||
|
2 two
|
||||||
|
3 three
|
||||||
|
4 four
|
||||||
|
include/show_events.inc
|
||||||
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
|
mysqld-relay-bin.000001 # Format_desc # # SERVER_VERSION, BINLOG_VERSION
|
||||||
|
mysqld-relay-bin.000001 # Rotate # # mysqld-relay-bin.000002;pos=4
|
||||||
|
include/show_events.inc
|
||||||
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
|
mysqld-relay-bin.000002 # Format_desc # # SERVER_VERSION, BINLOG_VERSION
|
||||||
|
mysqld-relay-bin.000002 # Rotate # # master-bin.000001;pos=POS
|
||||||
|
mysqld-relay-bin.000002 # Format_desc # # SERVER_VERSION, BINLOG_VERSION
|
||||||
|
mysqld-relay-bin.000002 # Gtid_list # # []
|
||||||
|
mysqld-relay-bin.000002 # Binlog_checkpoint # # master-bin.000001
|
||||||
|
mysqld-relay-bin.000002 # Gtid # # GTID #-#-#
|
||||||
|
mysqld-relay-bin.000002 # Query # # drop database if exists db2
|
||||||
|
mysqld-relay-bin.000002 # Gtid # # GTID #-#-#
|
||||||
|
mysqld-relay-bin.000002 # Query # # create database db2
|
||||||
|
mysqld-relay-bin.000002 # Gtid # # GTID #-#-#
|
||||||
|
mysqld-relay-bin.000002 # Query # # use `db2`; create table t1 (pk int auto_increment primary key, f1 int) engine=InnoDB
|
||||||
|
mysqld-relay-bin.000002 # Gtid # # BEGIN GTID #-#-#
|
||||||
|
mysqld-relay-bin.000002 # Intvar # # INSERT_ID=1
|
||||||
|
mysqld-relay-bin.000002 # Query # # use `db2`; insert into t1 (f1) values (1),(2)
|
||||||
|
mysqld-relay-bin.000002 # Xid # # COMMIT /* XID */
|
||||||
|
disconnect slave;
|
||||||
|
connect slave,127.0.0.1,root,,,$SERVER_MYPORT_3;
|
||||||
|
stop slave io_thread;
|
||||||
|
show status like 'Slave_running';
|
||||||
|
Variable_name Value
|
||||||
|
Slave_running OFF
|
||||||
|
set default_master_connection = 'master1';
|
||||||
|
show status like 'Slave_running';
|
||||||
|
Variable_name Value
|
||||||
|
Slave_running ON
|
||||||
|
|
||||||
|
#
|
||||||
|
# syntax compatible test
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# show relaylog events
|
||||||
|
#
|
||||||
|
SHOW RELAYLOG EVENTS for channel 'master1';
|
||||||
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
|
mysqld-relay-bin-master1.000003 4 Format_desc 3 256 Server ver: Version
|
||||||
|
mysqld-relay-bin-master1.000003 256 Rotate 1 1358 master-bin.000002;pos=4
|
||||||
|
mysqld-relay-bin-master1.000003 304 Rotate 3 366 mysqld-relay-bin-master1.000004;pos=4
|
||||||
|
|
||||||
|
show slave status for channel 'master1'
|
||||||
|
Master_Port = 'MYPORT_1'
|
||||||
|
Relay_Log_File = 'mysqld-relay-bin-master1.000004'
|
||||||
|
Slave_IO_Running = 'Yes'
|
||||||
|
Slave_SQL_Running = 'Yes'
|
||||||
|
Last_Errno = '0'
|
||||||
|
Last_SQL_Errno = '0'
|
||||||
|
|
||||||
|
#
|
||||||
|
# stop slave
|
||||||
|
#
|
||||||
|
STOP SLAVE for channel 'master1';
|
||||||
|
|
||||||
|
show slave status for channel 'master1'
|
||||||
|
Master_Port = 'MYPORT_1'
|
||||||
|
Relay_Log_File = 'mysqld-relay-bin-master1.000004'
|
||||||
|
Slave_IO_Running = 'No'
|
||||||
|
Slave_SQL_Running = 'No'
|
||||||
|
Last_Errno = '0'
|
||||||
|
Last_SQL_Errno = '0'
|
||||||
|
|
||||||
|
#
|
||||||
|
# start slave
|
||||||
|
#
|
||||||
|
START SLAVE for channel 'master1';
|
||||||
|
include/wait_for_slave_to_start.inc
|
||||||
|
|
||||||
|
show slave status for channel 'master1'
|
||||||
|
Master_Port = 'MYPORT_1'
|
||||||
|
Relay_Log_File = 'mysqld-relay-bin-master1.000005'
|
||||||
|
Slave_IO_Running = 'Yes'
|
||||||
|
Slave_SQL_Running = 'Yes'
|
||||||
|
Last_Errno = '0'
|
||||||
|
Last_SQL_Errno = '0'
|
||||||
|
|
||||||
|
#
|
||||||
|
# flush relay logs
|
||||||
|
#
|
||||||
|
FLUSH RELAY LOGS for channel 'master1';
|
||||||
|
|
||||||
|
show slave status for channel 'master1'
|
||||||
|
Master_Port = 'MYPORT_1'
|
||||||
|
Relay_Log_File = 'mysqld-relay-bin-master1.000006'
|
||||||
|
Slave_IO_Running = 'Yes'
|
||||||
|
Slave_SQL_Running = 'Yes'
|
||||||
|
Last_Errno = '0'
|
||||||
|
Last_SQL_Errno = '0'
|
||||||
|
|
||||||
|
#
|
||||||
|
# stop slave
|
||||||
|
#
|
||||||
|
STOP SLAVE for channel 'master1';
|
||||||
|
|
||||||
|
show slave status for channel 'master1'
|
||||||
|
Master_Port = 'MYPORT_1'
|
||||||
|
Relay_Log_File = 'mysqld-relay-bin-master1.000006'
|
||||||
|
Slave_IO_Running = 'No'
|
||||||
|
Slave_SQL_Running = 'No'
|
||||||
|
Last_Errno = '0'
|
||||||
|
Last_SQL_Errno = '0'
|
||||||
|
|
||||||
|
#
|
||||||
|
# reset slave
|
||||||
|
#
|
||||||
|
RESET SLAVE for channel 'master1';
|
||||||
|
|
||||||
|
show slave status for channel 'master1'
|
||||||
|
Master_Port = 'MYPORT_1'
|
||||||
|
Relay_Log_File = ''
|
||||||
|
Slave_IO_Running = 'No'
|
||||||
|
Slave_SQL_Running = 'No'
|
||||||
|
Last_Errno = '0'
|
||||||
|
Last_SQL_Errno = '0'
|
||||||
|
|
||||||
|
#
|
||||||
|
# show relaylog events after reset slave
|
||||||
|
#
|
||||||
|
SHOW RELAYLOG EVENTS for channel 'master1';
|
||||||
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
|
|
||||||
|
#
|
||||||
|
# check error syntax
|
||||||
|
#
|
||||||
|
RESET SLAVE 'master1' for channel 'mmaster2';
|
||||||
|
ERROR HY000: Incorrect arguments to CONNECTION_NAME AND FOR CHANNEL CAN NOT BE SPECIFIED AT THE SAME TIME)
|
||||||
|
STOP SLAVE 'master1' for channel 'master2';
|
||||||
|
ERROR HY000: Incorrect arguments to CONNECTION_NAME AND FOR CHANNEL CAN NOT BE SPECIFIED AT THE SAME TIME)
|
||||||
|
FLUSH RELAY LOGS 'master1' for channel 'master2';
|
||||||
|
ERROR HY000: Incorrect arguments to CONNECTION_NAME AND FOR CHANNEL CAN NOT BE SPECIFIED AT THE SAME TIME)
|
||||||
|
START SLAVE 'master1' for channel 'master2';
|
||||||
|
ERROR HY000: Incorrect arguments to CONNECTION_NAME AND FOR CHANNEL CAN NOT BE SPECIFIED AT THE SAME TIME)
|
||||||
|
SHOW RELAYLOG 'master1' EVENTS for channel 'master2';
|
||||||
|
ERROR HY000: Incorrect arguments to CONNECTION_NAME AND FOR CHANNEL CAN NOT BE SPECIFIED AT THE SAME TIME)
|
||||||
|
SHOW SLAVE 'master1' STATUS for channel 'master2';
|
||||||
|
ERROR HY000: Incorrect arguments to CONNECTION_NAME AND FOR CHANNEL CAN NOT BE SPECIFIED AT THE SAME TIME)
|
||||||
|
|
||||||
|
drop database db1;
|
||||||
|
drop database db2;
|
||||||
|
include/reset_master_slave.inc
|
||||||
|
disconnect slave;
|
||||||
|
connection master1;
|
||||||
|
drop database db1;
|
||||||
|
include/reset_master_slave.inc
|
||||||
|
disconnect master1;
|
||||||
|
connection master2;
|
||||||
|
drop database db2;
|
||||||
|
include/reset_master_slave.inc
|
||||||
|
disconnect master2;
|
||||||
|
connection default;
|
||||||
|
CREATE TABLE channel (channel int);
|
||||||
|
DROP TABLE channel;
|
429
mysql-test/suite/multi_source/multisource_for_channel.test
Normal file
429
mysql-test/suite/multi_source/multisource_for_channel.test
Normal file
@ -0,0 +1,429 @@
|
|||||||
|
#
|
||||||
|
# This is the basic test of support mysql syntax "for channel" used for
|
||||||
|
# multi-source replication
|
||||||
|
#
|
||||||
|
# Test basic replication functionality in multi-source setup
|
||||||
|
#
|
||||||
|
|
||||||
|
--source include/not_embedded.inc
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
--source include/have_perfschema.inc
|
||||||
|
--source include/binlog_start_pos.inc
|
||||||
|
--let $rpl_server_count= 0
|
||||||
|
|
||||||
|
RESET MASTER;
|
||||||
|
|
||||||
|
--connect (slave,127.0.0.1,root,,,$SERVER_MYPORT_3)
|
||||||
|
|
||||||
|
# MDEV-3984: crash/read of freed memory when changing master with named connection
|
||||||
|
# This fails after adding the new master 'abc1', check we do not free twice.
|
||||||
|
--error ER_RELAY_LOG_INIT
|
||||||
|
change master to relay_log_file='' for channel 'abc1';
|
||||||
|
# This fails before adding the new master, check that we do free it.
|
||||||
|
--error ER_WRONG_ARGUMENTS
|
||||||
|
change master to master_host='' for channel 'abc2';
|
||||||
|
|
||||||
|
# Start replication from the first master
|
||||||
|
|
||||||
|
--replace_result $SERVER_MYPORT_1 MYPORT_1
|
||||||
|
eval change master to
|
||||||
|
master_port=$SERVER_MYPORT_1,
|
||||||
|
master_host='127.0.0.1',
|
||||||
|
master_user='root'
|
||||||
|
for channel 'master1';
|
||||||
|
|
||||||
|
start slave for channel 'master1';
|
||||||
|
set default_master_connection = 'master1';
|
||||||
|
--source include/wait_for_slave_to_start.inc
|
||||||
|
|
||||||
|
--connect (master1,127.0.0.1,root,,,$SERVER_MYPORT_1)
|
||||||
|
--save_master_pos
|
||||||
|
|
||||||
|
--connection slave
|
||||||
|
--sync_with_master 0,'master1'
|
||||||
|
|
||||||
|
# Here and further: add an extra check on SQL thread status
|
||||||
|
# as the normal sync is not always enough
|
||||||
|
--source include/wait_for_sql_thread_read_all.inc
|
||||||
|
|
||||||
|
# each of the 3 commands should produce
|
||||||
|
# 'master1' status
|
||||||
|
|
||||||
|
let $wait_for_all= 1;
|
||||||
|
let $show_statement= SHOW ALL SLAVES STATUS;
|
||||||
|
let $field= Slave_IO_State;
|
||||||
|
let $condition= = 'Waiting for master to send event';
|
||||||
|
--source include/wait_show_condition.inc
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Checking SHOW SLAVE 'master1' STATUS
|
||||||
|
--echo #
|
||||||
|
--let $status_items= Master_Port, Relay_Log_File, Slave_IO_Running, Slave_SQL_Running, Last_Errno, Last_SQL_Errno
|
||||||
|
--let $slave_field_result_replace= /$SERVER_MYPORT_1/MYPORT_1/
|
||||||
|
--let $slave_name= 'master1'
|
||||||
|
--let for_channel= 1
|
||||||
|
--source include/show_slave_status.inc
|
||||||
|
--let $slave_name=
|
||||||
|
--let for_channel=
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Checking SHOW SLAVE STATUS
|
||||||
|
--echo #
|
||||||
|
--source include/show_slave_status.inc
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Checking SHOW ALL SLAVES STATUS
|
||||||
|
--echo #
|
||||||
|
--let $all_slaves_status= 1
|
||||||
|
--let $status_items= Connection_name, Master_Port, Relay_Log_File, Slave_IO_Running, Slave_SQL_Running, Last_Errno, Last_SQL_Errno, Slave_heartbeat_period
|
||||||
|
--source include/show_slave_status.inc
|
||||||
|
--let $all_slaves_status=
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
|
||||||
|
# Check that replication actually works
|
||||||
|
|
||||||
|
--connection master1
|
||||||
|
|
||||||
|
--disable_warnings
|
||||||
|
drop database if exists db1;
|
||||||
|
--enable_warnings
|
||||||
|
create database db1;
|
||||||
|
use db1;
|
||||||
|
create table t1 (i int auto_increment, f1 varchar(16), primary key pk (i,f1)) engine=MyISAM;
|
||||||
|
insert into t1 (f1) values ('one'),('two');
|
||||||
|
--save_master_pos
|
||||||
|
|
||||||
|
--connection slave
|
||||||
|
--sync_with_master 0,'master1'
|
||||||
|
|
||||||
|
--sorted_result
|
||||||
|
select * from db1.t1;
|
||||||
|
|
||||||
|
--let $datadir = `SELECT @@datadir`
|
||||||
|
|
||||||
|
--echo # List of relay log files in the datadir
|
||||||
|
--list_files $datadir mysqld-relay-bin-master1.*
|
||||||
|
|
||||||
|
# Check that relay logs are recognizable
|
||||||
|
|
||||||
|
let binlog_start=4;
|
||||||
|
let binlog_file=;
|
||||||
|
source include/show_relaylog_events.inc;
|
||||||
|
let binlog_file= mysqld-relay-bin-master1.000002;
|
||||||
|
source include/show_relaylog_events.inc;
|
||||||
|
|
||||||
|
# Try to configure connection with the same name again,
|
||||||
|
# should get an error because the slave is running
|
||||||
|
|
||||||
|
--replace_result $SERVER_MYPORT_2 MYPORT_2
|
||||||
|
--error ER_SLAVE_MUST_STOP
|
||||||
|
eval change master to
|
||||||
|
master_port=$SERVER_MYPORT_2,
|
||||||
|
master_host='127.0.0.1',
|
||||||
|
master_user='root'
|
||||||
|
for channel 'master1';
|
||||||
|
|
||||||
|
# Try to configure using the default connection name
|
||||||
|
# (which is 'master1' at the moment),
|
||||||
|
# again, should get an error
|
||||||
|
|
||||||
|
--replace_result $SERVER_MYPORT_2 MYPORT_2
|
||||||
|
--error ER_SLAVE_MUST_STOP
|
||||||
|
eval change master to
|
||||||
|
master_port=$SERVER_MYPORT_2,
|
||||||
|
master_host='127.0.0.1',
|
||||||
|
master_user='root';
|
||||||
|
|
||||||
|
# Try to configure a connection with the same master
|
||||||
|
# using a different name, should get a conflict
|
||||||
|
|
||||||
|
--replace_result $SERVER_MYPORT_1 MYPORT_1
|
||||||
|
--error ER_CONNECTION_ALREADY_EXISTS
|
||||||
|
eval change master to
|
||||||
|
master_port=$SERVER_MYPORT_1,
|
||||||
|
master_host='127.0.0.1',
|
||||||
|
master_user='root' for channel 'master2';
|
||||||
|
|
||||||
|
|
||||||
|
# Set up a proper 'default' connection to master2
|
||||||
|
|
||||||
|
set default_master_connection = '';
|
||||||
|
|
||||||
|
--replace_result $SERVER_MYPORT_2 MYPORT_2
|
||||||
|
eval change master to
|
||||||
|
master_port=$SERVER_MYPORT_2,
|
||||||
|
master_host='127.0.0.1',
|
||||||
|
master_user='root';
|
||||||
|
|
||||||
|
start slave;
|
||||||
|
--source include/wait_for_slave_to_start.inc
|
||||||
|
|
||||||
|
--source include/wait_for_sql_thread_read_all.inc
|
||||||
|
|
||||||
|
# See both connections in the same status output
|
||||||
|
|
||||||
|
let $wait_for_all= 1;
|
||||||
|
let $show_statement= SHOW ALL SLAVES STATUS;
|
||||||
|
let $field= Slave_IO_State;
|
||||||
|
let $condition= = 'Waiting for master to send event';
|
||||||
|
--source include/wait_show_condition.inc
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Checking SHOW ALL SLAVES STATUS
|
||||||
|
--echo #
|
||||||
|
--let $all_slaves_status= 1
|
||||||
|
--let $status_items= Connection_name, Master_Port, Relay_Log_File, Slave_IO_Running, Slave_SQL_Running, Last_Errno, Last_SQL_Errno, Slave_heartbeat_period
|
||||||
|
--let $slave_field_result_replace= /$SERVER_MYPORT_1/MYPORT_1/ /$SERVER_MYPORT_2/MYPORT_2/
|
||||||
|
--source include/show_slave_status.inc
|
||||||
|
--let $all_slaves_status=
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
# Check that replication from two servers actually works
|
||||||
|
|
||||||
|
--connection master1
|
||||||
|
|
||||||
|
insert into t1 (f1) values ('three');
|
||||||
|
--save_master_pos
|
||||||
|
|
||||||
|
--connect (master2,127.0.0.1,root,,,$SERVER_MYPORT_2)
|
||||||
|
|
||||||
|
--disable_warnings
|
||||||
|
drop database if exists db2;
|
||||||
|
--enable_warnings
|
||||||
|
create database db2;
|
||||||
|
use db2;
|
||||||
|
create table t1 (pk int auto_increment primary key, f1 int) engine=InnoDB;
|
||||||
|
begin;
|
||||||
|
insert into t1 (f1) values (1),(2);
|
||||||
|
|
||||||
|
--connection slave
|
||||||
|
--sync_with_master 0,'master1'
|
||||||
|
|
||||||
|
--connection master2
|
||||||
|
--save_master_pos
|
||||||
|
|
||||||
|
--connection slave
|
||||||
|
--sync_with_master 0
|
||||||
|
--sorted_result
|
||||||
|
select * from db1.t1;
|
||||||
|
select * from db2.t1;
|
||||||
|
|
||||||
|
--connection master2
|
||||||
|
commit;
|
||||||
|
--save_master_pos
|
||||||
|
|
||||||
|
--connection slave
|
||||||
|
--sync_with_master 0
|
||||||
|
--sorted_result
|
||||||
|
select * from db2.t1;
|
||||||
|
|
||||||
|
# Flush and purge logs on one master,
|
||||||
|
# make sure slaves don't get confused
|
||||||
|
|
||||||
|
--connection master1
|
||||||
|
flush logs;
|
||||||
|
--source include/wait_for_binlog_checkpoint.inc
|
||||||
|
--save_master_pos
|
||||||
|
--connection slave
|
||||||
|
--sync_with_master 0, 'master1'
|
||||||
|
|
||||||
|
--connection master1
|
||||||
|
purge binary logs to 'master-bin.000002';
|
||||||
|
# Additional events: 43 (Gtid_list) + 2 x 44 (Binlog_checkpoint) = 131
|
||||||
|
let filesize=`select $binlog_start_pos+131`;
|
||||||
|
--replace_result $filesize filesize
|
||||||
|
show binary logs;
|
||||||
|
insert into t1 (f1) values ('four');
|
||||||
|
create table db1.t3 (f1 int) engine=InnoDB;
|
||||||
|
--save_master_pos
|
||||||
|
|
||||||
|
--connection slave
|
||||||
|
--sync_with_master 0,'master1'
|
||||||
|
|
||||||
|
--source include/wait_for_sql_thread_read_all.inc
|
||||||
|
|
||||||
|
let $wait_for_all= 1;
|
||||||
|
let $show_statement= SHOW ALL SLAVES STATUS;
|
||||||
|
let $field= Slave_IO_State;
|
||||||
|
let $condition= = 'Waiting for master to send event';
|
||||||
|
--source include/wait_show_condition.inc
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Checking SHOW ALL SLAVES STATUS
|
||||||
|
--echo #
|
||||||
|
--let $all_slaves_status= 1
|
||||||
|
--let $status_items= Connection_name, Master_Port, Relay_Log_File, Slave_IO_Running, Slave_SQL_Running, Last_Errno, Last_SQL_Errno, Slave_heartbeat_period
|
||||||
|
--let $slave_field_result_replace= /$SERVER_MYPORT_1/MYPORT_1/ /$SERVER_MYPORT_2/MYPORT_2/
|
||||||
|
--source include/show_slave_status.inc
|
||||||
|
--let $all_slaves_status=
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV:16437: merge 5.7 P_S replication instrumentation and tables
|
||||||
|
--echo #
|
||||||
|
--replace_column 2 #
|
||||||
|
query_vertical SELECT * FROM performance_schema.replication_applier_status_by_coordinator;
|
||||||
|
|
||||||
|
--sorted_result
|
||||||
|
select * from db1.t1;
|
||||||
|
|
||||||
|
# This should show relay log events for the default master
|
||||||
|
# (the one with the empty name)
|
||||||
|
let binlog_file=;
|
||||||
|
source include/show_relaylog_events.inc;
|
||||||
|
let binlog_file= mysqld-relay-bin.000002;
|
||||||
|
source include/show_relaylog_events.inc;
|
||||||
|
|
||||||
|
# Make sure we don't lose control over replication connections
|
||||||
|
# after reconnecting to the slave
|
||||||
|
|
||||||
|
--disconnect slave
|
||||||
|
--connect (slave,127.0.0.1,root,,,$SERVER_MYPORT_3)
|
||||||
|
|
||||||
|
stop slave io_thread;
|
||||||
|
show status like 'Slave_running';
|
||||||
|
set default_master_connection = 'master1';
|
||||||
|
show status like 'Slave_running';
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo #
|
||||||
|
--echo # syntax compatible test
|
||||||
|
--echo #
|
||||||
|
--echo
|
||||||
|
--echo #
|
||||||
|
--echo # show relaylog events
|
||||||
|
--echo #
|
||||||
|
--replace_regex /Server ver:.*/Server ver: Version/
|
||||||
|
SHOW RELAYLOG EVENTS for channel 'master1';
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo show slave status for channel 'master1'
|
||||||
|
--let $status_items= Master_Port, Relay_Log_File, Slave_IO_Running, Slave_SQL_Running, Last_Errno, Last_SQL_Errno
|
||||||
|
--let $slave_field_result_replace= /$SERVER_MYPORT_1/MYPORT_1/
|
||||||
|
--let $slave_name= 'master1'
|
||||||
|
--let $for_channel= 1
|
||||||
|
--source include/show_slave_status.inc
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo #
|
||||||
|
--echo # stop slave
|
||||||
|
--echo #
|
||||||
|
STOP SLAVE for channel 'master1';
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo show slave status for channel 'master1'
|
||||||
|
--let $status_items= Master_Port, Relay_Log_File, Slave_IO_Running, Slave_SQL_Running, Last_Errno, Last_SQL_Errno
|
||||||
|
--let $slave_field_result_replace= /$SERVER_MYPORT_1/MYPORT_1/
|
||||||
|
--let $slave_name= 'master1'
|
||||||
|
--let $for_channel= 1
|
||||||
|
--source include/show_slave_status.inc
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo #
|
||||||
|
--echo # start slave
|
||||||
|
--echo #
|
||||||
|
START SLAVE for channel 'master1';
|
||||||
|
--source include/wait_for_slave_to_start.inc
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo show slave status for channel 'master1'
|
||||||
|
--let $status_items= Master_Port, Relay_Log_File, Slave_IO_Running, Slave_SQL_Running, Last_Errno, Last_SQL_Errno
|
||||||
|
--let $slave_field_result_replace= /$SERVER_MYPORT_1/MYPORT_1/ /Preparing/Yes/
|
||||||
|
--let $slave_name= 'master1'
|
||||||
|
--let $for_channel= 1
|
||||||
|
--source include/show_slave_status.inc
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo #
|
||||||
|
--echo # flush relay logs
|
||||||
|
--echo #
|
||||||
|
FLUSH RELAY LOGS for channel 'master1';
|
||||||
|
--source include/wait_for_sql_thread_read_all.inc
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo show slave status for channel 'master1'
|
||||||
|
--let $status_items= Master_Port, Relay_Log_File, Slave_IO_Running, Slave_SQL_Running, Last_Errno, Last_SQL_Errno
|
||||||
|
--let $slave_field_result_replace= /$SERVER_MYPORT_1/MYPORT_1/
|
||||||
|
--let $slave_name= 'master1'
|
||||||
|
--let $for_channel= 1
|
||||||
|
--source include/show_slave_status.inc
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo #
|
||||||
|
--echo # stop slave
|
||||||
|
--echo #
|
||||||
|
STOP SLAVE for channel 'master1';
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo show slave status for channel 'master1'
|
||||||
|
--let $status_items= Master_Port, Relay_Log_File, Slave_IO_Running, Slave_SQL_Running, Last_Errno, Last_SQL_Errno
|
||||||
|
--let $slave_field_result_replace= /$SERVER_MYPORT_1/MYPORT_1/
|
||||||
|
--let $slave_name= 'master1'
|
||||||
|
--let $for_channel= 1
|
||||||
|
--source include/show_slave_status.inc
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo #
|
||||||
|
--echo # reset slave
|
||||||
|
--echo #
|
||||||
|
RESET SLAVE for channel 'master1';
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo show slave status for channel 'master1'
|
||||||
|
--let $status_items= Master_Port, Relay_Log_File, Slave_IO_Running, Slave_SQL_Running, Last_Errno, Last_SQL_Errno
|
||||||
|
--let $slave_field_result_replace= /$SERVER_MYPORT_1/MYPORT_1/
|
||||||
|
--let $slave_name= 'master1'
|
||||||
|
--let $for_channel= 1
|
||||||
|
--source include/show_slave_status.inc
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo #
|
||||||
|
--echo # show relaylog events after reset slave
|
||||||
|
--echo #
|
||||||
|
SHOW RELAYLOG EVENTS for channel 'master1';
|
||||||
|
|
||||||
|
--let $slave_name=
|
||||||
|
--let for_channel=
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo #
|
||||||
|
--echo # check error syntax
|
||||||
|
--echo #
|
||||||
|
--error ER_WRONG_ARGUMENTS
|
||||||
|
RESET SLAVE 'master1' for channel 'mmaster2';
|
||||||
|
--error ER_WRONG_ARGUMENTS
|
||||||
|
STOP SLAVE 'master1' for channel 'master2';
|
||||||
|
--error ER_WRONG_ARGUMENTS
|
||||||
|
FLUSH RELAY LOGS 'master1' for channel 'master2';
|
||||||
|
--error ER_WRONG_ARGUMENTS
|
||||||
|
START SLAVE 'master1' for channel 'master2';
|
||||||
|
--error ER_WRONG_ARGUMENTS
|
||||||
|
SHOW RELAYLOG 'master1' EVENTS for channel 'master2';
|
||||||
|
--error ER_WRONG_ARGUMENTS
|
||||||
|
SHOW SLAVE 'master1' STATUS for channel 'master2';
|
||||||
|
|
||||||
|
--echo
|
||||||
|
# Cleanup
|
||||||
|
drop database db1;
|
||||||
|
drop database db2;
|
||||||
|
|
||||||
|
--source include/reset_master_slave.inc
|
||||||
|
--disconnect slave
|
||||||
|
|
||||||
|
--connection master1
|
||||||
|
drop database db1;
|
||||||
|
--source include/reset_master_slave.inc
|
||||||
|
--disconnect master1
|
||||||
|
|
||||||
|
--connection master2
|
||||||
|
drop database db2;
|
||||||
|
--source include/reset_master_slave.inc
|
||||||
|
--disconnect master2
|
||||||
|
|
||||||
|
#
|
||||||
|
# Check channel as a keyword
|
||||||
|
#
|
||||||
|
--connection default
|
||||||
|
CREATE TABLE channel (channel int);
|
||||||
|
DROP TABLE channel;
|
@ -8,5 +8,5 @@ SELECT 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1
|
|||||||
####################################
|
####################################
|
||||||
SELECT event_name, digest, digest_text, sql_text FROM events_statements_history_long;
|
SELECT event_name, digest, digest_text, sql_text FROM events_statements_history_long;
|
||||||
event_name digest digest_text sql_text
|
event_name digest digest_text sql_text
|
||||||
statement/sql/select cf4e66f3ef1e0c9905538c220053cbda SELECT ? + ? + SELECT ...
|
statement/sql/select ca9181d6d668396d467dd974f58a9402 SELECT ? + ? + SELECT ...
|
||||||
statement/sql/truncate f874a3c85ab326928c042dbd544916f9 TRUNCATE TABLE truncat...
|
statement/sql/truncate 460cb5329baea0e4242059cfda01d1d7 TRUNCATE TABLE truncat...
|
||||||
|
@ -110,6 +110,7 @@ SYMBOL symbols[] = {
|
|||||||
{ "CHAIN", SYM(CHAIN_SYM)},
|
{ "CHAIN", SYM(CHAIN_SYM)},
|
||||||
{ "CHANGE", SYM(CHANGE)},
|
{ "CHANGE", SYM(CHANGE)},
|
||||||
{ "CHANGED", SYM(CHANGED)},
|
{ "CHANGED", SYM(CHANGED)},
|
||||||
|
{ "CHANNEL", SYM(CHANNEL_SYM)},
|
||||||
{ "CHAR", SYM(CHAR_SYM)},
|
{ "CHAR", SYM(CHAR_SYM)},
|
||||||
{ "CHARACTER", SYM(CHAR_SYM)},
|
{ "CHARACTER", SYM(CHAR_SYM)},
|
||||||
{ "CHARSET", SYM(CHARSET)},
|
{ "CHARSET", SYM(CHARSET)},
|
||||||
|
@ -778,6 +778,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, size_t *yystacksize);
|
|||||||
%token <kwd> CATALOG_NAME_SYM /* SQL-2003-N */
|
%token <kwd> CATALOG_NAME_SYM /* SQL-2003-N */
|
||||||
%token <kwd> CHAIN_SYM /* SQL-2003-N */
|
%token <kwd> CHAIN_SYM /* SQL-2003-N */
|
||||||
%token <kwd> CHANGED
|
%token <kwd> CHANGED
|
||||||
|
%token <kwd> CHANNEL_SYM
|
||||||
%token <kwd> CHARSET
|
%token <kwd> CHARSET
|
||||||
%token <kwd> CHECKPOINT_SYM
|
%token <kwd> CHECKPOINT_SYM
|
||||||
%token <kwd> CHECKSUM_SYM
|
%token <kwd> CHECKSUM_SYM
|
||||||
@ -2076,6 +2077,7 @@ change:
|
|||||||
Lex->sql_command = SQLCOM_CHANGE_MASTER;
|
Lex->sql_command = SQLCOM_CHANGE_MASTER;
|
||||||
}
|
}
|
||||||
master_defs
|
master_defs
|
||||||
|
optional_for_channel
|
||||||
{}
|
{}
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -2307,6 +2309,34 @@ connection_name:
|
|||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
|
optional_for_channel:
|
||||||
|
/* empty */
|
||||||
|
{
|
||||||
|
/*do nothing */
|
||||||
|
}
|
||||||
|
| for_channel
|
||||||
|
|
||||||
|
;
|
||||||
|
|
||||||
|
for_channel:
|
||||||
|
FOR_SYM CHANNEL_SYM TEXT_STRING_sys
|
||||||
|
{
|
||||||
|
if (Lex->mi.connection_name.str != NULL)
|
||||||
|
{
|
||||||
|
my_yyabort_error((ER_WRONG_ARGUMENTS, MYF(0), "CONNECTION_NAME AND FOR CHANNEL CAN NOT BE SPECIFIED AT THE SAME TIME)"));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Lex->mi.connection_name= $3;
|
||||||
|
#ifdef HAVE_REPLICATION
|
||||||
|
if (unlikely(check_master_connection_name(&$3)))
|
||||||
|
my_yyabort_error((ER_WRONG_ARGUMENTS, MYF(0), "MASTER_CONNECTION_NAME"));
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
/* create a table */
|
/* create a table */
|
||||||
|
|
||||||
create:
|
create:
|
||||||
@ -8030,7 +8060,7 @@ opt_to:
|
|||||||
;
|
;
|
||||||
|
|
||||||
slave:
|
slave:
|
||||||
START_SYM SLAVE optional_connection_name slave_thread_opts
|
START_SYM SLAVE optional_connection_name slave_thread_opts optional_for_channel
|
||||||
{
|
{
|
||||||
LEX *lex=Lex;
|
LEX *lex=Lex;
|
||||||
lex->sql_command = SQLCOM_SLAVE_START;
|
lex->sql_command = SQLCOM_SLAVE_START;
|
||||||
@ -8047,7 +8077,7 @@ slave:
|
|||||||
/* If you change this code don't forget to update STOP SLAVE too */
|
/* If you change this code don't forget to update STOP SLAVE too */
|
||||||
}
|
}
|
||||||
{}
|
{}
|
||||||
| STOP_SYM SLAVE optional_connection_name slave_thread_opts
|
| STOP_SYM SLAVE optional_connection_name slave_thread_opts optional_for_channel
|
||||||
{
|
{
|
||||||
LEX *lex=Lex;
|
LEX *lex=Lex;
|
||||||
lex->sql_command = SQLCOM_SLAVE_STOP;
|
lex->sql_command = SQLCOM_SLAVE_STOP;
|
||||||
@ -13931,7 +13961,8 @@ show_param:
|
|||||||
LEX *lex= Lex;
|
LEX *lex= Lex;
|
||||||
lex->sql_command= SQLCOM_SHOW_RELAYLOG_EVENTS;
|
lex->sql_command= SQLCOM_SHOW_RELAYLOG_EVENTS;
|
||||||
}
|
}
|
||||||
opt_global_limit_clause
|
opt_global_limit_clause optional_for_channel
|
||||||
|
{ }
|
||||||
| keys_or_index from_or_in table_ident opt_db opt_where_clause
|
| keys_or_index from_or_in table_ident opt_db opt_where_clause
|
||||||
{
|
{
|
||||||
LEX *lex= Lex;
|
LEX *lex= Lex;
|
||||||
@ -14076,16 +14107,7 @@ show_param:
|
|||||||
MYSQL_YYABORT;
|
MYSQL_YYABORT;
|
||||||
Lex->sql_command = SQLCOM_SHOW_SLAVE_STAT;
|
Lex->sql_command = SQLCOM_SHOW_SLAVE_STAT;
|
||||||
}
|
}
|
||||||
| SLAVE STATUS_SYM
|
| SLAVE optional_connection_name STATUS_SYM optional_for_channel
|
||||||
{
|
|
||||||
LEX *lex= thd->lex;
|
|
||||||
lex->mi.connection_name= null_clex_str;
|
|
||||||
if (!(lex->m_sql_cmd= new (thd->mem_root)
|
|
||||||
Sql_cmd_show_slave_status()))
|
|
||||||
MYSQL_YYABORT;
|
|
||||||
lex->sql_command = SQLCOM_SHOW_SLAVE_STAT;
|
|
||||||
}
|
|
||||||
| SLAVE connection_name STATUS_SYM
|
|
||||||
{
|
{
|
||||||
if (!(Lex->m_sql_cmd= new (thd->mem_root)
|
if (!(Lex->m_sql_cmd= new (thd->mem_root)
|
||||||
Sql_cmd_show_slave_status()))
|
Sql_cmd_show_slave_status()))
|
||||||
@ -14470,7 +14492,7 @@ flush_option:
|
|||||||
{ Lex->type|= REFRESH_SLOW_LOG; }
|
{ Lex->type|= REFRESH_SLOW_LOG; }
|
||||||
| BINARY LOGS_SYM opt_delete_gtid_domain
|
| BINARY LOGS_SYM opt_delete_gtid_domain
|
||||||
{ Lex->type|= REFRESH_BINARY_LOG; }
|
{ Lex->type|= REFRESH_BINARY_LOG; }
|
||||||
| RELAY LOGS_SYM optional_connection_name
|
| RELAY LOGS_SYM optional_connection_name optional_for_channel
|
||||||
{
|
{
|
||||||
LEX *lex= Lex;
|
LEX *lex= Lex;
|
||||||
if (unlikely(lex->type & REFRESH_RELAY_LOG))
|
if (unlikely(lex->type & REFRESH_RELAY_LOG))
|
||||||
@ -14621,7 +14643,8 @@ reset_options:
|
|||||||
reset_option:
|
reset_option:
|
||||||
SLAVE { Lex->type|= REFRESH_SLAVE; }
|
SLAVE { Lex->type|= REFRESH_SLAVE; }
|
||||||
optional_connection_name
|
optional_connection_name
|
||||||
slave_reset_options { }
|
slave_reset_options optional_for_channel
|
||||||
|
{ }
|
||||||
| MASTER_SYM
|
| MASTER_SYM
|
||||||
{
|
{
|
||||||
Lex->type|= REFRESH_MASTER;
|
Lex->type|= REFRESH_MASTER;
|
||||||
@ -15918,6 +15941,7 @@ keyword_sp_var_and_label:
|
|||||||
| CASCADED
|
| CASCADED
|
||||||
| CATALOG_NAME_SYM
|
| CATALOG_NAME_SYM
|
||||||
| CHAIN_SYM
|
| CHAIN_SYM
|
||||||
|
| CHANNEL_SYM
|
||||||
| CHANGED
|
| CHANGED
|
||||||
| CIPHER_SYM
|
| CIPHER_SYM
|
||||||
| CLIENT_SYM
|
| CLIENT_SYM
|
||||||
|
Loading…
x
Reference in New Issue
Block a user