1
0
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:
Marko Mäkelä
2021-02-17 19:39:05 +02:00
326 changed files with 22430 additions and 4070 deletions

View File

@@ -10,8 +10,7 @@
#
##############################################################################
rpl_spec_variables : BUG#11755836 2009-10-27 jasonh rpl_spec_variables fails on PB2 hpux
#rpl_get_master_version_and_clock : Bug#11766137 Jan 05 2011 joro Valgrind warnings rpl_get_master_version_and_clock
#rpl_get_master_version_and_clock : Bug#11766137 Jan 05 2011 joro Valgrind warnings
rpl_partition_archive : MDEV-5077 2013-09-27 svoj Cannot exchange partition with archive table
rpl_row_binlog_max_cache_size : MDEV-11092
rpl_row_index_choice : MDEV-11666

View File

@@ -49,14 +49,14 @@ connection master;
--echo *** Single statement on transactional table ***
--disable_query_log
--error ER_TRANS_CACHE_FULL, ER_STMT_CACHE_FULL, ER_ERROR_ON_WRITE
--error ER_TRANS_CACHE_FULL, ER_STMT_CACHE_FULL, ER_ERROR_ON_WRITE, 1534
eval INSERT INTO t1 (a, data) VALUES (1,
CONCAT($data, $data, $data, $data, $data));
--enable_query_log
--echo *** Single statement on non-transactional table ***
--disable_query_log
--error ER_TRANS_CACHE_FULL, ER_STMT_CACHE_FULL, ER_ERROR_ON_WRITE
--error ER_TRANS_CACHE_FULL, ER_STMT_CACHE_FULL, ER_ERROR_ON_WRITE, 1534
eval INSERT INTO t2 (a, data) VALUES (2,
CONCAT($data, $data, $data, $data, $data, $data));
--enable_query_log

View File

@@ -0,0 +1,37 @@
include/rpl_init.inc [topology=1->2]
connection server_2;
include/stop_slave.inc
RESET SLAVE;
include/start_slave.inc
include/stop_slave.inc
#
# Stop slave server
#
#
# Simulate file number get close to 999997
# by renaming relay logs and modifying index/info files
#
# Restart slave server
#
SET @save_slave_parallel_threads= @@GLOBAL.slave_parallel_threads;
SET @save_max_relay_log_size= @@GLOBAL.max_relay_log_size;
SET GLOBAL slave_parallel_threads=1;
SET GLOBAL max_relay_log_size=100 * 1024;
include/start_slave.inc
connection server_1;
create table t1 (i int, c varchar(1024));
#
# Insert some data to generate enough amount of binary logs
#
connection server_2;
#
# Assert that 'slave-relay-bin.999999' is purged.
#
NOT FOUND /slave-relay-bin.999999/ in slave-relay-bin.index
include/stop_slave.inc
SET GLOBAL slave_parallel_threads= @save_slave_parallel_threads;
SET GLOBAL max_relay_log_size= @save_max_relay_log_size;
include/start_slave.inc
connection server_1;
DROP TABLE t1;
include/rpl_end.inc

View File

@@ -3,7 +3,7 @@ include/master-slave.inc
SET SQL_LOG_BIN=0;
CREATE TABLE t1 (c1 char(255) DEFAULT NULL, KEY c1 (c1)) DEFAULT CHARSET=utf32;
Warnings:
Warning 1071 Specified key was too long; max key length is 1000 bytes
Note 1071 Specified key was too long; max key length is 1000 bytes
SET SQL_LOG_BIN=1;
connection slave;
SET @saved_slave_type_conversions= @@global.slave_type_conversions;
@@ -13,7 +13,7 @@ include/start_slave.inc
SET SQL_LOG_BIN=0;
CREATE TABLE t1 ( c1 varchar(255) DEFAULT NULL, KEY c1 (c1)) DEFAULT CHARSET=utf32;
Warnings:
Warning 1071 Specified key was too long; max key length is 1000 bytes
Note 1071 Specified key was too long; max key length is 1000 bytes
SET SQL_LOG_BIN=1;
connection master;
INSERT INTO t1(c1) VALUES ('insert into t1');

View File

