Merge 10.11 into 11.0

This commit is contained in:
Marko Mäkelä 2024-04-04 09:13:19 +03:00
commit e3ac7b8033
19 changed files with 172 additions and 29 deletions

View file

@ -1,10 +1,4 @@
use mysql;
Running bootstrap
Creating my.ini file
Removing default user
Allowing remote access for user root
Setting root password
Creation of the database was successful
# Kill the server
# restart: --datadir=MYSQLTEST_VARDIR/tmp/ddir
connect root,localhost,root,wrongpass,mysql;

View file

@ -6,12 +6,15 @@
# and start server from this directory.
let $ddir= $MYSQLTEST_VARDIR/tmp/ddir;
use mysql;
exec $MYSQL_INSTALL_DB_EXE --datadir=$ddir --password=foo -R;
--disable_result_log
exec $MYSQL_INSTALL_DB_EXE --datadir=$ddir --password=foo --verbose-bootstrap -R;
--enable_result_log
--source include/kill_mysqld.inc
let $restart_parameters=--datadir=$ddir;
--source include/start_mysqld.inc
# Check that connect with wrong password succeeds
# (because it can alternatively connect with GSSAPI as admin)
connect (root,localhost,root,wrongpass,mysql);
--source include/kill_mysqld.inc

View file

@ -4,9 +4,7 @@ connection node_1;
SET GLOBAL wsrep_load_data_splitting=ON;
Warnings:
Warning 1287 '@@wsrep_load_data_splitting' is deprecated and will be removed in a future release
SET GLOBAL wsrep_replicate_myisam=ON;
Warnings:
Warning 1287 '@@wsrep_replicate_myisam' is deprecated and will be removed in a future release. Please use '@@wsrep_mode=REPLICATE_MYISAM' instead
SET GLOBAL wsrep_mode=REPLICATE_MYISAM;
CREATE TABLE t1 (c1 int) ENGINE=MYISAM;
LOAD DATA INFILE '../../std_data/mdev-25731.dat' IGNORE INTO TABLE t1 LINES TERMINATED BY '\n';
Warnings:
@ -33,6 +31,4 @@ DROP TABLE t1;
SET GLOBAL wsrep_load_data_splitting=OFF;
Warnings:
Warning 1287 '@@wsrep_load_data_splitting' is deprecated and will be removed in a future release
SET GLOBAL wsrep_replicate_myisam=OFF;
Warnings:
Warning 1287 '@@wsrep_replicate_myisam' is deprecated and will be removed in a future release. Please use '@@wsrep_mode=REPLICATE_MYISAM' instead
SET GLOBAL wsrep_mode=DEFAULT;

View file

@ -10,7 +10,7 @@ SELECT VARIABLE_VALUE AS EXPECT_4 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VA
EXPECT_4
4
connection node_1;
CREATE TABLE t1 (f1 INTEGER);
CREATE TABLE t1 (f1 INTEGER NOT NULL PRIMARY KEY) ENGINE=INNODB;
INSERT INTO t1 VALUES (1);
connection node_2;
INSERT INTO t1 VALUES (2);
@ -20,6 +20,8 @@ connection node_4;
INSERT INTO t1 VALUES (4);
connection node_3;
INSERT INTO t1 VALUES (13);
connection node_1;
connection node_3;
Killing server ...
connection node_1;
INSERT INTO t1 VALUES (11);
@ -29,8 +31,11 @@ connection node_4;
INSERT INTO t1 VALUES (14);
connection node_3;
INSERT INTO t1 VALUES (131);
connection node_1;
connection node_2;
INSERT INTO t1 VALUES (22);
connection node_1;
connection node_2;
Killing server ...
connection node_1;
INSERT INTO t1 VALUES (21);
@ -42,6 +47,8 @@ connection node_2;
INSERT INTO t1 VALUES (221);
connection node_4;
INSERT INTO t1 VALUES (34);
connection node_1;
connection node_4;
Killing server ...
connection node_1;
INSERT INTO t1 VALUES (31);

View file

@ -3,7 +3,7 @@
--connection node_1
SET GLOBAL wsrep_load_data_splitting=ON;
SET GLOBAL wsrep_replicate_myisam=ON;
SET GLOBAL wsrep_mode=REPLICATE_MYISAM;
CREATE TABLE t1 (c1 int) ENGINE=MYISAM;
LOAD DATA INFILE '../../std_data/mdev-25731.dat' IGNORE INTO TABLE t1 LINES TERMINATED BY '\n';
SELECT COUNT(*) AS EXPECT_6 FROM t1;
@ -22,6 +22,6 @@ SELECT COUNT(*) AS EXPECT_12 FROM t1;
--connection node_1
DROP TABLE t1;
SET GLOBAL wsrep_load_data_splitting=OFF;
SET GLOBAL wsrep_replicate_myisam=OFF;
SET GLOBAL wsrep_mode=DEFAULT;

