mirror of
https://github.com/MariaDB/server.git
synced 2025-11-27 05:41:41 +03:00
Merge 10.3 into 10.4
This commit is contained in:
40
mysql-test/suite/binlog/r/binlog_admin_cmd_kill.result
Normal file
40
mysql-test/suite/binlog/r/binlog_admin_cmd_kill.result
Normal file
@@ -0,0 +1,40 @@
|
||||
#
|
||||
# Kill OPTIMIZE command prior to table modification
|
||||
#
|
||||
RESET MASTER;
|
||||
CREATE TABLE t1 (f INT) ENGINE=INNODB;
|
||||
CREATE TABLE t2 (f INT) ENGINE=INNODB;
|
||||
connect con1,127.0.0.1,root,,test,$MASTER_MYPORT,;
|
||||
connection con1;
|
||||
SET debug_sync='admin_command_kill_before_modify SIGNAL ready_to_be_killed WAIT_FOR master_cont';
|
||||
OPTIMIZE TABLE t1,t2;
|
||||
connection default;
|
||||
SET debug_sync='now WAIT_FOR ready_to_be_killed';
|
||||
KILL THD_ID;
|
||||
SET debug_sync = 'reset';
|
||||
disconnect con1;
|
||||
include/show_binlog_events.inc
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Gtid # # GTID #-#-#
|
||||
master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (f INT) ENGINE=INNODB
|
||||
master-bin.000001 # Gtid # # GTID #-#-#
|
||||
master-bin.000001 # Query # # use `test`; CREATE TABLE t2 (f INT) ENGINE=INNODB
|
||||
DROP TABLE t1,t2;
|
||||
FLUSH LOGS;
|
||||
#
|
||||
# Kill OPTIMIZE command after table modification
|
||||
#
|
||||
CREATE TABLE t1 (f INT) ENGINE=INNODB;
|
||||
CREATE TABLE t2 (f INT) ENGINE=INNODB;
|
||||
connect con1,127.0.0.1,root,,test,$MASTER_MYPORT,;
|
||||
connection con1;
|
||||
SET debug_sync='admin_command_kill_after_modify SIGNAL ready_to_be_killed WAIT_FOR master_cont';
|
||||
OPTIMIZE TABLE t1,t2;
|
||||
connection default;
|
||||
SET debug_sync='now WAIT_FOR ready_to_be_killed';
|
||||
KILL THD_ID;
|
||||
SET debug_sync = 'reset';
|
||||
disconnect con1;
|
||||
DROP TABLE t1,t2;
|
||||
FLUSH LOGS;
|
||||
FOUND 1 /OPTIMIZE TABLE t1,t2/ in mysqlbinlog.out
|
||||
95
mysql-test/suite/binlog/t/binlog_admin_cmd_kill.test
Normal file
95
mysql-test/suite/binlog/t/binlog_admin_cmd_kill.test
Normal file
@@ -0,0 +1,95 @@
|
||||
# ==== Purpose ====
|
||||
#
|
||||
# Test verifies that when an admin command execution is interrupted by KILL
|
||||
# command it should stop its execution. The admin command in binary log should
|
||||
# contain only the list of tables which have successfully executed admin
|
||||
# command prior to kill.
|
||||
#
|
||||
# ==== Implementation ====
|
||||
#
|
||||
# Steps:
|
||||
# 0 - Create two table t1,t2.
|
||||
# 1 - Execute OPTIMIZE TABLE t1,t2 command.
|
||||
# 2 - Using debug sync mechanism kill OPTIMIZE TABLE command at a stage
|
||||
# where it has not optimized any table.
|
||||
# 3 - Check that OPTIMIZE TABLE command is not written to binary log.
|
||||
# 4 - Using debug sync mechanism hold the execution of OPTIMIZE TABLE after
|
||||
# t1 table optimization. Now kill the OPTIMIZE TABLE command.
|
||||
# 5 - Observe the binlog output, the OPTIMIZE TABLE command should display `t1,t2`.
|
||||
# 6 - Please note that, we binlog the entire query even if at least one
|
||||
# table is modified as admin commands are safe to replicate and they will
|
||||
# not make the slave to diverge.
|
||||
#
|
||||
# ==== References ====
|
||||
#
|
||||
# MDEV-22530: Aborting OPTIMIZE TABLE still logs in binary log and replicates to the Slave server.
|
||||
#
|
||||
--source include/have_log_bin.inc
|
||||
--source include/have_debug.inc
|
||||
--source include/have_debug_sync.inc
|
||||
--source include/have_innodb.inc
|
||||
|
||||
--echo #
|
||||
--echo # Kill OPTIMIZE command prior to table modification
|
||||
--echo #
|
||||
RESET MASTER;
|
||||
|
||||
CREATE TABLE t1 (f INT) ENGINE=INNODB;
|
||||
CREATE TABLE t2 (f INT) ENGINE=INNODB;
|
||||
|
||||
--connect(con1,127.0.0.1,root,,test,$MASTER_MYPORT,)
|
||||
--connection con1
|
||||
SET debug_sync='admin_command_kill_before_modify SIGNAL ready_to_be_killed WAIT_FOR master_cont';
|
||||
--send OPTIMIZE TABLE t1,t2
|
||||
|
||||
--connection default
|
||||
SET debug_sync='now WAIT_FOR ready_to_be_killed';
|
||||
--let $thd_id= `SELECT ID FROM INFORMATION_SCHEMA.PROCESSLIST WHERE INFO LIKE '%OPTIMIZE TABLE %'`
|
||||
|
||||
# Now kill.
|
||||
--replace_result $thd_id THD_ID
|
||||
eval KILL $thd_id;
|
||||
|
||||
SET debug_sync = 'reset';
|
||||
--disconnect con1
|
||||
|
||||
--source include/show_binlog_events.inc
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
FLUSH LOGS;
|
||||
|
||||
--echo #
|
||||
--echo # Kill OPTIMIZE command after table modification
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (f INT) ENGINE=INNODB;
|
||||
CREATE TABLE t2 (f INT) ENGINE=INNODB;
|
||||
|
||||
--connect(con1,127.0.0.1,root,,test,$MASTER_MYPORT,)
|
||||
--connection con1
|
||||
SET debug_sync='admin_command_kill_after_modify SIGNAL ready_to_be_killed WAIT_FOR master_cont';
|
||||
--send OPTIMIZE TABLE t1,t2
|
||||
|
||||
--connection default
|
||||
SET debug_sync='now WAIT_FOR ready_to_be_killed';
|
||||
--let $thd_id= `SELECT ID FROM INFORMATION_SCHEMA.PROCESSLIST WHERE INFO LIKE '%OPTIMIZE TABLE %'`
|
||||
|
||||
# Now kill.
|
||||
--replace_result $thd_id THD_ID
|
||||
eval KILL $thd_id;
|
||||
|
||||
SET debug_sync = 'reset';
|
||||
--disconnect con1
|
||||
|
||||
DROP TABLE t1,t2;
|
||||
let $binlog_file= query_get_value(SHOW MASTER STATUS, File, 1);
|
||||
FLUSH LOGS;
|
||||
|
||||
--let $MYSQLD_DATADIR= `select @@datadir`
|
||||
--exec $MYSQL_BINLOG $MYSQLD_DATADIR/$binlog_file > $MYSQLTEST_VARDIR/tmp/mysqlbinlog.out
|
||||
|
||||
--let SEARCH_PATTERN= OPTIMIZE TABLE t1,t2
|
||||
--let SEARCH_FILE= $MYSQLTEST_VARDIR/tmp/mysqlbinlog.out
|
||||
--source include/search_pattern_in_file.inc
|
||||
|
||||
--remove_file $MYSQLTEST_VARDIR/tmp/mysqlbinlog.out
|
||||
Reference in New Issue
Block a user