@@ -2,14 +2,17 @@ include/master-slave.inc
[connection master]
* auto_increment_increment, auto_increment_offset *
connection master;
SET @@global.auto_increment_increment=2;
SET @@session.auto_increment_increment=2;
SET @@global.auto_increment_offset=10;
SET @@session.auto_increment_offset=10;
connection slave;
SET @@global.auto_increment_increment=3;
SET @@session.auto_increment_increment=3;
SET @@global.auto_increment_offset=20;
SET @@session.auto_increment_offset=20;
connection master;
CREATE TABLE t1 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, b VARCHAR(10)) ENGINE=MyISAM;
INSERT INTO t1 (b) VALUES ('master');
INSERT INTO t1 (b) VALUES ('master');
@@ -17,6 +20,7 @@ SELECT * FROM t1 ORDER BY a;
a b
2 master
4 master
connection slave;
CREATE TABLE t2 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, b VARCHAR(10)) ENGINE=MyISAM;
INSERT INTO t1 (b) VALUES ('slave');
INSERT INTO t1 (b) VALUES ('slave');
@@ -32,102 +36,123 @@ SELECT * FROM t2 ORDER BY a;
a b
1 slave
4 slave
connection master;
DROP TABLE IF EXISTS t1,t2;
SET @@global.auto_increment_increment=1;
SET @@session.auto_increment_increment=1;
SET @@global.auto_increment_offset=1;
SET @@session.auto_increment_offset=1;
connection slave;
SET @@global.auto_increment_increment=1;
SET @@session.auto_increment_increment=1;
SET @@global.auto_increment_offset=1;
SET @@session.auto_increment_offset=1;
connection slave;
SET auto_increment_increment=1;
SET auto_increment_offset=1;
* character_set_database, collation_server *
connection master;
SET @restore_master_character_set_database=@@global.character_set_database;
SET @restore_master_collation_server=@@global.collation_server;
SET @@global.character_set_database=latin1;
SET @@session.character_set_database=latin1;
SET @@global.collation_server=latin1_german1_ci;
SET @@session.collation_server=latin1_german1_ci;
connection slave;
SET @restore_slave_character_set_database=@@global.character_set_database;
SET @restore_slave_collation_server=@@global.collation_server;
SET @@global.character_set_database=utf8;
SET @@session.character_set_database=utf8;
SET @@global.collation_server=utf8_bin;
SET @@session.collation_server=utf8_bin;
connection master;
CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY, b VARCHAR(10)) ENGINE=MyISAM;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) NOT NULL,
`b` varchar(10) COLLATE latin1_german1_ci DEFAULT NULL,
`b` varchar(10) DEFAULT NULL,
PRIMARY KEY (`a`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci
) ENGINE=MyISAM DEFAULT CHARSET=latin1
connection slave;
CREATE TABLE t2 (a INT NOT NULL PRIMARY KEY, b VARCHAR(10)) ENGINE=MyISAM;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) NOT NULL,
`b` varchar(10) COLLATE latin1_german1_ci DEFAULT NULL,
`b` varchar(10) DEFAULT NULL,
PRIMARY KEY (`a`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`a` int(11) NOT NULL,
`b` varchar(10) COLLATE utf8_bin DEFAULT NULL,
`b` varchar(10) DEFAULT NULL,
PRIMARY KEY (`a`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SET @@global.collation_server=latin1_swedish_ci;
SET @@session.collation_server=latin1_swedish_ci;
connection master;
SET @@global.collation_server=latin1_swedish_ci;
SET @@session.collation_server=latin1_swedish_ci;
DROP TABLE IF EXISTS t1,t2;
* default_week_format *
connection master;
SET @@global.default_week_format=0;
SET @@session.default_week_format=0;
connection slave;
SET @@global.default_week_format=1;
SET @@session.default_week_format=1;
connection master;
CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY, b VARCHAR(10), c INT) ENGINE=MyISAM;
INSERT INTO t1 VALUES (1, 'master ', WEEK('2008-01-07'));
SELECT * FROM t1 ORDER BY a;
a b c
1 master 1
connection slave;
INSERT INTO t1 VALUES (2, 'slave ', WEEK('2008-01-07'));
SELECT * FROM t1 ORDER BY a;
a b c
1 master 1
2 slave 2
connection master;
DROP TABLE t1;
connection slave;
SET @@global.default_week_format=0;
SET @@session.default_week_format=0;
* local_infile *
connection slave;
SET @@global.local_infile=0;
connection master;
CREATE TABLE t1 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, b VARCHAR(20), c CHAR(254)) ENGINE=MyISAM;
LOAD DATA LOCAL INFILE 'FILE' INTO TABLE t1 (b);
SELECT COUNT(*) FROM t1;
COUNT(*)
70
connection slave;
LOAD DATA LOCAL INFILE 'FILE2' INTO TABLE t1 (b);
ERROR 42000: The used command is not allowed with this MySQL version
ERROR HY000: The used command is not allowed because the MariaDB server or client has disabled the local infile capability
SELECT COUNT(*) FROM t1;
COUNT(*)
70
SET @@global.local_infile=1;
connection master;
DROP TABLE t1;
* max_heap_table_size *
connection slave;
SET @restore_slave_max_heap_table_size=@@global.max_heap_table_size;
SET @@global.max_heap_table_size=16384;
SET @@session.max_heap_table_size=16384;
connection master;
CREATE TABLE t1 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, b VARCHAR(10), c CHAR(254)) ENGINE=MEMORY;
SELECT COUNT(*)=2000 FROM t1;
COUNT(*)=2000
1
connection slave;
SELECT COUNT(*)=2000 FROM t1 WHERE b='master' GROUP BY b ORDER BY b;
COUNT(*)=2000
1
@@ -137,18 +162,24 @@ COUNT(*)<2000 AND COUNT(*)>0
SELECT COUNT(*)<2000 AND COUNT(*)>0 FROM t2 WHERE b='slave' GROUP BY b ORDER BY b;
COUNT(*)<2000 AND COUNT(*)>0
1
connection master;
DROP TABLE IF EXISTS t1,t2;
* storage_engine *
connection master;
SET @restore_master_storage_engine=@@global.default_storage_engine;
SET @@global.default_storage_engine=InnoDB;
SET @@session.default_storage_engine=InnoDB;
connection slave;
SET @restore_slave_storage_engine=@@global.default_storage_engine;
SET @@global.default_storage_engine=Memory;
SET @@session.default_storage_engine=Memory;
connection master;
CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY, b VARCHAR(10));
CREATE TABLE t2 (a INT NOT NULL PRIMARY KEY, b VARCHAR(10)) ENGINE=InnoDB;
connection slave;
CREATE TABLE t3 (a INT NOT NULL PRIMARY KEY, b VARCHAR(10));
connection master;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
@@ -163,6 +194,7 @@ t2 CREATE TABLE `t2` (
`b` varchar(10) DEFAULT NULL,
PRIMARY KEY (`a`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
connection slave;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
@@ -186,37 +218,49 @@ t3 CREATE TABLE `t3` (
) ENGINE=MEMORY DEFAULT CHARSET=latin1
SET @@global.default_storage_engine=InnoDB;
SET @@session.default_storage_engine=InnoDB;
connection master;
DROP TABLE IF EXISTS t1,t2,t3;
* sql_mode *
connection master;
SET @old_sql_mode_master= @@global.sql_mode;
SET @@global.sql_mode=ANSI;
SET @@session.sql_mode=ANSI;
connection slave;
SET @old_sql_mode_slave= @@global.sql_mode;
SET @@global.sql_mode=TRADITIONAL;
SET @@session.sql_mode=TRADITIONAL;
connection master;
CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY, b VARCHAR(10), c DATE);
INSERT INTO t1 VALUES (1, 'master', '0000-00-00');
SELECT * FROM t1 ORDER BY a;
a b c
1 master 0000-00-00
connection slave;
INSERT INTO t1 VALUES (1, 'slave', '0000-00-00');
ERROR 22007: Incorrect date value: '0000-00-00' for column 'c' at row 1
ERROR 22007: Incorrect date value: '0000-00-00' for column `test`.`t1`.`c` at row 1
SELECT * FROM t1 ORDER BY a;
a b c
1 master 0000-00-00
SET @@global.sql_mode='';
SET @@session.sql_mode='';
connection master;
SET @@global.sql_mode='';
SET @@session.sql_mode='';
DROP TABLE t1;
*** clean up ***
connection master;
SET @@global.character_set_database=@restore_master_character_set_database;
SET @@global.collation_server=@restore_master_collation_server;
SET @@global.default_storage_engine=@restore_master_storage_engine;
SET @@global.sql_mode=@old_sql_mode_master;
connection slave;
SET @@global.character_set_database=@restore_slave_character_set_database;
SET @@global.collation_server=@restore_slave_collation_server;
SET @@global.max_heap_table_size=@restore_slave_max_heap_table_size;
SET @@global.default_storage_engine=@restore_slave_storage_engine;
SET @@global.sql_mode=@old_sql_mode_slave;
call mtr.add_suppression("The table 't[12]' is full");
include/rpl_end.inc

View File

@@ -5,24 +5,27 @@ set default_storage_engine=example;
connection slave;
connection master;
create table t1 (a int not null) ull=12340;
alter table t1 ull=12350;
Warnings:
Note 1105 EXAMPLE DEBUG: ULL 12340 -> 12350
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) NOT NULL
) ENGINE=EXAMPLE DEFAULT CHARSET=latin1 `ull`=12340
) ENGINE=EXAMPLE DEFAULT CHARSET=latin1 `ull`=12350
connection slave;
connection slave;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /* `ull`=12340 */
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /* `ull`=12350 */
set sql_mode=ignore_bad_table_options;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 `ull`=12340
) ENGINE=MyISAM DEFAULT CHARSET=latin1 `ull`=12350
connection master;
drop table t1;
set default_storage_engine=default;