View file

@ -10,9 +10,11 @@ ssl-ca=@ENV.MYSQL_TEST_DIR/std_data/cacert.pem
[mysqld.1]
wsrep_provider_options='base_port=@mysqld.1.#galera_port;pc.ignore_sb=true'
innodb-log-file-buffering
[mysqld.2]
wsrep_provider_options='base_port=@mysqld.2.#galera_port;pc.ignore_sb=true'
innodb-log-file-buffering
[sst]
ssl-mode=VERIFY_CA

View file

@ -11,6 +11,7 @@
--source include/big_test.inc
--source include/galera_cluster.inc
--source include/have_innodb.inc
--source include/force_restart.inc
--connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3
--connect node_4, 127.0.0.1, root, , test, $NODE_MYPORT_4
@ -27,7 +28,7 @@
SELECT VARIABLE_VALUE AS EXPECT_4 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
--connection node_1
CREATE TABLE t1 (f1 INTEGER);
CREATE TABLE t1 (f1 INTEGER NOT NULL PRIMARY KEY) ENGINE=INNODB;
INSERT INTO t1 VALUES (1);
--connection node_2
@ -45,10 +46,20 @@ INSERT INTO t1 VALUES (4);
--connection node_3
INSERT INTO t1 VALUES (13);
--source include/kill_galera.inc
--let $wait_condition = SELECT COUNT(*) = 5 FROM t1;
--source include/wait_condition.inc
--connection node_1
--let $wait_condition = SELECT COUNT(*) = 5 FROM t1;
--source include/wait_condition.inc
--connection node_3
--source include/kill_galera.inc
--remove_file $MYSQLTEST_VARDIR/mysqld.3/data/grastate.dat
--connection node_1
--let $wait_condition = SELECT VARIABLE_VALUE = 3 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
--source include/wait_condition.inc
INSERT INTO t1 VALUES (11);
--connection node_2
@ -62,6 +73,10 @@ INSERT INTO t1 VALUES (14);
INSERT INTO t1 VALUES (131);
--connection node_1
--let $wait_condition = SELECT VARIABLE_VALUE = 4 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
--source include/wait_condition.inc
#
# Restart node #2
#
@ -69,9 +84,17 @@ INSERT INTO t1 VALUES (131);
--connection node_2
INSERT INTO t1 VALUES (22);
--connection node_1
--let $wait_condition = SELECT COUNT(*) = 10 FROM t1;
--source include/wait_condition.inc
--connection node_2
--source include/kill_galera.inc
--remove_file $MYSQLTEST_VARDIR/mysqld.2/data/grastate.dat
--connection node_1
--let $wait_condition = SELECT VARIABLE_VALUE = 3 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
--source include/wait_condition.inc
INSERT INTO t1 VALUES (21);
--connection node_3
@ -90,11 +113,21 @@ INSERT INTO t1 VALUES (221);
#
--connection node_4
--let $wait_condition = SELECT VARIABLE_VALUE = 4 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
--source include/wait_condition.inc
INSERT INTO t1 VALUES (34);
--connection node_1
--let $wait_condition = SELECT COUNT(*) = 15 FROM t1;
--source include/wait_condition.inc
--connection node_4
--source include/kill_galera.inc
--remove_file $MYSQLTEST_VARDIR/mysqld.4/data/grastate.dat
--connection node_1
--let $wait_condition = SELECT VARIABLE_VALUE = 3 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
--source include/wait_condition.inc
INSERT INTO t1 VALUES (31);
--connection node_2
@ -105,6 +138,7 @@ INSERT INTO t1 VALUES (33);
--connection node_4
--source include/start_mysqld.inc
--remove_file $MYSQLTEST_VARDIR/mysqld.4/data/grastate.dat
INSERT INTO t1 VALUES (341);

View file

@ -1 +1,10 @@
!include ../galera_2nodes_as_master.cnf
[mysqld.1]
innodb-log-file-buffering
[mysqld.2]
innodb-log-file-buffering
[mysqld.3]
innodb-log-file-buffering

View file

@ -7,6 +7,9 @@ connection node_2;
SELECT COUNT(*) = 3 FROM mysql.wsrep_allowlist;
COUNT(*) = 3
1
connection node_1;
connection node_2;
connection node_3;
connection node_3;
SET @@global.wsrep_desync = 1;
SET SESSION wsrep_sync_wait = 0;

View file

