mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
Merge 10.5 into 10.6
This commit is contained in:
79
mysql-test/suite/rpl/r/rpl_mark_optimize_tbl_ddl.result
Normal file
79
mysql-test/suite/rpl/r/rpl_mark_optimize_tbl_ddl.result
Normal file
@@ -0,0 +1,79 @@
|
||||
include/rpl_init.inc [topology=1->2]
|
||||
connection server_1;
|
||||
FLUSH TABLES;
|
||||
ALTER TABLE mysql.gtid_slave_pos ENGINE=InnoDB;
|
||||
connection server_2;
|
||||
SET @save_slave_parallel_threads= @@GLOBAL.slave_parallel_threads;
|
||||
SET @save_slave_parallel_mode= @@GLOBAL.slave_parallel_mode;
|
||||
include/stop_slave.inc
|
||||
SET GLOBAL slave_parallel_threads=2;
|
||||
SET GLOBAL slave_parallel_mode=optimistic;
|
||||
include/start_slave.inc
|
||||
connection server_1;
|
||||
CREATE TABLE t1(a INT) ENGINE=INNODB;
|
||||
OPTIMIZE TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
|
||||
test.t1 optimize status OK
|
||||
INSERT INTO t1 VALUES(1);
|
||||
INSERT INTO t1 SELECT 1+a FROM t1;
|
||||
INSERT INTO t1 SELECT 2+a FROM t1;
|
||||
connection server_2;
|
||||
#
|
||||
# Verify that following admin commands are marked as ddl
|
||||
# 'OPTIMIZE TABLE', 'REPAIR TABLE' and 'ANALYZE TABLE'
|
||||
#
|
||||
connection server_1;
|
||||
OPTIMIZE TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
|
||||
test.t1 optimize status OK
|
||||
REPAIR TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 repair note The storage engine for the table doesn't support repair
|
||||
ANALYZE TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 analyze status Engine-independent statistics collected
|
||||
test.t1 analyze status OK
|
||||
FLUSH LOGS;
|
||||
FOUND 1 /GTID 0-1-8 ddl/ in mysqlbinlog.out
|
||||
FOUND 1 /GTID 0-1-9 ddl/ in mysqlbinlog.out
|
||||
FOUND 1 /GTID 0-1-10 ddl/ in mysqlbinlog.out
|
||||
#
|
||||
# Clean up
|
||||
#
|
||||
DROP TABLE t1;
|
||||
connection server_2;
|
||||
FLUSH LOGS;
|
||||
#
|
||||
# Check that ALTER TABLE commands with ANALYZE, OPTIMIZE and REPAIR on
|
||||
# partitions will be marked as DDL in binary log.
|
||||
#
|
||||
connection server_1;
|
||||
CREATE TABLE t1(id INT) PARTITION BY RANGE (id) (PARTITION p0 VALUES LESS THAN (100),
|
||||
PARTITION pmax VALUES LESS THAN (MAXVALUE));
|
||||
INSERT INTO t1 VALUES (1), (10), (100), (1000);
|
||||
ALTER TABLE t1 ANALYZE PARTITION p0;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 analyze status Engine-independent statistics collected
|
||||
test.t1 analyze status OK
|
||||
ALTER TABLE t1 OPTIMIZE PARTITION p0;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 optimize status OK
|
||||
ALTER TABLE t1 REPAIR PARTITION p0;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 repair status OK
|
||||
FLUSH LOGS;
|
||||
FOUND 1 /GTID 0-1-14 ddl/ in mysqlbinlog.out
|
||||
FOUND 1 /GTID 0-1-15 ddl/ in mysqlbinlog.out
|
||||
FOUND 1 /GTID 0-1-16 ddl/ in mysqlbinlog.out
|
||||
#
|
||||
# Clean up
|
||||
#
|
||||
DROP TABLE t1;
|
||||
connection server_2;
|
||||
include/stop_slave.inc
|
||||
SET GLOBAL slave_parallel_threads= @save_slave_parallel_threads;
|
||||
SET GLOBAL slave_parallel_mode= @save_slave_parallel_mode;
|
||||
include/start_slave.inc
|
||||
include/rpl_end.inc
|
142
mysql-test/suite/rpl/t/rpl_mark_optimize_tbl_ddl.test
Normal file
142
mysql-test/suite/rpl/t/rpl_mark_optimize_tbl_ddl.test
Normal file
@@ -0,0 +1,142 @@
|
||||
# ==== Purpose ====
|
||||
#
|
||||
# Test verifies that there is no deadlock or assertion in
|
||||
# slave_parallel_mode=optimistic configuration while applying admin command
|
||||
# like 'OPTIMIZE TABLE', 'REPAIR TABLE' and 'ANALYZE TABLE'.
|
||||
#
|
||||
# ==== Implementation ====
|
||||
#
|
||||
# Steps:
|
||||
# 0 - Create a table, execute OPTIMIZE TABLE command on the table followed
|
||||
# by some DMLS.
|
||||
# 1 - No assert should happen on slave server.
|
||||
# 2 - Assert that 'OPTIMIZE TABLE', 'REPAIR TABLE' and 'ANALYZE TABLE' are
|
||||
# marked as 'DDL' in the binary log.
|
||||
#
|
||||
# ==== References ====
|
||||
#
|
||||
# MDEV-17515: GTID Replication in optimistic mode deadlock
|
||||
#
|
||||
--source include/have_partition.inc
|
||||
--source include/have_innodb.inc
|
||||
--let $rpl_topology=1->2
|
||||
--source include/rpl_init.inc
|
||||
|
||||
--connection server_1
|
||||
FLUSH TABLES;
|
||||
ALTER TABLE mysql.gtid_slave_pos ENGINE=InnoDB;
|
||||
|
||||
--connection server_2
|
||||
SET @save_slave_parallel_threads= @@GLOBAL.slave_parallel_threads;
|
||||
SET @save_slave_parallel_mode= @@GLOBAL.slave_parallel_mode;
|
||||
--source include/stop_slave.inc
|
||||
SET GLOBAL slave_parallel_threads=2;
|
||||
SET GLOBAL slave_parallel_mode=optimistic;
|
||||
--source include/start_slave.inc
|
||||
|
||||
--connection server_1
|
||||
CREATE TABLE t1(a INT) ENGINE=INNODB;
|
||||
OPTIMIZE TABLE t1;
|
||||
INSERT INTO t1 VALUES(1);
|
||||
INSERT INTO t1 SELECT 1+a FROM t1;
|
||||
INSERT INTO t1 SELECT 2+a FROM t1;
|
||||
--save_master_pos
|
||||
|
||||
--connection server_2
|
||||
--sync_with_master
|
||||
|
||||
--echo #
|
||||
--echo # Verify that following admin commands are marked as ddl
|
||||
--echo # 'OPTIMIZE TABLE', 'REPAIR TABLE' and 'ANALYZE TABLE'
|
||||
--echo #
|
||||
--connection server_1
|
||||
|
||||
OPTIMIZE TABLE t1;
|
||||
--let optimize_gtid= `SELECT @@GLOBAL.gtid_binlog_pos`
|
||||
|
||||
REPAIR TABLE t1;
|
||||
--let repair_gtid= `SELECT @@GLOBAL.gtid_binlog_pos`
|
||||
|
||||
ANALYZE TABLE t1;
|
||||
--let analyze_gtid= `SELECT @@GLOBAL.gtid_binlog_pos`
|
||||
|
||||
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= GTID $optimize_gtid ddl
|
||||
--let SEARCH_FILE= $MYSQLTEST_VARDIR/tmp/mysqlbinlog.out
|
||||
--source include/search_pattern_in_file.inc
|
||||
|
||||
--let SEARCH_PATTERN= GTID $repair_gtid ddl
|
||||
--let SEARCH_FILE= $MYSQLTEST_VARDIR/tmp/mysqlbinlog.out
|
||||
--source include/search_pattern_in_file.inc
|
||||
|
||||
--let SEARCH_PATTERN= GTID $analyze_gtid ddl
|
||||
--let SEARCH_FILE= $MYSQLTEST_VARDIR/tmp/mysqlbinlog.out
|
||||
--source include/search_pattern_in_file.inc
|
||||
|
||||
--echo #
|
||||
--echo # Clean up
|
||||
--echo #
|
||||
DROP TABLE t1;
|
||||
--remove_file $MYSQLTEST_VARDIR/tmp/mysqlbinlog.out
|
||||
--save_master_pos
|
||||
|
||||
--connection server_2
|
||||
--sync_with_master
|
||||
FLUSH LOGS;
|
||||
|
||||
--echo #
|
||||
--echo # Check that ALTER TABLE commands with ANALYZE, OPTIMIZE and REPAIR on
|
||||
--echo # partitions will be marked as DDL in binary log.
|
||||
--echo #
|
||||
--connection server_1
|
||||
CREATE TABLE t1(id INT) PARTITION BY RANGE (id) (PARTITION p0 VALUES LESS THAN (100),
|
||||
PARTITION pmax VALUES LESS THAN (MAXVALUE));
|
||||
INSERT INTO t1 VALUES (1), (10), (100), (1000);
|
||||
|
||||
ALTER TABLE t1 ANALYZE PARTITION p0;
|
||||
--let analyze_gtid= `SELECT @@GLOBAL.gtid_binlog_pos`
|
||||
|
||||
ALTER TABLE t1 OPTIMIZE PARTITION p0;
|
||||
--let optimize_gtid= `SELECT @@GLOBAL.gtid_binlog_pos`
|
||||
|
||||
ALTER TABLE t1 REPAIR PARTITION p0;
|
||||
--let repair_gtid= `SELECT @@GLOBAL.gtid_binlog_pos`
|
||||
|
||||
let $binlog_file= query_get_value(SHOW MASTER STATUS, File, 1);
|
||||
FLUSH LOGS;
|
||||
|
||||
--exec $MYSQL_BINLOG $MYSQLD_DATADIR/$binlog_file > $MYSQLTEST_VARDIR/tmp/mysqlbinlog.out
|
||||
|
||||
--let SEARCH_PATTERN= GTID $analyze_gtid ddl
|
||||
--let SEARCH_FILE= $MYSQLTEST_VARDIR/tmp/mysqlbinlog.out
|
||||
--source include/search_pattern_in_file.inc
|
||||
|
||||
--let SEARCH_PATTERN= GTID $optimize_gtid ddl
|
||||
--let SEARCH_FILE= $MYSQLTEST_VARDIR/tmp/mysqlbinlog.out
|
||||
--source include/search_pattern_in_file.inc
|
||||
|
||||
--let SEARCH_PATTERN= GTID $repair_gtid ddl
|
||||
--let SEARCH_FILE= $MYSQLTEST_VARDIR/tmp/mysqlbinlog.out
|
||||
--source include/search_pattern_in_file.inc
|
||||
|
||||
--echo #
|
||||
--echo # Clean up
|
||||
--echo #
|
||||
DROP TABLE t1;
|
||||
--remove_file $MYSQLTEST_VARDIR/tmp/mysqlbinlog.out
|
||||
--save_master_pos
|
||||
|
||||
--connection server_2
|
||||
--sync_with_master
|
||||
|
||||
--source include/stop_slave.inc
|
||||
SET GLOBAL slave_parallel_threads= @save_slave_parallel_threads;
|
||||
SET GLOBAL slave_parallel_mode= @save_slave_parallel_mode;
|
||||
--source include/start_slave.inc
|
||||
|
||||
--source include/rpl_end.inc
|
@@ -4,6 +4,10 @@
|
||||
# hang when the parallel workers were idle.
|
||||
# The bug reported scenario is extented to cover the multi-sources case as well as
|
||||
# checking is done for both the idle and busy workers cases.
|
||||
#
|
||||
# MDEV-25336 Parallel replication causes failed assert while restarting
|
||||
# Since this test case involves slave restart this will help in testing
|
||||
# Mdev-25336 too.
|
||||
|
||||
--source include/have_innodb.inc
|
||||
--source include/have_binlog_format_mixed.inc
|
||||
@@ -26,7 +30,7 @@ select @@global.slave_parallel_workers as two;
|
||||
|
||||
# At this point worker threads have no assignement.
|
||||
# Shutdown must not hang.
|
||||
|
||||
# In 10.2/10.3 there should not be any assert failure `prev != 0 && next != 0'
|
||||
--connection server_3
|
||||
--write_file $MYSQLTEST_VARDIR/tmp/mysqld.3.expect
|
||||
wait
|
||||
@@ -75,6 +79,7 @@ insert into t1 values (1);
|
||||
--connection server_3
|
||||
--sync_with_master 0,''
|
||||
|
||||
# In 10.2/10.3 there should not be any assert failure `prev != 0 && next != 0'
|
||||
# At this point worker threads have no assignement.
|
||||
# Shutdown must not hang.
|
||||
|
||||
@@ -117,6 +122,7 @@ insert into t1 values (2);
|
||||
insert into t2 values (2);
|
||||
|
||||
|
||||
# In 10.2/10.3 there should not be any assert failure `prev != 0 && next != 0'
|
||||
# At this point there's a good chance the worker threads are busy.
|
||||
# SHUTDOWN must proceed without any delay as above.
|
||||
--connection server_3
|
||||
|
Reference in New Issue
Block a user