From 393cf51c045878c717ee7e17478755d093675802 Mon Sep 17 00:00:00 2001 From: Sergei Petrunia Date: Fri, 23 Apr 2021 19:28:48 +0300 Subject: MDEV-24925: Server crashes in Item_subselect::init_expr_cache_tracker The optimizer removes redundant GROUP BY operations. If GROUP BY element is a subselect, it is "eliminated". However one must not eliminate the item if it is used both in the select list and in the GROUP BY, like so: select (select ... ) as SUBQ from ... group by SUBQ Do not eliminate such items. --- mysql-test/main/subselect4.result | 50 +++++++++++++++++++++++++++++++++++++++ mysql-test/main/subselect4.test | 32 +++++++++++++++++++++++++ 2 files changed, 82 insertions(+) (limited to 'mysql-test') diff --git a/mysql-test/main/subselect4.result b/mysql-test/main/subselect4.result index 156e78e7778..456b9bcd829 100644 --- a/mysql-test/main/subselect4.result +++ b/mysql-test/main/subselect4.result @@ -2786,4 +2786,54 @@ id select_type table type possible_keys key key_len ref rows Extra set names default; set @@in_predicate_conversion_threshold= @save_in_predicate_conversion_threshold; DROP TABLE t1,t2; +# +# MDEV-24925: Server crashes in Item_subselect::init_expr_cache_tracker +# +CREATE TABLE t1 (id INT PRIMARY KEY); +INSERT INTO t1 VALUES (1),(2); +SELECT +1 IN ( +SELECT +(SELECT COUNT(id) +FROM t1 +WHERE t1_outer.id <> id +) AS f +FROM +t1 AS t1_outer +GROUP BY f +); +1 IN ( +SELECT +(SELECT COUNT(id) +FROM t1 +WHERE t1_outer.id <> id +) AS f +FROM +t1 AS t1_outer +GROUP BY f +) +1 +SELECT +1 IN ( +SELECT +(SELECT COUNT(id) +FROM t1 +WHERE t1_outer.id <> id +) AS f +FROM +t1 AS t1_outer +GROUP BY 1 +); +1 IN ( +SELECT +(SELECT COUNT(id) +FROM t1 +WHERE t1_outer.id <> id +) AS f +FROM +t1 AS t1_outer +GROUP BY 1 +) +1 +DROP TABLE t1; # End of 10.3 tests diff --git a/mysql-test/main/subselect4.test b/mysql-test/main/subselect4.test index a5fcc507905..ab311d3e505 100644 --- a/mysql-test/main/subselect4.test +++ b/mysql-test/main/subselect4.test @@ -2308,4 +2308,36 @@ set names default; set @@in_predicate_conversion_threshold= @save_in_predicate_conversion_threshold; DROP TABLE t1,t2; +--echo # +--echo # MDEV-24925: Server crashes in Item_subselect::init_expr_cache_tracker +--echo # +CREATE TABLE t1 (id INT PRIMARY KEY); +INSERT INTO t1 VALUES (1),(2); + +SELECT + 1 IN ( + SELECT + (SELECT COUNT(id) + FROM t1 + WHERE t1_outer.id <> id + ) AS f + FROM + t1 AS t1_outer + GROUP BY f + ); + +SELECT + 1 IN ( + SELECT + (SELECT COUNT(id) + FROM t1 + WHERE t1_outer.id <> id + ) AS f + FROM + t1 AS t1_outer + GROUP BY 1 + ); + +DROP TABLE t1; + --echo # End of 10.3 tests -- cgit v1.2.1 From 42aad65b895dff937aa0618b3237eb4f653ce0e4 Mon Sep 17 00:00:00 2001 From: Sergei Petrunia Date: Fri, 23 Apr 2021 19:45:09 +0300 Subject: MDEV-24898: Server crashes in st_select_lex::next_select Add a testcase --- mysql-test/main/subselect4.result | 11 +++++++++++ mysql-test/main/subselect4.test | 13 +++++++++++++ 2 files changed, 24 insertions(+) (limited to 'mysql-test') diff --git a/mysql-test/main/subselect4.result b/mysql-test/main/subselect4.result index 456b9bcd829..6940795a9c1 100644 --- a/mysql-test/main/subselect4.result +++ b/mysql-test/main/subselect4.result @@ -2836,4 +2836,15 @@ GROUP BY 1 ) 1 DROP TABLE t1; +# +# MDEV-24898: Server crashes in st_select_lex::next_select / Item_subselect::is_expensive +# (Testcase) +# +CREATE TABLE t1 (a INT); +INSERT INTO t1 VALUES (1),(2); +CREATE TABLE t2 (b INT); +INSERT INTO t2 VALUES (3),(4); +SELECT 1 IN (SELECT (SELECT a FROM t1) AS x FROM t2 GROUP BY x); +ERROR 21000: Subquery returns more than 1 row +drop table t1,t2; # End of 10.3 tests diff --git a/mysql-test/main/subselect4.test b/mysql-test/main/subselect4.test index ab311d3e505..31f6f55b4e4 100644 --- a/mysql-test/main/subselect4.test +++ b/mysql-test/main/subselect4.test @@ -2340,4 +2340,17 @@ SELECT DROP TABLE t1; +--echo # +--echo # MDEV-24898: Server crashes in st_select_lex::next_select / Item_subselect::is_expensive +--echo # (Testcase) +--echo # +CREATE TABLE t1 (a INT); +INSERT INTO t1 VALUES (1),(2); # Optional, fails either way +CREATE TABLE t2 (b INT); +INSERT INTO t2 VALUES (3),(4); # Optional, fails either way + +--error ER_SUBQUERY_NO_1_ROW +SELECT 1 IN (SELECT (SELECT a FROM t1) AS x FROM t2 GROUP BY x); +drop table t1,t2; + --echo # End of 10.3 tests -- cgit v1.2.1 From 391f1aa6ee8ec6487898b1bb04424965279f2404 Mon Sep 17 00:00:00 2001 From: Sujatha Date: Fri, 5 Feb 2021 16:45:35 +0530 Subject: MDEV-24773: slave_compressed_protocol doesn't work properly with semi-sync replication Back port upstream fix commit 1800b015a1d487330f7b15f2020b887be348a66b Author: Venkatesh Duggirala Date: Fri Sep 8 20:29:22 2017 +0530 Bug#26027024 SLAVE_COMPRESSED_PROTOCOL DOESN'T WORK WITH SEMI-SYNC REPLICATION IN MYSQL-5.7 Analysis: In mysql-5.6, dump thread (the thread that is created on Master after Slave requested for a binlog dump) is also used to receive acknowledgements from the Slave and act on them accordingly. For performance reasons, a special thread called Ack Receiver thread is added in mysql-5.7 Semi synchronous replication plugin. This thread does not have special handling to receive acknowledgements if Slave has enabled compression in the protocol. Hence Master is unable to handle any slave if Slave_compressed_protocol is enabled on it. Fix: Enable compress flag on the communication channels if the Slave has Slave_compressed_protocol ON. --- .../rpl_semi_sync_slave_compressed_protocol.result | 19 ++++++++ ...l_semi_sync_slave_compressed_protocol-slave.opt | 1 + .../t/rpl_semi_sync_slave_compressed_protocol.test | 55 ++++++++++++++++++++++ 3 files changed, 75 insertions(+) create mode 100644 mysql-test/suite/rpl/r/rpl_semi_sync_slave_compressed_protocol.result create mode 100644 mysql-test/suite/rpl/t/rpl_semi_sync_slave_compressed_protocol-slave.opt create mode 100644 mysql-test/suite/rpl/t/rpl_semi_sync_slave_compressed_protocol.test (limited to 'mysql-test') diff --git a/mysql-test/suite/rpl/r/rpl_semi_sync_slave_compressed_protocol.result b/mysql-test/suite/rpl/r/rpl_semi_sync_slave_compressed_protocol.result new file mode 100644 index 00000000000..b0fe083f928 --- /dev/null +++ b/mysql-test/suite/rpl/r/rpl_semi_sync_slave_compressed_protocol.result @@ -0,0 +1,19 @@ +include/master-slave.inc +[connection master] +SET @@GLOBAL.rpl_semi_sync_master_enabled = 1; +connection slave; +include/stop_slave.inc +SET @@GLOBAL.rpl_semi_sync_slave_enabled = 1; +include/start_slave.inc +connection master; +CREATE TABLE t1 (i INT); +DROP TABLE t1; +include/rpl_sync.inc +include/assert_grep.inc [Check that there is no 'Read semi-sync reply magic number error' in error log.] +connection master; +SET @@GLOBAL. rpl_semi_sync_master_enabled = $sav_enabled_master; +connection slave; +include/stop_slave.inc +SET @@GLOBAL. rpl_semi_sync_slave_enabled = $sav_enabled_slave; +include/start_slave.inc +include/rpl_end.inc diff --git a/mysql-test/suite/rpl/t/rpl_semi_sync_slave_compressed_protocol-slave.opt b/mysql-test/suite/rpl/t/rpl_semi_sync_slave_compressed_protocol-slave.opt new file mode 100644 index 00000000000..a1b687d691e --- /dev/null +++ b/mysql-test/suite/rpl/t/rpl_semi_sync_slave_compressed_protocol-slave.opt @@ -0,0 +1 @@ +--slave_compressed_protocol diff --git a/mysql-test/suite/rpl/t/rpl_semi_sync_slave_compressed_protocol.test b/mysql-test/suite/rpl/t/rpl_semi_sync_slave_compressed_protocol.test new file mode 100644 index 00000000000..bc05bec2a96 --- /dev/null +++ b/mysql-test/suite/rpl/t/rpl_semi_sync_slave_compressed_protocol.test @@ -0,0 +1,55 @@ +################################################################################ +# Bug#26027024 SLAVE_COMPRESSED_PROTOCOL DOESN'T WORK WITH SEMI-SYNC +# REPLICATION IN MYSQL-5.7 +# +# Steps to reproduce: +# 1) Set slave_compressed_protocol ON on Slave. +# 2) Do some sample work on Master +# 3) After the work is synced on Slave, check that there is no error +# (Read semi-sync reply magic number error) on Slave. +# 4) Cleanup +################################################################################ +# Test is independent of Binlog format. One of the three formats is enough +# for testing. Choosing 'Row' format. +--source include/have_binlog_format_row.inc +--source include/master-slave.inc + +--let $sav_enabled_master=`SELECT @@GLOBAL.rpl_semi_sync_master_enabled ` +SET @@GLOBAL.rpl_semi_sync_master_enabled = 1; + +--connection slave +source include/stop_slave.inc; +--let $sav_enabled_slave=`SELECT @@GLOBAL.rpl_semi_sync_slave_enabled ` +SET @@GLOBAL.rpl_semi_sync_slave_enabled = 1; +source include/start_slave.inc; + +--connection master +# Do some sample work on Master with slave_compressed_protocol ON. +# (slave_compressed_protocol is set to ON in -slave.opt file of this test.) +CREATE TABLE t1 (i INT); +DROP TABLE t1; + +# Make sure sync is done, so that next 'assert' step can be executed without +# any issues. +--source include/rpl_sync.inc + +# Without the fix, the test would have generated few +# errors in the error log. With the fix, test will +# pass without any errors in the error log. +--let $assert_text= Check that there is no 'Read semi-sync reply magic number error' in error log. +--let $assert_select=Read semi-sync reply magic number error +--let $assert_file= $MYSQLTEST_VARDIR/log/mysqld.1.err +--let $assert_count= 0 +--let $assert_only_after = CURRENT_TEST:rpl.rpl_semi_sync_slave_compressed_protocol.test +--source include/assert_grep.inc + +--connection master +--evalp SET @@GLOBAL. rpl_semi_sync_master_enabled = $sav_enabled_master + +--connection slave +source include/stop_slave.inc; +--evalp SET @@GLOBAL. rpl_semi_sync_slave_enabled = $sav_enabled_slave +source include/start_slave.inc; + +# Cleanup +--source include/rpl_end.inc -- cgit v1.2.1 From 9e6310e323a3abd411f852ff57fe41c9f149ff3a Mon Sep 17 00:00:00 2001 From: Daniele Sciascia Date: Wed, 14 Apr 2021 17:06:31 +0200 Subject: Fix MTR test wsrep.variables_debug The test was changing variable wsrep_provider dynamically, but wsrep_provider was recently made read-only. followup for ce3a2a688db556d8 --- mysql-test/include/galera_no_debug_sync.inc | 9 + mysql-test/suite/wsrep/r/variables.result | 362 ++++++++++++++++-------- mysql-test/suite/wsrep/r/variables_debug.result | 254 +++++++++-------- mysql-test/suite/wsrep/t/variables.test | 137 +-------- mysql-test/suite/wsrep/t/variables_debug.test | 153 +--------- 5 files changed, 407 insertions(+), 508 deletions(-) create mode 100644 mysql-test/include/galera_no_debug_sync.inc (limited to 'mysql-test') diff --git a/mysql-test/include/galera_no_debug_sync.inc b/mysql-test/include/galera_no_debug_sync.inc new file mode 100644 index 00000000000..0819144c0b6 --- /dev/null +++ b/mysql-test/include/galera_no_debug_sync.inc @@ -0,0 +1,9 @@ +--disable_query_log + +--let $galera_have_debug_sync = `SELECT 1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_debug_sync_waiters'` + +--if ($galera_have_debug_sync) { + --skip Test requires Galera debug library with no debug_sync functionality +} + +--enable_query_log diff --git a/mysql-test/suite/wsrep/r/variables.result b/mysql-test/suite/wsrep/r/variables.result index df7ca3787aa..97fabd58de6 100644 --- a/mysql-test/suite/wsrep/r/variables.result +++ b/mysql-test/suite/wsrep/r/variables.result @@ -1,94 +1,156 @@ -call mtr.add_suppression("WSREP: Initial position was provided by configuration or SST, avoiding override"); -SET @wsrep_provider_options_saved= @@global.wsrep_provider_options; -SET @wsrep_cluster_address_saved= @@global.wsrep_cluster_address; - -# MDEV#5534: mysql_tzinfo_to_sql generates wrong query -# -# Testing wsrep_replicate_myisam variable. -SELECT @@session.wsrep_replicate_myisam; -ERROR HY000: Variable 'wsrep_replicate_myisam' is a GLOBAL variable -SELECT @@global.wsrep_replicate_myisam; -@@global.wsrep_replicate_myisam -0 -SET SESSION wsrep_replicate_myisam= ON; -ERROR HY000: Variable 'wsrep_replicate_myisam' is a GLOBAL variable and should be set with SET GLOBAL -SET GLOBAL wsrep_replicate_myisam= ON; -SET GLOBAL wsrep_replicate_myisam= OFF; +# Correct Galera library found # # MDEV#5790: SHOW GLOBAL STATUS LIKE does not show the correct list of # variables when using "_" # CALL mtr.add_suppression("WSREP: Could not open saved state file for reading.*"); -SHOW GLOBAL STATUS LIKE 'wsrep_local_state_comment'; +SHOW GLOBAL STATUS LIKE 'wsrep%'; Variable_name Value +wsrep_local_state_uuid # +wsrep_protocol_version # +wsrep_last_committed # +wsrep_replicated # +wsrep_replicated_bytes # +wsrep_repl_keys # +wsrep_repl_keys_bytes # +wsrep_repl_data_bytes # +wsrep_repl_other_bytes # +wsrep_received # +wsrep_received_bytes # +wsrep_local_commits # +wsrep_local_cert_failures # +wsrep_local_replays # +wsrep_local_send_queue # +wsrep_local_send_queue_max # +wsrep_local_send_queue_min # +wsrep_local_send_queue_avg # +wsrep_local_recv_queue # +wsrep_local_recv_queue_max # +wsrep_local_recv_queue_min # +wsrep_local_recv_queue_avg # +wsrep_local_cached_downto # +wsrep_flow_control_paused_ns # +wsrep_flow_control_paused # +wsrep_flow_control_sent # +wsrep_flow_control_recv # +wsrep_flow_control_active # +wsrep_flow_control_requested # +wsrep_cert_deps_distance # +wsrep_apply_oooe # +wsrep_apply_oool # +wsrep_apply_window # +wsrep_commit_oooe # +wsrep_commit_oool # +wsrep_commit_window # +wsrep_local_state # wsrep_local_state_comment # -# Should show nothing. -SHOW STATUS LIKE 'x'; -Variable_name Value +wsrep_cert_index_size # +wsrep_causal_reads # +wsrep_cert_interval # +wsrep_open_transactions # +wsrep_open_connections # +wsrep_incoming_addresses # +wsrep_cluster_weight # +wsrep_desync_count # +wsrep_evs_delayed # +wsrep_evs_evict_list # +wsrep_evs_repl_latency # +wsrep_evs_state # +wsrep_gcomm_uuid # +wsrep_gmcast_segment # +wsrep_applier_thread_count # +wsrep_cluster_capabilities # +wsrep_cluster_conf_id # +wsrep_cluster_size # +wsrep_cluster_state_uuid # +wsrep_cluster_status # +wsrep_connected # +wsrep_local_bf_aborts # +wsrep_local_index # +wsrep_provider_capabilities # +wsrep_provider_name # +wsrep_provider_vendor # +wsrep_provider_version # +wsrep_ready # +wsrep_rollbacker_thread_count # +wsrep_thread_count # -SHOW STATUS LIKE 'wsrep_local_state_uuid'; +SHOW GLOBAL STATUS LIKE 'wsrep_%'; Variable_name Value wsrep_local_state_uuid # - -SHOW STATUS LIKE 'wsrep_last_committed'; -Variable_name Value +wsrep_protocol_version # wsrep_last_committed # - -# -# MDEV#6206: wsrep_slave_threads subtracts from max_connections -# -call mtr.add_suppression("WSREP: Failed to get provider options"); -SELECT @@global.wsrep_provider; -@@global.wsrep_provider -libgalera_smm.so -SELECT @@global.wsrep_slave_threads; -@@global.wsrep_slave_threads -1 -SELECT @@global.wsrep_cluster_address; -@@global.wsrep_cluster_address -gcomm:// -SELECT @@global.wsrep_on; -@@global.wsrep_on -1 -SHOW STATUS LIKE 'threads_connected'; -Variable_name Value -Threads_connected 1 -SHOW STATUS LIKE 'wsrep_thread_count'; -Variable_name Value -wsrep_thread_count 2 - -SELECT @@global.wsrep_provider; -@@global.wsrep_provider -libgalera_smm.so -SELECT @@global.wsrep_cluster_address; -@@global.wsrep_cluster_address -gcomm:// -SELECT @@global.wsrep_on; -@@global.wsrep_on -1 -SHOW STATUS LIKE 'threads_connected'; +wsrep_replicated # +wsrep_replicated_bytes # +wsrep_repl_keys # +wsrep_repl_keys_bytes # +wsrep_repl_data_bytes # +wsrep_repl_other_bytes # +wsrep_received # +wsrep_received_bytes # +wsrep_local_commits # +wsrep_local_cert_failures # +wsrep_local_replays # +wsrep_local_send_queue # +wsrep_local_send_queue_max # +wsrep_local_send_queue_min # +wsrep_local_send_queue_avg # +wsrep_local_recv_queue # +wsrep_local_recv_queue_max # +wsrep_local_recv_queue_min # +wsrep_local_recv_queue_avg # +wsrep_local_cached_downto # +wsrep_flow_control_paused_ns # +wsrep_flow_control_paused # +wsrep_flow_control_sent # +wsrep_flow_control_recv # +wsrep_flow_control_active # +wsrep_flow_control_requested # +wsrep_cert_deps_distance # +wsrep_apply_oooe # +wsrep_apply_oool # +wsrep_apply_window # +wsrep_commit_oooe # +wsrep_commit_oool # +wsrep_commit_window # +wsrep_local_state # +wsrep_local_state_comment # +wsrep_cert_index_size # +wsrep_causal_reads # +wsrep_cert_interval # +wsrep_open_transactions # +wsrep_open_connections # +wsrep_incoming_addresses # +wsrep_cluster_weight # +wsrep_desync_count # +wsrep_evs_delayed # +wsrep_evs_evict_list # +wsrep_evs_repl_latency # +wsrep_evs_state # +wsrep_gcomm_uuid # +wsrep_gmcast_segment # +wsrep_applier_thread_count # +wsrep_cluster_capabilities # +wsrep_cluster_conf_id # +wsrep_cluster_size # +wsrep_cluster_state_uuid # +wsrep_cluster_status # +wsrep_connected # +wsrep_local_bf_aborts # +wsrep_local_index # +wsrep_provider_capabilities # +wsrep_provider_name # +wsrep_provider_vendor # +wsrep_provider_version # +wsrep_ready # +wsrep_rollbacker_thread_count # +wsrep_thread_count # +SHOW GLOBAL STATUS LIKE 'wsrep_local_state_comment'; Variable_name Value -Threads_connected 1 -SHOW STATUS LIKE 'wsrep_thread_count'; +wsrep_local_state_comment # +# Should show nothing. +SHOW STATUS LIKE 'x'; Variable_name Value -wsrep_thread_count 2 - -# Setting wsrep_cluster_address triggers the creation of -# applier/rollbacker threads. -# Wait for applier thread to get created 1. -# Wait for applier thread to get created 2. -SELECT VARIABLE_VALUE AS EXPECT_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_applier_thread_count'; -EXPECT_1 -1 -SELECT VARIABLE_VALUE AS EXPECT_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_rollbacker_thread_count'; -EXPECT_1 -1 -SELECT VARIABLE_VALUE AS EXPECT_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_thread_count'; -EXPECT_2 -2 -SELECT @@global.wsrep_provider; -@@global.wsrep_provider -libgalera_smm.so SELECT @@global.wsrep_cluster_address; @@global.wsrep_cluster_address gcomm:// @@ -101,38 +163,112 @@ Threads_connected 1 SHOW STATUS LIKE 'wsrep_thread_count'; Variable_name Value wsrep_thread_count 2 - -SET @wsrep_slave_threads_saved= @@global.wsrep_slave_threads; -SET GLOBAL wsrep_slave_threads= 10; -# Wait for 9 applier threads to get created. -SELECT VARIABLE_VALUE AS EXPECT_10 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_applier_thread_count'; -EXPECT_10 -10 -SELECT VARIABLE_VALUE AS EXPECT_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_rollbacker_thread_count'; -EXPECT_1 -1 -SELECT VARIABLE_VALUE AS EXPECT_11 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_thread_count'; -EXPECT_11 -11 -SHOW STATUS LIKE 'threads_connected'; -Variable_name Value -Threads_connected 1 -set wsrep_on=0; -set wsrep_on=1; -create user test@localhost; -connect con1,localhost,test; -set auto_increment_increment=10; -set wsrep_on=0; -ERROR 42000: Access denied; you need (at least one of) the SUPER privilege(s) for this operation -disconnect con1; -connection default; -drop user test@localhost; -# -# MDEV#6411: Setting set @@global.wsrep_sst_auth=NULL causes crash -# -SET @wsrep_sst_auth_saved= @@global.wsrep_sst_auth; -SET @@global.wsrep_sst_auth= 'user:pass'; -SET @@global.wsrep_sst_auth= ''; -SET @@global.wsrep_sst_auth= NULL; -SET @@global.wsrep_sst_auth= @wsrep_sst_auth_saved; -# End of test. +# variables +SELECT COUNT(*) AS EXPECT_49 FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME LIKE "wsrep%"; +EXPECT_49 +49 +SELECT COUNT(*) AS EXPECT_49 FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME LIKE "wsrep%"; +EXPECT_49 +49 +SELECT VARIABLE_NAME FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME LIKE "wsrep%" ORDER BY VARIABLE_NAME; +VARIABLE_NAME +WSREP_AUTO_INCREMENT_CONTROL +WSREP_CAUSAL_READS +WSREP_CERTIFICATION_RULES +WSREP_CERTIFY_NONPK +WSREP_CLUSTER_ADDRESS +WSREP_CLUSTER_NAME +WSREP_CONVERT_LOCK_TO_TRX +WSREP_DATA_HOME_DIR +WSREP_DBUG_OPTION +WSREP_DEBUG +WSREP_DESYNC +WSREP_DIRTY_READS +WSREP_DRUPAL_282555_WORKAROUND +WSREP_FORCED_BINLOG_FORMAT +WSREP_GTID_DOMAIN_ID +WSREP_GTID_MODE +WSREP_IGNORE_APPLY_ERRORS +WSREP_LOAD_DATA_SPLITTING +WSREP_LOG_CONFLICTS +WSREP_MAX_WS_ROWS +WSREP_MAX_WS_SIZE +WSREP_MYSQL_REPLICATION_BUNDLE +WSREP_NODE_ADDRESS +WSREP_NODE_INCOMING_ADDRESS +WSREP_NODE_NAME +WSREP_NOTIFY_CMD +WSREP_ON +WSREP_OSU_METHOD +WSREP_PATCH_VERSION +WSREP_PROVIDER +WSREP_PROVIDER_OPTIONS +WSREP_RECOVER +WSREP_REJECT_QUERIES +WSREP_REPLICATE_MYISAM +WSREP_RESTART_SLAVE +WSREP_RETRY_AUTOCOMMIT +WSREP_SLAVE_FK_CHECKS +WSREP_SLAVE_THREADS +WSREP_SLAVE_UK_CHECKS +WSREP_SR_STORE +WSREP_SST_AUTH +WSREP_SST_DONOR +WSREP_SST_DONOR_REJECTS_QUERIES +WSREP_SST_METHOD +WSREP_SST_RECEIVE_ADDRESS +WSREP_START_POSITION +WSREP_SYNC_WAIT +WSREP_TRX_FRAGMENT_SIZE +WSREP_TRX_FRAGMENT_UNIT +SELECT VARIABLE_NAME FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME LIKE "wsrep%" ORDER BY VARIABLE_NAME; +VARIABLE_NAME +WSREP_AUTO_INCREMENT_CONTROL +WSREP_CAUSAL_READS +WSREP_CERTIFICATION_RULES +WSREP_CERTIFY_NONPK +WSREP_CLUSTER_ADDRESS +WSREP_CLUSTER_NAME +WSREP_CONVERT_LOCK_TO_TRX +WSREP_DATA_HOME_DIR +WSREP_DBUG_OPTION +WSREP_DEBUG +WSREP_DESYNC +WSREP_DIRTY_READS +WSREP_DRUPAL_282555_WORKAROUND +WSREP_FORCED_BINLOG_FORMAT +WSREP_GTID_DOMAIN_ID +WSREP_GTID_MODE +WSREP_IGNORE_APPLY_ERRORS +WSREP_LOAD_DATA_SPLITTING +WSREP_LOG_CONFLICTS +WSREP_MAX_WS_ROWS +WSREP_MAX_WS_SIZE +WSREP_MYSQL_REPLICATION_BUNDLE +WSREP_NODE_ADDRESS +WSREP_NODE_INCOMING_ADDRESS +WSREP_NODE_NAME +WSREP_NOTIFY_CMD +WSREP_ON +WSREP_OSU_METHOD +WSREP_PATCH_VERSION +WSREP_PROVIDER +WSREP_PROVIDER_OPTIONS +WSREP_RECOVER +WSREP_REJECT_QUERIES +WSREP_REPLICATE_MYISAM +WSREP_RESTART_SLAVE +WSREP_RETRY_AUTOCOMMIT +WSREP_SLAVE_FK_CHECKS +WSREP_SLAVE_THREADS +WSREP_SLAVE_UK_CHECKS +WSREP_SR_STORE +WSREP_SST_AUTH +WSREP_SST_DONOR +WSREP_SST_DONOR_REJECTS_QUERIES +WSREP_SST_METHOD +WSREP_SST_RECEIVE_ADDRESS +WSREP_START_POSITION +WSREP_SYNC_WAIT +WSREP_TRX_FRAGMENT_SIZE +WSREP_TRX_FRAGMENT_UNIT diff --git a/mysql-test/suite/wsrep/r/variables_debug.result b/mysql-test/suite/wsrep/r/variables_debug.result index 886325acf53..9a140f26ec3 100644 --- a/mysql-test/suite/wsrep/r/variables_debug.result +++ b/mysql-test/suite/wsrep/r/variables_debug.result @@ -1,20 +1,4 @@ -call mtr.add_suppression("WSREP: Initial position was provided by configuration or SST, avoiding override"); -SET @wsrep_provider_options_saved= @@global.wsrep_provider_options; -SET @wsrep_cluster_address_saved= @@global.wsrep_cluster_address; - -# MDEV#5534: mysql_tzinfo_to_sql generates wrong query -# -# Testing wsrep_replicate_myisam variable. -SELECT @@session.wsrep_replicate_myisam; -ERROR HY000: Variable 'wsrep_replicate_myisam' is a GLOBAL variable -SELECT @@global.wsrep_replicate_myisam; -@@global.wsrep_replicate_myisam -0 -SET SESSION wsrep_replicate_myisam= ON; -ERROR HY000: Variable 'wsrep_replicate_myisam' is a GLOBAL variable and should be set with SET GLOBAL -SET GLOBAL wsrep_replicate_myisam= ON; -SET GLOBAL wsrep_replicate_myisam= OFF; -SET GLOBAL wsrep_provider=none; +# Correct Galera library found # # MDEV#5790: SHOW GLOBAL STATUS LIKE does not show the correct list of # variables when using "_" @@ -66,7 +50,15 @@ wsrep_cert_interval # wsrep_open_transactions # wsrep_open_connections # wsrep_incoming_addresses # +wsrep_cluster_weight # wsrep_debug_sync_waiters # +wsrep_desync_count # +wsrep_evs_delayed # +wsrep_evs_evict_list # +wsrep_evs_repl_latency # +wsrep_evs_state # +wsrep_gcomm_uuid # +wsrep_gmcast_segment # wsrep_applier_thread_count # wsrep_cluster_capabilities # wsrep_cluster_conf_id # @@ -130,7 +122,15 @@ wsrep_cert_interval # wsrep_open_transactions # wsrep_open_connections # wsrep_incoming_addresses # +wsrep_cluster_weight # wsrep_debug_sync_waiters # +wsrep_desync_count # +wsrep_evs_delayed # +wsrep_evs_evict_list # +wsrep_evs_repl_latency # +wsrep_evs_state # +wsrep_gcomm_uuid # +wsrep_gmcast_segment # wsrep_applier_thread_count # wsrep_cluster_capabilities # wsrep_cluster_conf_id # @@ -153,73 +153,6 @@ wsrep_local_state_comment # # Should show nothing. SHOW STATUS LIKE 'x'; Variable_name Value -SET GLOBAL wsrep_provider=none; - -SHOW STATUS LIKE 'wsrep_local_state_uuid'; -Variable_name Value -wsrep_local_state_uuid # - -SHOW STATUS LIKE 'wsrep_last_committed'; -Variable_name Value -wsrep_last_committed # -SET GLOBAL wsrep_provider=none; - -# -# MDEV#6206: wsrep_slave_threads subtracts from max_connections -# -call mtr.add_suppression("WSREP: Failed to get provider options"); -SELECT @@global.wsrep_provider; -@@global.wsrep_provider -libgalera_smm.so -SELECT @@global.wsrep_slave_threads; -@@global.wsrep_slave_threads -1 -SELECT @@global.wsrep_cluster_address; -@@global.wsrep_cluster_address - -SELECT @@global.wsrep_on; -@@global.wsrep_on -1 -SHOW STATUS LIKE 'threads_connected'; -Variable_name Value -Threads_connected 1 -SHOW STATUS LIKE 'wsrep_thread_count'; -Variable_name Value -wsrep_thread_count 0 - -SELECT @@global.wsrep_provider; -@@global.wsrep_provider -libgalera_smm.so -SELECT @@global.wsrep_cluster_address; -@@global.wsrep_cluster_address - -SELECT @@global.wsrep_on; -@@global.wsrep_on -1 -SHOW STATUS LIKE 'threads_connected'; -Variable_name Value -Threads_connected 1 -SHOW STATUS LIKE 'wsrep_thread_count'; -Variable_name Value -wsrep_thread_count 0 - -# Setting wsrep_cluster_address triggers the creation of -# applier/rollbacker threads. -SET GLOBAL wsrep_cluster_address= 'gcomm://'; -# Wait for applier thread to get created 1. -# Wait for applier thread to get created 2. -SELECT VARIABLE_VALUE AS EXPECT_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_applier_thread_count'; -EXPECT_1 -1 -SELECT VARIABLE_VALUE AS EXPECT_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_rollbacker_thread_count'; -EXPECT_1 -1 -SELECT VARIABLE_VALUE AS EXPECT_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_thread_count'; -EXPECT_2 -2 -SELECT @@global.wsrep_provider; -@@global.wsrep_provider -libgalera_smm.so SELECT @@global.wsrep_cluster_address; @@global.wsrep_cluster_address gcomm:// @@ -232,47 +165,112 @@ Threads_connected 1 SHOW STATUS LIKE 'wsrep_thread_count'; Variable_name Value wsrep_thread_count 2 - -SET @wsrep_slave_threads_saved= @@global.wsrep_slave_threads; -SET GLOBAL wsrep_slave_threads= 10; -# Wait for 9 applier threads to get created. -SELECT VARIABLE_VALUE AS EXPECT_10 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_applier_thread_count'; -EXPECT_10 -10 -SELECT VARIABLE_VALUE AS EXPECT_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_rollbacker_thread_count'; -EXPECT_1 -1 -SELECT VARIABLE_VALUE AS EXPECT_11 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_thread_count'; -EXPECT_11 -11 -SHOW STATUS LIKE 'threads_connected'; -Variable_name Value -Threads_connected 1 -set wsrep_on=0; -set wsrep_on=1; -create user test@localhost; -connect con1,localhost,test; -set auto_increment_increment=10; -set wsrep_on=0; -ERROR 42000: Access denied; you need (at least one of) the SUPER privilege(s) for this operation -disconnect con1; -connection default; -drop user test@localhost; -# -# MDEV#6411: Setting set @@global.wsrep_sst_auth=NULL causes crash -# -SET @wsrep_sst_auth_saved= @@global.wsrep_sst_auth; -SET @@global.wsrep_sst_auth= 'user:pass'; -SELECT @@global.wsrep_sst_auth; -@@global.wsrep_sst_auth -******** -SET @@global.wsrep_sst_auth= ''; -SELECT @@global.wsrep_sst_auth; -@@global.wsrep_sst_auth - -SET @@global.wsrep_sst_auth= NULL; -SELECT @@global.wsrep_sst_auth; -@@global.wsrep_sst_auth -NULL -SET @@global.wsrep_sst_auth= @wsrep_sst_auth_saved; -# End of test. +# variables +SELECT COUNT(*) AS EXPECT_49 FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME LIKE "wsrep%"; +EXPECT_49 +49 +SELECT COUNT(*) AS EXPECT_49 FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME LIKE "wsrep%"; +EXPECT_49 +49 +SELECT VARIABLE_NAME FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME LIKE "wsrep%" ORDER BY VARIABLE_NAME; +VARIABLE_NAME +WSREP_AUTO_INCREMENT_CONTROL +WSREP_CAUSAL_READS +WSREP_CERTIFICATION_RULES +WSREP_CERTIFY_NONPK +WSREP_CLUSTER_ADDRESS +WSREP_CLUSTER_NAME +WSREP_CONVERT_LOCK_TO_TRX +WSREP_DATA_HOME_DIR +WSREP_DBUG_OPTION +WSREP_DEBUG +WSREP_DESYNC +WSREP_DIRTY_READS +WSREP_DRUPAL_282555_WORKAROUND +WSREP_FORCED_BINLOG_FORMAT +WSREP_GTID_DOMAIN_ID +WSREP_GTID_MODE +WSREP_IGNORE_APPLY_ERRORS +WSREP_LOAD_DATA_SPLITTING +WSREP_LOG_CONFLICTS +WSREP_MAX_WS_ROWS +WSREP_MAX_WS_SIZE +WSREP_MYSQL_REPLICATION_BUNDLE +WSREP_NODE_ADDRESS +WSREP_NODE_INCOMING_ADDRESS +WSREP_NODE_NAME +WSREP_NOTIFY_CMD +WSREP_ON +WSREP_OSU_METHOD +WSREP_PATCH_VERSION +WSREP_PROVIDER +WSREP_PROVIDER_OPTIONS +WSREP_RECOVER +WSREP_REJECT_QUERIES +WSREP_REPLICATE_MYISAM +WSREP_RESTART_SLAVE +WSREP_RETRY_AUTOCOMMIT +WSREP_SLAVE_FK_CHECKS +WSREP_SLAVE_THREADS +WSREP_SLAVE_UK_CHECKS +WSREP_SR_STORE +WSREP_SST_AUTH +WSREP_SST_DONOR +WSREP_SST_DONOR_REJECTS_QUERIES +WSREP_SST_METHOD +WSREP_SST_RECEIVE_ADDRESS +WSREP_START_POSITION +WSREP_SYNC_WAIT +WSREP_TRX_FRAGMENT_SIZE +WSREP_TRX_FRAGMENT_UNIT +SELECT VARIABLE_NAME FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME LIKE "wsrep%" ORDER BY VARIABLE_NAME; +VARIABLE_NAME +WSREP_AUTO_INCREMENT_CONTROL +WSREP_CAUSAL_READS +WSREP_CERTIFICATION_RULES +WSREP_CERTIFY_NONPK +WSREP_CLUSTER_ADDRESS +WSREP_CLUSTER_NAME +WSREP_CONVERT_LOCK_TO_TRX +WSREP_DATA_HOME_DIR +WSREP_DBUG_OPTION +WSREP_DEBUG +WSREP_DESYNC +WSREP_DIRTY_READS +WSREP_DRUPAL_282555_WORKAROUND +WSREP_FORCED_BINLOG_FORMAT +WSREP_GTID_DOMAIN_ID +WSREP_GTID_MODE +WSREP_IGNORE_APPLY_ERRORS +WSREP_LOAD_DATA_SPLITTING +WSREP_LOG_CONFLICTS +WSREP_MAX_WS_ROWS +WSREP_MAX_WS_SIZE +WSREP_MYSQL_REPLICATION_BUNDLE +WSREP_NODE_ADDRESS +WSREP_NODE_INCOMING_ADDRESS +WSREP_NODE_NAME +WSREP_NOTIFY_CMD +WSREP_ON +WSREP_OSU_METHOD +WSREP_PATCH_VERSION +WSREP_PROVIDER +WSREP_PROVIDER_OPTIONS +WSREP_RECOVER +WSREP_REJECT_QUERIES +WSREP_REPLICATE_MYISAM +WSREP_RESTART_SLAVE +WSREP_RETRY_AUTOCOMMIT +WSREP_SLAVE_FK_CHECKS +WSREP_SLAVE_THREADS +WSREP_SLAVE_UK_CHECKS +WSREP_SR_STORE +WSREP_SST_AUTH +WSREP_SST_DONOR +WSREP_SST_DONOR_REJECTS_QUERIES +WSREP_SST_METHOD +WSREP_SST_RECEIVE_ADDRESS +WSREP_START_POSITION +WSREP_SYNC_WAIT +WSREP_TRX_FRAGMENT_SIZE +WSREP_TRX_FRAGMENT_UNIT diff --git a/mysql-test/suite/wsrep/t/variables.test b/mysql-test/suite/wsrep/t/variables.test index 6b767c60979..8b94275a646 100644 --- a/mysql-test/suite/wsrep/t/variables.test +++ b/mysql-test/suite/wsrep/t/variables.test @@ -1,28 +1,10 @@ --source include/have_wsrep.inc --source include/force_restart.inc --source include/have_innodb.inc +--source include/galera_no_debug_sync.inc -call mtr.add_suppression("WSREP: Initial position was provided by configuration or SST, avoiding override"); - -SET @wsrep_provider_options_saved= @@global.wsrep_provider_options; -SET @wsrep_cluster_address_saved= @@global.wsrep_cluster_address; - ---echo ---echo # MDEV#5534: mysql_tzinfo_to_sql generates wrong query ---echo # ---echo # Testing wsrep_replicate_myisam variable. - ---error ER_INCORRECT_GLOBAL_LOCAL_VAR -SELECT @@session.wsrep_replicate_myisam; -SELECT @@global.wsrep_replicate_myisam; - ---error ER_GLOBAL_VARIABLE -SET SESSION wsrep_replicate_myisam= ON; -SET GLOBAL wsrep_replicate_myisam= ON; - -# Reset it back. -SET GLOBAL wsrep_replicate_myisam= OFF; -#SET GLOBAL wsrep_provider=none; +--let $galera_version=26.4.8 +source ../../wsrep/include/check_galera_version.inc; --echo # --echo # MDEV#5790: SHOW GLOBAL STATUS LIKE does not show the correct list of @@ -31,118 +13,27 @@ SET GLOBAL wsrep_replicate_myisam= OFF; CALL mtr.add_suppression("WSREP: Could not open saved state file for reading.*"); -#evalp SET GLOBAL wsrep_provider= '$WSREP_PROVIDER'; - --replace_column 2 # -SHOW GLOBAL STATUS LIKE 'wsrep_local_state_comment'; - ---echo # Should show nothing. -SHOW STATUS LIKE 'x'; - -# Reset it back. -#SET GLOBAL wsrep_provider=none; +SHOW GLOBAL STATUS LIKE 'wsrep%'; -#evalp SET GLOBAL wsrep_provider= '$WSREP_PROVIDER'; - -# The following 2 variables are used by mariabackup -# SST. ---echo ---replace_column 2 # -SHOW STATUS LIKE 'wsrep_local_state_uuid'; --echo --replace_column 2 # -SHOW STATUS LIKE 'wsrep_last_committed'; - -# Reset it back. -#SET GLOBAL wsrep_provider=none; - ---echo ---echo # ---echo # MDEV#6206: wsrep_slave_threads subtracts from max_connections ---echo # -call mtr.add_suppression("WSREP: Failed to get provider options"); - -#evalp SET GLOBAL wsrep_provider= '$WSREP_PROVIDER'; - ---replace_regex /.*libgalera.*smm.*/libgalera_smm.so/ -SELECT @@global.wsrep_provider; -SELECT @@global.wsrep_slave_threads; -SELECT @@global.wsrep_cluster_address; -SELECT @@global.wsrep_on; -SHOW STATUS LIKE 'threads_connected'; -SHOW STATUS LIKE 'wsrep_thread_count'; ---echo - -#evalp SET GLOBAL wsrep_provider= '$WSREP_PROVIDER'; +SHOW GLOBAL STATUS LIKE 'wsrep_%'; ---replace_regex /.*libgalera.*smm.*/libgalera_smm.so/ -SELECT @@global.wsrep_provider; -SELECT @@global.wsrep_cluster_address; -SELECT @@global.wsrep_on; -SHOW STATUS LIKE 'threads_connected'; -SHOW STATUS LIKE 'wsrep_thread_count'; ---echo - ---echo # Setting wsrep_cluster_address triggers the creation of ---echo # applier/rollbacker threads. -#SET GLOBAL wsrep_cluster_address= 'gcomm://'; - ---echo # Wait for applier thread to get created 1. ---let $wait_condition = SELECT VARIABLE_VALUE = 1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_applier_thread_count'; ---source include/wait_condition.inc ---echo # Wait for applier thread to get created 2. ---let $wait_condition = SELECT VARIABLE_VALUE = 1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_rollbacker_thread_count'; ---source include/wait_condition.inc +--replace_column 2 # +SHOW GLOBAL STATUS LIKE 'wsrep_local_state_comment'; -SELECT VARIABLE_VALUE AS EXPECT_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_applier_thread_count'; -SELECT VARIABLE_VALUE AS EXPECT_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_rollbacker_thread_count'; -SELECT VARIABLE_VALUE AS EXPECT_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_thread_count'; +--echo # Should show nothing. +SHOW STATUS LIKE 'x'; ---replace_regex /.*libgalera.*smm.*/libgalera_smm.so/ -SELECT @@global.wsrep_provider; SELECT @@global.wsrep_cluster_address; SELECT @@global.wsrep_on; SHOW STATUS LIKE 'threads_connected'; SHOW STATUS LIKE 'wsrep_thread_count'; ---echo - -SET @wsrep_slave_threads_saved= @@global.wsrep_slave_threads; -SET GLOBAL wsrep_slave_threads= 10; - ---echo # Wait for 9 applier threads to get created. ---let $wait_condition = SELECT VARIABLE_VALUE = 10 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_applier_thread_count'; ---source include/wait_condition.inc - -SELECT VARIABLE_VALUE AS EXPECT_10 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_applier_thread_count'; -SELECT VARIABLE_VALUE AS EXPECT_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_rollbacker_thread_count'; -SELECT VARIABLE_VALUE AS EXPECT_11 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_thread_count'; - -SHOW STATUS LIKE 'threads_connected'; - -# -# privileges for wsrep_on -# -set wsrep_on=0; -set wsrep_on=1; ---source include/wait_until_connected_again.inc -create user test@localhost; -connect con1,localhost,test; -set auto_increment_increment=10; ---error ER_SPECIFIC_ACCESS_DENIED_ERROR -set wsrep_on=0; -disconnect con1; -connection default; -drop user test@localhost; - ---echo # ---echo # MDEV#6411: Setting set @@global.wsrep_sst_auth=NULL causes crash ---echo # -SET @wsrep_sst_auth_saved= @@global.wsrep_sst_auth; -SET @@global.wsrep_sst_auth= 'user:pass'; -SET @@global.wsrep_sst_auth= ''; -SET @@global.wsrep_sst_auth= NULL; -SET @@global.wsrep_sst_auth= @wsrep_sst_auth_saved; ---source include/galera_wait_ready.inc +--echo # variables ---echo # End of test. +SELECT COUNT(*) AS EXPECT_49 FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME LIKE "wsrep%"; +SELECT COUNT(*) AS EXPECT_49 FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME LIKE "wsrep%"; +SELECT VARIABLE_NAME FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME LIKE "wsrep%" ORDER BY VARIABLE_NAME; +SELECT VARIABLE_NAME FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME LIKE "wsrep%" ORDER BY VARIABLE_NAME; diff --git a/mysql-test/suite/wsrep/t/variables_debug.test b/mysql-test/suite/wsrep/t/variables_debug.test index f2c3a0a3b78..f1b0194dee0 100644 --- a/mysql-test/suite/wsrep/t/variables_debug.test +++ b/mysql-test/suite/wsrep/t/variables_debug.test @@ -1,29 +1,12 @@ --source include/have_wsrep.inc --source include/force_restart.inc --source include/have_innodb.inc +--source include/have_debug.inc +--source include/have_debug_sync.inc --source include/galera_have_debug_sync.inc -call mtr.add_suppression("WSREP: Initial position was provided by configuration or SST, avoiding override"); - -SET @wsrep_provider_options_saved= @@global.wsrep_provider_options; -SET @wsrep_cluster_address_saved= @@global.wsrep_cluster_address; - ---echo ---echo # MDEV#5534: mysql_tzinfo_to_sql generates wrong query ---echo # ---echo # Testing wsrep_replicate_myisam variable. - ---error ER_INCORRECT_GLOBAL_LOCAL_VAR -SELECT @@session.wsrep_replicate_myisam; -SELECT @@global.wsrep_replicate_myisam; - ---error ER_GLOBAL_VARIABLE -SET SESSION wsrep_replicate_myisam= ON; -SET GLOBAL wsrep_replicate_myisam= ON; - -# Reset it back. -SET GLOBAL wsrep_replicate_myisam= OFF; -SET GLOBAL wsrep_provider=none; +--let $galera_version=26.4.8 +source ../../wsrep/include/check_galera_version.inc; --echo # --echo # MDEV#5790: SHOW GLOBAL STATUS LIKE does not show the correct list of @@ -32,10 +15,6 @@ SET GLOBAL wsrep_provider=none; CALL mtr.add_suppression("WSREP: Could not open saved state file for reading.*"); ---disable_query_log -eval SET GLOBAL wsrep_provider= '$WSREP_PROVIDER'; ---enable_query_log - --replace_column 2 # SHOW GLOBAL STATUS LIKE 'wsrep%'; @@ -49,128 +28,14 @@ SHOW GLOBAL STATUS LIKE 'wsrep_local_state_comment'; --echo # Should show nothing. SHOW STATUS LIKE 'x'; -# Reset it back. -SET GLOBAL wsrep_provider=none; - ---disable_query_log -eval SET GLOBAL wsrep_provider= '$WSREP_PROVIDER'; ---enable_query_log - -# The following 2 variables are used by mariabackup -# SST. ---echo ---replace_column 2 # -SHOW STATUS LIKE 'wsrep_local_state_uuid'; ---echo ---replace_column 2 # -SHOW STATUS LIKE 'wsrep_last_committed'; - -# Reset it back. -SET GLOBAL wsrep_provider=none; - ---echo ---echo # ---echo # MDEV#6206: wsrep_slave_threads subtracts from max_connections ---echo # -call mtr.add_suppression("WSREP: Failed to get provider options"); - ---disable_query_log -eval SET GLOBAL wsrep_provider= '$WSREP_PROVIDER'; ---enable_query_log - ---replace_regex /.*libgalera_smm.*/libgalera_smm.so/ -SELECT @@global.wsrep_provider; -SELECT @@global.wsrep_slave_threads; SELECT @@global.wsrep_cluster_address; SELECT @@global.wsrep_on; SHOW STATUS LIKE 'threads_connected'; SHOW STATUS LIKE 'wsrep_thread_count'; ---echo - ---disable_query_log -eval SET GLOBAL wsrep_provider= '$WSREP_PROVIDER'; ---enable_query_log - ---replace_regex /.*libgalera_smm.*/libgalera_smm.so/ -SELECT @@global.wsrep_provider; -SELECT @@global.wsrep_cluster_address; -SELECT @@global.wsrep_on; -SHOW STATUS LIKE 'threads_connected'; -SHOW STATUS LIKE 'wsrep_thread_count'; ---echo - ---echo # Setting wsrep_cluster_address triggers the creation of ---echo # applier/rollbacker threads. -SET GLOBAL wsrep_cluster_address= 'gcomm://'; - ---echo # Wait for applier thread to get created 1. ---let $wait_condition = SELECT VARIABLE_VALUE = 1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_applier_thread_count'; ---source include/wait_condition.inc ---echo # Wait for applier thread to get created 2. ---let $wait_condition = SELECT VARIABLE_VALUE = 1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_rollbacker_thread_count'; ---source include/wait_condition.inc - -SELECT VARIABLE_VALUE AS EXPECT_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_applier_thread_count'; -SELECT VARIABLE_VALUE AS EXPECT_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_rollbacker_thread_count'; -SELECT VARIABLE_VALUE AS EXPECT_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_thread_count'; - ---replace_regex /.*libgalera_smm.*/libgalera_smm.so/ -SELECT @@global.wsrep_provider; -SELECT @@global.wsrep_cluster_address; -SELECT @@global.wsrep_on; -SHOW STATUS LIKE 'threads_connected'; -SHOW STATUS LIKE 'wsrep_thread_count'; ---echo - -SET @wsrep_slave_threads_saved= @@global.wsrep_slave_threads; -SET GLOBAL wsrep_slave_threads= 10; - ---echo # Wait for 9 applier threads to get created. ---let $wait_condition = SELECT VARIABLE_VALUE = 10 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_applier_thread_count'; ---source include/wait_condition.inc - -SELECT VARIABLE_VALUE AS EXPECT_10 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_applier_thread_count'; -SELECT VARIABLE_VALUE AS EXPECT_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_rollbacker_thread_count'; -SELECT VARIABLE_VALUE AS EXPECT_11 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_thread_count'; - -SHOW STATUS LIKE 'threads_connected'; - -# -# privileges for wsrep_on -# -set wsrep_on=0; -set wsrep_on=1; ---source include/wait_until_connected_again.inc -create user test@localhost; -connect con1,localhost,test; -set auto_increment_increment=10; ---error ER_SPECIFIC_ACCESS_DENIED_ERROR -set wsrep_on=0; -disconnect con1; -connection default; -drop user test@localhost; - ---echo # ---echo # MDEV#6411: Setting set @@global.wsrep_sst_auth=NULL causes crash ---echo # -SET @wsrep_sst_auth_saved= @@global.wsrep_sst_auth; -SET @@global.wsrep_sst_auth= 'user:pass'; -SELECT @@global.wsrep_sst_auth; -SET @@global.wsrep_sst_auth= ''; -SELECT @@global.wsrep_sst_auth; -SET @@global.wsrep_sst_auth= NULL; -SELECT @@global.wsrep_sst_auth; -SET @@global.wsrep_sst_auth= @wsrep_sst_auth_saved; - -# Reset (for mtr internal checks) - ---disable_query_log -SET GLOBAL wsrep_slave_threads= @wsrep_slave_threads_saved; -eval SET GLOBAL wsrep_provider= '$WSREP_PROVIDER'; -SET GLOBAL wsrep_cluster_address= @wsrep_cluster_address_saved; -SET GLOBAL wsrep_provider_options= @wsrep_provider_options_saved; ---enable_query_log ---source include/galera_wait_ready.inc +--echo # variables ---echo # End of test. +SELECT COUNT(*) AS EXPECT_49 FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME LIKE "wsrep%"; +SELECT COUNT(*) AS EXPECT_49 FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME LIKE "wsrep%"; +SELECT VARIABLE_NAME FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME LIKE "wsrep%" ORDER BY VARIABLE_NAME; +SELECT VARIABLE_NAME FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME LIKE "wsrep%" ORDER BY VARIABLE_NAME; -- cgit v1.2.1 From 4d412e9854ccb3676a9a51a002fbcc6b44a26294 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Mon, 26 Apr 2021 18:17:18 +0300 Subject: MDEV-24758 heap-use-after-poison in innobase_add_instant_try/rec_copy This is a backport of commit fd9ca2a742abe2e91b2b77e70915dec7bd3cd7e1 (MDEV-23295) and commit 9a156e1a23046ba3e37bdb1e4e1ad887d3f5829b (MDEV-23345) to 10.3. An instant ADD/DROP/reorder column could create a dummy table object with the wrong ROW_FORMAT when innodb_default_row_format was changed between CREATE TABLE and ALTER TABLE. prepare_inplace_alter_table_dict(): If we had promised that ALGORITHM=INPLACE is supported, we must preserve the ROW_FORMAT. The rest of the changes are related to adding Alter_inplace_info::inplace_supported to cache the return value of handler::check_if_supported_inplace_alter(). --- mysql-test/suite/innodb/r/default_row_format_alter.result | 10 ++++++++++ mysql-test/suite/innodb/t/default_row_format_alter.test | 14 ++++++++++++++ 2 files changed, 24 insertions(+) (limited to 'mysql-test') diff --git a/mysql-test/suite/innodb/r/default_row_format_alter.result b/mysql-test/suite/innodb/r/default_row_format_alter.result index 1f349e6e2f6..9d96edcf79c 100644 --- a/mysql-test/suite/innodb/r/default_row_format_alter.result +++ b/mysql-test/suite/innodb/r/default_row_format_alter.result @@ -82,4 +82,14 @@ SHOW TABLE STATUS LIKE 't1'; Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment Max_index_length Temporary t1 InnoDB # Compact # # # # # # NULL # # NULL latin1_swedish_ci NULL 0 N DROP TABLE t1; +# +# MDEV-24758 heap-use-after-poison in innobase_add_instant_try/rec_copy +# +CREATE TABLE t1 (pk INT PRIMARY KEY) CHARACTER SET utf8 ENGINE=InnoDB; +INSERT INTO t1 VALUES (1); +SET GLOBAL innodb_default_row_format = REDUNDANT; +ALTER TABLE t1 ADD a CHAR(8) DEFAULT ''; +DROP TABLE t1; +SET GLOBAL innodb_default_row_format = @row_format; +# End of 10.3 tests SET GLOBAL innodb_default_row_format = @row_format; diff --git a/mysql-test/suite/innodb/t/default_row_format_alter.test b/mysql-test/suite/innodb/t/default_row_format_alter.test index 8f7217bcf0c..fc03ce590fa 100644 --- a/mysql-test/suite/innodb/t/default_row_format_alter.test +++ b/mysql-test/suite/innodb/t/default_row_format_alter.test @@ -1,4 +1,5 @@ --source include/have_innodb.inc +--source include/innodb_row_format.inc SET @row_format = @@GLOBAL.innodb_default_row_format; @@ -95,4 +96,17 @@ ALTER TABLE t1 DROP INDEX k1; SHOW TABLE STATUS LIKE 't1'; DROP TABLE t1; +--echo # +--echo # MDEV-24758 heap-use-after-poison in innobase_add_instant_try/rec_copy +--echo # + +CREATE TABLE t1 (pk INT PRIMARY KEY) CHARACTER SET utf8 ENGINE=InnoDB; +INSERT INTO t1 VALUES (1); +SET GLOBAL innodb_default_row_format = REDUNDANT; +ALTER TABLE t1 ADD a CHAR(8) DEFAULT ''; +DROP TABLE t1; +SET GLOBAL innodb_default_row_format = @row_format; + +--echo # End of 10.3 tests + SET GLOBAL innodb_default_row_format = @row_format; -- cgit v1.2.1 From 29b2f3dbb543130a7ba71635216a8d7d34cac46e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Tue, 27 Apr 2021 08:44:28 +0300 Subject: MDEV-24545 Sequence created by one connection remains invisible to another row_merge_is_index_usable(): Allow access to any SEQUENCE, even if it was created after the read view. SQL sequences are no-rollback tables with no history at all. --- .../suite/sql_sequence/concurrent_create.result | 13 +++++++++++++ mysql-test/suite/sql_sequence/concurrent_create.test | 19 +++++++++++++++++++ 2 files changed, 32 insertions(+) (limited to 'mysql-test') diff --git a/mysql-test/suite/sql_sequence/concurrent_create.result b/mysql-test/suite/sql_sequence/concurrent_create.result index 7e68195f7e0..2473abef37d 100644 --- a/mysql-test/suite/sql_sequence/concurrent_create.result +++ b/mysql-test/suite/sql_sequence/concurrent_create.result @@ -31,3 +31,16 @@ connection con1; disconnect con1; connection default; DROP TABLE s1,s2; +CREATE TABLE t1 (a INT) ENGINE=InnoDB; +START TRANSACTION WITH CONSISTENT SNAPSHOT; +connect con1,localhost,root,,test; +CREATE SEQUENCE s1 ENGINE=InnoDB; +FLUSH TABLES; +disconnect con1; +connection default; +SELECT NEXTVAL(s1); +NEXTVAL(s1) +1 +COMMIT; +DROP TABLE t1; +DROP SEQUENCE s1; diff --git a/mysql-test/suite/sql_sequence/concurrent_create.test b/mysql-test/suite/sql_sequence/concurrent_create.test index d6a57ff7d50..b27a6d3bdb9 100644 --- a/mysql-test/suite/sql_sequence/concurrent_create.test +++ b/mysql-test/suite/sql_sequence/concurrent_create.test @@ -56,3 +56,22 @@ FLUSH TABLES; --connection default DROP TABLE s1,s2; + +# +# MDEV-24545 Sequence created by one connection remains invisible to another +# +CREATE TABLE t1 (a INT) ENGINE=InnoDB; +START TRANSACTION WITH CONSISTENT SNAPSHOT; + +--connect (con1,localhost,root,,test) +CREATE SEQUENCE s1 ENGINE=InnoDB; +FLUSH TABLES; +--disconnect con1 + +--connection default +SELECT NEXTVAL(s1); +COMMIT; + +# Cleanup +DROP TABLE t1; +DROP SEQUENCE s1; -- cgit v1.2.1