@ -12,6 +12,12 @@ SELECT COUNT(*) = 3 FROM mysql.wsrep_allowlist;
--let $galera_server_number = 3
--source include/galera_connect.inc
# Save original auto_increment_offset values.
--let $node_1=node_1
--let $node_2=node_2
--let $node_3=node_3
--source ../galera/include/auto_increment_offset_save.inc
--connection node_3
# Desync and disconnect node 3 from the PC:
SET @@global.wsrep_desync = 1;
@ -64,3 +70,6 @@ CALL mtr.add_suppression('WSREP: Connection not allowed');
--connection node_3
CALL mtr.add_suppression('WSREP: Ignoring lack of quorum');
# Restore original auto_increment_offset values.
--source ../galera/include/auto_increment_offset_restore.inc

View file

@ -6,20 +6,26 @@ connection node_2;
connection node_3;
connection node_2;
SET GLOBAL debug_dbug="d,crash_last_fragment_commit_after_fragment_removal";
CREATE TABLE t1 (f1 VARCHAR(30)) ENGINE=InnoDB;
CREATE TABLE t1 (f1 VARCHAR(30) not null primary key) ENGINE=InnoDB;
SET AUTOCOMMIT=OFF;
SET SESSION wsrep_trx_fragment_size=1;
START TRANSACTION;
INSERT INTO t1 VALUES ('primary'),('primary'),('primary'),('primary'),('primary');
INSERT INTO t1 VALUES ('primary1'),('primary2'),('primary3'),('primary4'),('primary5');
COMMIT;
Got one of the listed errors
connection node_1;
connection node_2;
# restart
connection node_1;
SELECT COUNT(*) = 0 FROM mysql.wsrep_streaming_log;
COUNT(*) = 0
1
SELECT * FROM t1;
f1
connection node_2;
SELECT COUNT(*) = 0 FROM mysql.wsrep_streaming_log;
COUNT(*) = 0
1
SELECT * FROM t1;
f1
DROP TABLE t1;

View file

@ -44,6 +44,7 @@ connection node_2;
SELECT COUNT(*) AS EXPECT_0 FROM mysql.wsrep_streaming_log;
EXPECT_0
0
call mtr.add_suppression("WSREP: node uuid:.*");
connection node_1;
DROP TABLE t1;
DROP TABLE t2;

View file

@ -4,6 +4,7 @@
#
--source include/galera_cluster.inc
--source include/have_debug_sync.inc
--source include/force_restart.inc
--connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3
# Save original auto_increment_offset values.
@ -13,30 +14,42 @@
--source ../galera/include/auto_increment_offset_save.inc
--connection node_2
--let $wait_condition = SELECT VARIABLE_VALUE = 3 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
--source include/wait_condition.inc
SET GLOBAL debug_dbug="d,crash_last_fragment_commit_after_fragment_removal";
--let $_expect_file_name= `select regexp_replace(@@tmpdir, '^.*/','')`
--let $_expect_file_name= $MYSQLTEST_VARDIR/tmp/$_expect_file_name.expect
--exec echo "wait" > $_expect_file_name
CREATE TABLE t1 (f1 VARCHAR(30)) ENGINE=InnoDB;
CREATE TABLE t1 (f1 VARCHAR(30) not null primary key) ENGINE=InnoDB;
SET AUTOCOMMIT=OFF;
SET SESSION wsrep_trx_fragment_size=1;
START TRANSACTION;
INSERT INTO t1 VALUES ('primary'),('primary'),('primary'),('primary'),('primary');
INSERT INTO t1 VALUES ('primary1'),('primary2'),('primary3'),('primary4'),('primary5');
--error 2013,2026
COMMIT;
--connection node_1
--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
--source include/wait_condition.inc
--connection node_2
--source include/start_mysqld.inc
--connection node_1
--let $wait_condition = SELECT VARIABLE_VALUE = 3 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
--source include/wait_condition.inc
SELECT COUNT(*) = 0 FROM mysql.wsrep_streaming_log;
SELECT * FROM t1;
--connection node_2
--enable_reconnect
SELECT COUNT(*) = 0 FROM mysql.wsrep_streaming_log;
SELECT * FROM t1;
DROP TABLE t1;

View file

@ -6,6 +6,7 @@
--source include/galera_cluster.inc
--source include/have_innodb.inc
--source include/force_restart.inc
--connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3
# Save original auto_increment_offset values.
@ -86,6 +87,8 @@ SELECT COUNT(*) AS EXPECT_0 FROM mysql.wsrep_streaming_log;
--connection node_2
SELECT COUNT(*) AS EXPECT_0 FROM mysql.wsrep_streaming_log;
# As noted above sometimes node delivers the same view twice
call mtr.add_suppression("WSREP: node uuid:.*");
--connection node_1
DROP TABLE t1;

View file