View File

@@ -0,0 +1,109 @@
# ==== Purpose ====
#
# Test verifies that auto purging mechanism of relay logs works fine when the
# file extension grows beyond 999999.
#
# ==== Implementation ====
#
# Steps:
# 0 - In master-slave setup clear all the relay logs on the slave server.
# 1 - Start the slave so that new relay logs starting from
# 'slave-relay-bin.000001' are created.
# 2 - Get the active relay-log file name by using SHOW SLAVE STATUS.
# Shutdown the slave server.
# 3 - Rename active relay log to '999997' in both 'relay-log.info' and
# 'slave-relay-bin.index' files.
# 4 - Restart the slave server by configuring 'slave_parallel_threads=1'
# and 'max_relay_log_size=100K'.
# 5 - Generate load on master such that few relay logs are generated on
# slave. The relay log sequence number will change to 7 digits.
# 6 - Sync slave with master to ensure that relay logs are applied on
# slave. They should have been automatically purged.
# 7 - Assert that there is no 'slave-relay-bin.999999' file in
# 'relay-log.info'.
#
# ==== References ====
#
# MDEV-8134: The relay-log is not flushed after the slave-relay-log.999999
# showed
#
--source include/have_innodb.inc
--source include/have_binlog_format_row.inc
--let $rpl_topology=1->2
--source include/rpl_init.inc
--connection server_2
--source include/stop_slave.inc
RESET SLAVE;
--source include/start_slave.inc
--source include/stop_slave.inc
--let $relay_log=query_get_value(SHOW SLAVE STATUS, Relay_Log_File, 1)
--echo #
--echo # Stop slave server
--echo #
--let $datadir = `select @@datadir`
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.2.expect
--shutdown_server 10
--source include/wait_until_disconnected.inc
--exec sed -i "s/$relay_log/slave-relay-bin.999997/g" $datadir/relay-log.info
--exec sed -i "s/$relay_log/slave-relay-bin.999997/g" $datadir/slave-relay-bin.index
--echo #
--echo # Simulate file number get close to 999997
--echo # by renaming relay logs and modifying index/info files
--move_file $datadir/$relay_log $datadir/slave-relay-bin.999997
--echo #
--echo # Restart slave server
--echo #
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.2.expect
--enable_reconnect
--source include/wait_until_connected_again.inc
SET @save_slave_parallel_threads= @@GLOBAL.slave_parallel_threads;
SET @save_max_relay_log_size= @@GLOBAL.max_relay_log_size;
SET GLOBAL slave_parallel_threads=1;
SET GLOBAL max_relay_log_size=100 * 1024;
--source include/start_slave.inc
--connection server_1
create table t1 (i int, c varchar(1024));
--echo #
--echo # Insert some data to generate enough amount of binary logs
--echo #
--let $count = 1000
--disable_query_log
while ($count)
{
eval insert into t1 values (1001 - $count, repeat('a',1000));
dec $count;
}
--enable_query_log
--save_master_pos
--connection server_2
--sync_with_master
--let $relay_log=query_get_value(SHOW SLAVE STATUS, Relay_Log_File, 1)
--echo #
--echo # Assert that 'slave-relay-bin.999999' is purged.
--echo #
let SEARCH_FILE=$datadir/slave-relay-bin.index;
let SEARCH_PATTERN=slave-relay-bin.999999;
source include/search_pattern_in_file.inc;
--source include/stop_slave.inc
SET GLOBAL slave_parallel_threads= @save_slave_parallel_threads;
SET GLOBAL max_relay_log_size= @save_max_relay_log_size;
--source include/start_slave.inc
--connection server_1
DROP TABLE t1;
--source include/rpl_end.inc