@ -3431,4 +3431,27 @@ ERROR HY000: Maybe missing parameters: no rotation condition for multiple HISTOR
#
# End of 10.5 tests
#
#
# MDEV-31903 Server crashes in _ma_reset_history upon UNLOCK table with auto-create history partitions
#
set timestamp= unix_timestamp('2000-01-01 00:00:00');
create table t1 (x int) engine=aria with system versioning partition by system_time interval 1 hour auto partitions 3;
insert into t1 values (1);
create table t2 (x int) engine=aria;
create trigger tr after insert on t2 for each row update t1 set x= x + 11;
lock tables t1 write, t2 write;
update t1 set x= x + 1;
set timestamp= unix_timestamp('2000-01-01 13:00:00');
insert into t2 values (5);
unlock tables;
drop table t1, t2;
set timestamp= default;
#
# MDEV-29872 MSAN/Valgrind uninitialised value errors in TABLE::vers_switch_partition
#
create table t (a int) with system versioning partition by system_time limit 100 partitions 3;
drop table t;
#
# End of 10.9 tests
#
set global innodb_stats_persistent= @save_persistent;

View file

@ -2673,5 +2673,43 @@ create table t (a int) with system versioning partition by system_time partition
--echo # End of 10.5 tests
--echo #
--echo #
--echo # MDEV-31903 Server crashes in _ma_reset_history upon UNLOCK table with auto-create history partitions
--echo #
set timestamp= unix_timestamp('2000-01-01 00:00:00');
create table t1 (x int) engine=aria with system versioning partition by system_time interval 1 hour auto partitions 3;
insert into t1 values (1);
create table t2 (x int) engine=aria;
create trigger tr after insert on t2 for each row update t1 set x= x + 11;
lock tables t1 write, t2 write;
update t1 set x= x + 1;
set timestamp= unix_timestamp('2000-01-01 13:00:00');
insert into t2 values (5);
unlock tables;
drop table t1, t2;
set timestamp= default;
--echo #
--echo # MDEV-29872 MSAN/Valgrind uninitialised value errors in TABLE::vers_switch_partition
--echo #
create table t (a int) with system versioning partition by system_time limit 100 partitions 3;
let $emb= `select if(version() like '%embedded%', 1, 0)`;
if (!$emb)
{
--disable_result_log
--disable_query_log
--error ER_DELAYED_NOT_SUPPORTED
insert delayed into t () values ();
--enable_query_log
--enable_result_log
}
# cleanup
drop table t;
--echo #
--echo # End of 10.9 tests
--echo #
set global innodb_stats_persistent= @save_persistent;
--source suite/versioning/common_finish.inc

View file

@ -2401,7 +2401,7 @@ public:
passed from connection thread to the handler thread.
*/
MDL_request grl_protection;
Delayed_insert(SELECT_LEX *current_select)
Delayed_insert(LEX *lex)
:locks_in_memory(0), thd(next_thread_id()),
table(0),tables_in_use(0), stacked_inserts(0),
status(0), retry(0), handler_thread_initialized(FALSE), group_count(0)
@ -2414,8 +2414,9 @@ public:
strmake_buf(thd.security_ctx->priv_user, thd.security_ctx->user);
thd.current_tablenr=0;
thd.set_command(COM_DELAYED_INSERT);
thd.lex->current_select= current_select;
thd.lex->sql_command= SQLCOM_INSERT; // For innodb::store_lock()
thd.lex->current_select= lex->current_select;
thd.lex->sql_command= lex->sql_command; // For innodb::store_lock()
thd.lex->duplicates= lex->duplicates;
/*
Prevent changes to global.lock_wait_timeout from affecting
delayed insert threads as any timeouts in delayed inserts
@ -2591,7 +2592,7 @@ bool delayed_get_table(THD *thd, MDL_request *grl_protection_request,
*/
if (! (di= find_handler(thd, table_list)))
{
if (!(di= new Delayed_insert(thd->lex->current_select)))
if (!(di= new Delayed_insert(thd->lex)))
goto end_create;
/*

View file

@ -7753,7 +7753,7 @@ uint fast_alter_partition_table(THD *thd, TABLE *table,
ERROR_INJECT("add_partition_1") ||
mysql_write_frm(lpt, WFRM_WRITE_SHADOW) ||
ERROR_INJECT("add_partition_2") ||
wait_while_table_is_used(thd, table, HA_EXTRA_NOT_USED) ||
wait_while_table_is_used(thd, table, HA_EXTRA_PREPARE_FOR_RENAME) ||
ERROR_INJECT("add_partition_3") ||
write_log_add_change_partition(lpt) ||
ERROR_INJECT("add_partition_4") ||

View file

@ -1,6 +1,7 @@
#set(PLUGIN_COLUMNSTORE "NO" CACHE STRING "Enable ColumnStore engine")
if("NO" STREQUAL "${PLUGIN_COLUMNSTORE}")
if("NO" STREQUAL "${PLUGIN_COLUMNSTORE}" OR
(NOT EXISTS ${CMAKE_CURRENT_LIST_DIR}/columnstore/CMakeLists.txt))
return()
endif()