View File

@@ -7,11 +7,6 @@ connection slave;
--source include/have_innodb.inc
connection master;
# Bug#18326: Do not lock table for writing during prepare of statement
# The use of the ps protocol causes extra table maps in the binlog, so
# we disable the ps-protocol for this statement.
--disable_ps_protocol
# Set the default storage engine to different values on master and
# slave. We need to stop the slave for the server variable to take
# effect, since the variable is only read on start-up.

View File

@@ -4,10 +4,4 @@
let $rename_event_pos= `select @binlog_start_pos + 819`;
# Bug#18326: Do not lock table for writing during prepare of statement
# The use of the ps protocol causes extra table maps in the binlog, so
# we disable the ps-protocol for this statement.
--disable_ps_protocol
-- source include/rpl_flsh_tbls.test
--enable_ps_protocol

View File

@@ -1 +0,0 @@
--innodb

View File

@@ -154,7 +154,7 @@ CREATE TABLE t1 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, b VARCHAR(20), c CHA
SELECT COUNT(*) FROM t1;
--sync_slave_with_master
--replace_regex /\'.+\'/'FILE2'/
--error 1148
--error ER_LOAD_INFILE_CAPABILITY_DISABLED
--eval LOAD DATA LOCAL INFILE '$MYSQLTEST_VARDIR/tmp/words2.dat' INTO TABLE t1 (b)
SELECT COUNT(*) FROM t1;
@@ -260,10 +260,12 @@ DROP TABLE IF EXISTS t1,t2,t3;
--echo * sql_mode *
--connection master
SET @old_sql_mode_master= @@global.sql_mode;
SET @@global.sql_mode=ANSI;
SET @@session.sql_mode=ANSI;
--connection slave
SET @old_sql_mode_slave= @@global.sql_mode;
SET @@global.sql_mode=TRADITIONAL;
SET @@session.sql_mode=TRADITIONAL;
@@ -292,14 +294,17 @@ DROP TABLE t1;
SET @@global.character_set_database=@restore_master_character_set_database;
SET @@global.collation_server=@restore_master_collation_server;
SET @@global.default_storage_engine=@restore_master_storage_engine;
SET @@global.sql_mode=@old_sql_mode_master;
--sync_slave_with_master
SET @@global.character_set_database=@restore_slave_character_set_database;
SET @@global.collation_server=@restore_slave_collation_server;
SET @@global.max_heap_table_size=@restore_slave_max_heap_table_size;
SET @@global.default_storage_engine=@restore_slave_storage_engine;
SET @@global.sql_mode=@old_sql_mode_slave;
# Put at the end since the test otherwise emptied the table.
remove_file $MYSQLTEST_VARDIR/tmp/words.dat;
remove_file $MYSQLTEST_VARDIR/tmp/words2.dat;
--echo
call mtr.add_suppression("The table 't[12]' is full");

View File

@@ -18,6 +18,7 @@ connection master;
# the option is unknown.
#
create table t1 (a int not null) ull=12340;
alter table t1 ull=12350;
show create table t1;
sync_slave_with_master;