diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2022-10-06 09:22:39 +0300 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2022-10-06 09:22:39 +0300 |
commit | 6dc157f8a6a6f12fcb6877c65c23a2e7692e38fe (patch) | |
tree | a143f8592261301d3e0a42dcc33bddc3634227d9 /mysql-test | |
parent | 286acaa796cd3c7e7a8d20eba20673ae1ab70b61 (diff) | |
parent | 8d6421aa48de5f1581e0706cc65c3515954bcead (diff) | |
download | mariadb-git-6dc157f8a6a6f12fcb6877c65c23a2e7692e38fe.tar.gz |
Merge 10.5 into 10.6
Diffstat (limited to 'mysql-test')
87 files changed, 505 insertions, 28 deletions
diff --git a/mysql-test/include/ipv6.inc b/mysql-test/include/ipv6.inc index 3d8fdcfbc3c..05c65d7817a 100644 --- a/mysql-test/include/ipv6.inc +++ b/mysql-test/include/ipv6.inc @@ -22,4 +22,3 @@ eval SET PASSWORD FOR testuser1@'$IPv6' = PASSWORD ('9876'); --replace_result ::1 localhost SELECT USER(); eval DROP USER testuser1@'$IPv6'; - diff --git a/mysql-test/include/long_test.inc b/mysql-test/include/long_test.inc index d9a3b338229..765f88b8037 100644 --- a/mysql-test/include/long_test.inc +++ b/mysql-test/include/long_test.inc @@ -2,3 +2,5 @@ # We can use this to schedule such test early (to not be left with # only one or two long tests running, and rests of works idle), or to # run a quick test skipping long-running test cases. + +--source include/no_valgrind_without_big.inc diff --git a/mysql-test/include/master-slave.inc b/mysql-test/include/master-slave.inc index 9ed206b2c22..5b603fbfdb3 100644 --- a/mysql-test/include/master-slave.inc +++ b/mysql-test/include/master-slave.inc @@ -1,3 +1,5 @@ +--source include/no_valgrind_without_big.inc + # ==== Purpose ==== # # Configure two servers to be replication master and slave. diff --git a/mysql-test/main/alter_table.test b/mysql-test/main/alter_table.test index b339da5edb2..5eb6cdb0f9d 100644 --- a/mysql-test/main/alter_table.test +++ b/mysql-test/main/alter_table.test @@ -1,3 +1,4 @@ +--source include/no_valgrind_without_big.inc --source include/have_innodb.inc # # Test of alter table diff --git a/mysql-test/main/compress.test b/mysql-test/main/compress.test index 8fc21d9c961..daa133ebdc7 100644 --- a/mysql-test/main/compress.test +++ b/mysql-test/main/compress.test @@ -1,6 +1,8 @@ # Turn on compression between the client and server # and run a number of tests +# Too slow for valgrind +--source include/no_valgrind_without_big.inc # Can't test with embedded server -- source include/not_embedded.inc -- source include/have_compress.inc diff --git a/mysql-test/main/ctype_big5.test b/mysql-test/main/ctype_big5.test index 41991258886..180fa1690fa 100644 --- a/mysql-test/main/ctype_big5.test +++ b/mysql-test/main/ctype_big5.test @@ -1,3 +1,4 @@ +-- source include/no_valgrind_without_big.inc -- source include/have_big5.inc # diff --git a/mysql-test/main/ctype_gb2312.test b/mysql-test/main/ctype_gb2312.test index 07460116ade..96d60445707 100644 --- a/mysql-test/main/ctype_gb2312.test +++ b/mysql-test/main/ctype_gb2312.test @@ -1,3 +1,4 @@ +-- source include/no_valgrind_without_big.inc -- source include/have_gb2312.inc # diff --git a/mysql-test/main/ctype_gbk.test b/mysql-test/main/ctype_gbk.test index d68b78f847c..a2046012685 100644 --- a/mysql-test/main/ctype_gbk.test +++ b/mysql-test/main/ctype_gbk.test @@ -1,3 +1,4 @@ +--source include/no_valgrind_without_big.inc -- source include/have_gbk.inc # diff --git a/mysql-test/main/ctype_sjis.test b/mysql-test/main/ctype_sjis.test index ecb870242c5..13f919f0c94 100644 --- a/mysql-test/main/ctype_sjis.test +++ b/mysql-test/main/ctype_sjis.test @@ -1,3 +1,4 @@ +-- source include/no_valgrind_without_big.inc -- source include/have_sjis.inc # diff --git a/mysql-test/main/ctype_utf8.test b/mysql-test/main/ctype_utf8.test index 844e812acb3..a70d8aa5617 100644 --- a/mysql-test/main/ctype_utf8.test +++ b/mysql-test/main/ctype_utf8.test @@ -1,3 +1,4 @@ +--source include/no_valgrind_without_big.inc # # Tests with the utf8 character set # diff --git a/mysql-test/main/gis-precise.test b/mysql-test/main/gis-precise.test index da72a0c4d8a..f49b3f1a1da 100644 --- a/mysql-test/main/gis-precise.test +++ b/mysql-test/main/gis-precise.test @@ -1,5 +1,5 @@ --- source include/have_geometry.inc - +--source include/no_valgrind_without_big.inc +--source include/have_geometry.inc # # Spatial objects diff --git a/mysql-test/main/group_min_max.test b/mysql-test/main/group_min_max.test index ed65745a509..cf9952e817d 100644 --- a/mysql-test/main/group_min_max.test +++ b/mysql-test/main/group_min_max.test @@ -3,6 +3,7 @@ # The queries in this file test query execution via QUICK_GROUP_MIN_MAX_SELECT. # +--source include/no_valgrind_without_big.inc --source include/default_optimizer_switch.inc --source include/have_sequence.inc --source include/have_innodb.inc diff --git a/mysql-test/main/index_merge_innodb.test b/mysql-test/main/index_merge_innodb.test index e8ebb6b2a64..82f3c756da4 100644 --- a/mysql-test/main/index_merge_innodb.test +++ b/mysql-test/main/index_merge_innodb.test @@ -11,6 +11,7 @@ # # Slow test, don't run during staging part +--source include/long_test.inc --source include/not_staging.inc --source include/have_innodb.inc diff --git a/mysql-test/main/index_merge_myisam.test b/mysql-test/main/index_merge_myisam.test index 10ddbee36b2..0437f9138cb 100644 --- a/mysql-test/main/index_merge_myisam.test +++ b/mysql-test/main/index_merge_myisam.test @@ -9,6 +9,7 @@ # wrapper t/index_merge_innodb.test sources now several # include/index_merge*.inc files # +--source include/no_valgrind_without_big.inc SET DEFAULT_STORAGE_ENGINE = MyISAM; # MyISAM supports Merge tables diff --git a/mysql-test/main/information_schema_all_engines.test b/mysql-test/main/information_schema_all_engines.test index f8d685d2560..04537051acb 100644 --- a/mysql-test/main/information_schema_all_engines.test +++ b/mysql-test/main/information_schema_all_engines.test @@ -2,6 +2,7 @@ # information_schema_db.test whose results depends on which engines are # available (since these engines inject tables into INFORMATION_SCHEMA). +--source include/no_valgrind_without_big.inc --source include/not_embedded.inc --source include/have_innodb.inc --source include/have_perfschema.inc diff --git a/mysql-test/main/innodb_ext_key.test b/mysql-test/main/innodb_ext_key.test index f1cf6658f0b..ecaf8aa874e 100644 --- a/mysql-test/main/innodb_ext_key.test +++ b/mysql-test/main/innodb_ext_key.test @@ -1,4 +1,5 @@ --source include/innodb_prefix_index_cluster_optimization.inc +--source include/no_valgrind_without_big.inc SET SESSION DEFAULT_STORAGE_ENGINE='InnoDB'; diff --git a/mysql-test/main/join_cache.test b/mysql-test/main/join_cache.test index 4b659345db4..e31937efc1b 100644 --- a/mysql-test/main/join_cache.test +++ b/mysql-test/main/join_cache.test @@ -1,9 +1,11 @@ +--source include/no_valgrind_without_big.inc +--source include/default_optimizer_switch.inc +--source include/default_charset.inc + --disable_warnings DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11; DROP DATABASE IF EXISTS world; --enable_warnings ---source include/default_optimizer_switch.inc ---source include/default_charset.inc set @org_optimizer_switch=@@optimizer_switch; set @save_join_cache_level=@@join_cache_level; diff --git a/mysql-test/main/log_slow.test b/mysql-test/main/log_slow.test index 64fd8202985..b51777d859e 100644 --- a/mysql-test/main/log_slow.test +++ b/mysql-test/main/log_slow.test @@ -1,3 +1,5 @@ +--source include/no_valgrind_without_big.inc + # # Testing of slow log query options # diff --git a/mysql-test/main/mysql_client_test_comp.test b/mysql-test/main/mysql_client_test_comp.test index f8bd80fc48a..36a12b6691e 100644 --- a/mysql-test/main/mysql_client_test_comp.test +++ b/mysql-test/main/mysql_client_test_comp.test @@ -3,6 +3,7 @@ # No need to run this with embedded server --source include/not_embedded.inc --source include/check_ipv6.inc +--source include/no_valgrind_without_big.inc # need to have the dynamic loading turned on for the client plugin tests --source include/have_plugin_auth.inc diff --git a/mysql-test/main/mysql_upgrade.test b/mysql-test/main/mysql_upgrade.test index 3254b8d2d91..1fe884b16c9 100644 --- a/mysql-test/main/mysql_upgrade.test +++ b/mysql-test/main/mysql_upgrade.test @@ -2,6 +2,7 @@ -- source include/have_working_dns.inc -- source include/have_innodb.inc -- source include/have_partition.inc +-- source include/no_valgrind_without_big.inc set sql_mode=""; diff --git a/mysql-test/main/mysqldump.test b/mysql-test/main/mysqldump.test index b7031e535a9..5dd78634b53 100644 --- a/mysql-test/main/mysqldump.test +++ b/mysql-test/main/mysqldump.test @@ -1,3 +1,4 @@ +--source include/no_valgrind_without_big.inc --source include/have_utf8mb4.inc call mtr.add_suppression("@003f.frm' \\(errno: 22\\)"); diff --git a/mysql-test/main/order_by.test b/mysql-test/main/order_by.test index cf1e8cbd0dd..b2f26f5a5e8 100644 --- a/mysql-test/main/order_by.test +++ b/mysql-test/main/order_by.test @@ -1,3 +1,4 @@ +--source include/no_valgrind_without_big.inc # # Testing ORDER BY # diff --git a/mysql-test/main/plugin_auth.test b/mysql-test/main/plugin_auth.test index 30e4fa6e0ad..6912462066c 100644 --- a/mysql-test/main/plugin_auth.test +++ b/mysql-test/main/plugin_auth.test @@ -2,6 +2,7 @@ --source include/not_embedded.inc --source include/mysql_upgrade_preparation.inc --source include/have_innodb.inc +--source include/no_valgrind_without_big.inc SET GLOBAL SQL_MODE=""; SET LOCAL SQL_MODE=""; diff --git a/mysql-test/main/pool_of_threads.test b/mysql-test/main/pool_of_threads.test index 3d581d4605d..e9f083b2f8f 100644 --- a/mysql-test/main/pool_of_threads.test +++ b/mysql-test/main/pool_of_threads.test @@ -4,10 +4,11 @@ -- source include/have_pool_of_threads.inc -- source include/default_optimizer_switch.inc -SET optimizer_switch='outer_join_with_cache=off'; # Slow test, don't run during staging part -- source include/not_staging.inc -- source include/long_test.inc + +SET optimizer_switch='outer_join_with_cache=off'; -- source include/common-tests.inc SET optimizer_switch=default; diff --git a/mysql-test/main/query_cache.test b/mysql-test/main/query_cache.test index f8152945396..559d2a8e810 100644 --- a/mysql-test/main/query_cache.test +++ b/mysql-test/main/query_cache.test @@ -1,5 +1,6 @@ -- source include/have_query_cache.inc -- source include/long_test.inc +-- source include/no_valgrind_without_big.inc set @save_query_cache_size=@@query_cache_size; # diff --git a/mysql-test/main/query_cache_debug.test b/mysql-test/main/query_cache_debug.test index af82927245b..056396984d9 100644 --- a/mysql-test/main/query_cache_debug.test +++ b/mysql-test/main/query_cache_debug.test @@ -2,6 +2,7 @@ --source include/have_query_cache.inc --source include/have_debug_sync.inc --source include/long_test.inc +--source include/no_valgrind_without_big.inc set global query_cache_type= ON; set @save_query_cache_size=@@global.query_cache_size; diff --git a/mysql-test/main/range.test b/mysql-test/main/range.test index a785726cb22..0de13797da0 100644 --- a/mysql-test/main/range.test +++ b/mysql-test/main/range.test @@ -1,3 +1,4 @@ +--source include/no_valgrind_without_big.inc # # Problem with range optimizer # diff --git a/mysql-test/main/range_innodb.test b/mysql-test/main/range_innodb.test index df0fff403a8..b6dea2fbe06 100644 --- a/mysql-test/main/range_innodb.test +++ b/mysql-test/main/range_innodb.test @@ -4,6 +4,7 @@ --source include/have_innodb.inc --source include/have_debug.inc +--source include/no_valgrind_without_big.inc --disable_warnings drop table if exists t0, t1, t2; diff --git a/mysql-test/main/range_vs_index_merge.test b/mysql-test/main/range_vs_index_merge.test index 670762bcb2f..bafd1603457 100644 --- a/mysql-test/main/range_vs_index_merge.test +++ b/mysql-test/main/range_vs_index_merge.test @@ -1,3 +1,4 @@ +--source include/no_valgrind_without_big.inc --source include/default_optimizer_switch.inc --source include/default_charset.inc --source include/have_sequence.inc diff --git a/mysql-test/main/rowid_filter_innodb.test b/mysql-test/main/rowid_filter_innodb.test index 97b9aa0102c..1112d7b69c6 100644 --- a/mysql-test/main/rowid_filter_innodb.test +++ b/mysql-test/main/rowid_filter_innodb.test @@ -1,3 +1,4 @@ +--source include/no_valgrind_without_big.inc --source include/have_innodb.inc SET SESSION DEFAULT_STORAGE_ENGINE='InnoDB'; diff --git a/mysql-test/main/rowid_filter_innodb_debug.test b/mysql-test/main/rowid_filter_innodb_debug.test index eb43edd9e9e..31fbd937304 100644 --- a/mysql-test/main/rowid_filter_innodb_debug.test +++ b/mysql-test/main/rowid_filter_innodb_debug.test @@ -1,4 +1,5 @@ --source include/have_innodb.inc +--source include/no_valgrind_without_big.inc set default_storage_engine=innodb; --source include/rowid_filter_debug_kill.inc diff --git a/mysql-test/main/select.test b/mysql-test/main/select.test index fa1cd2d8f26..b9cfb169537 100644 --- a/mysql-test/main/select.test +++ b/mysql-test/main/select.test @@ -2,6 +2,8 @@ # Find string "NOTE NOTE NOTE" in order to find some 'unsure' tests # +--source include/no_valgrind_without_big.inc + # # Simple select test # diff --git a/mysql-test/main/selectivity.test b/mysql-test/main/selectivity.test index 1d96dc0bf80..ba0af502720 100644 --- a/mysql-test/main/selectivity.test +++ b/mysql-test/main/selectivity.test @@ -1,3 +1,4 @@ +--source include/no_valgrind_without_big.inc --source include/have_stat_tables.inc --source include/have_sequence.inc --source include/default_charset.inc diff --git a/mysql-test/main/sp.test b/mysql-test/main/sp.test index fd076ee9efe..5713f22defa 100644 --- a/mysql-test/main/sp.test +++ b/mysql-test/main/sp.test @@ -1,3 +1,4 @@ +--source include/no_valgrind_without_big.inc --source include/have_partition.inc --source include/have_sequence.inc diff --git a/mysql-test/main/ssl-big.test b/mysql-test/main/ssl-big.test index fa35146e627..46076e03e70 100644 --- a/mysql-test/main/ssl-big.test +++ b/mysql-test/main/ssl-big.test @@ -6,6 +6,7 @@ -- source include/have_64bit.inc # No point in running with valgrind as it takes 1.5 hours -- source include/not_valgrind.inc +# This test often times out with MemorySanitizer. -- source include/not_msan.inc # Save the initial number of concurrent sessions diff --git a/mysql-test/main/ssl.test b/mysql-test/main/ssl.test index 82ada27ffd4..d3830bb7007 100644 --- a/mysql-test/main/ssl.test +++ b/mysql-test/main/ssl.test @@ -1,3 +1,4 @@ +--source include/no_valgrind_without_big.inc # Turn on ssl between the client and server # and run a number of tests diff --git a/mysql-test/main/stat_tables_disabled.test b/mysql-test/main/stat_tables_disabled.test index e6b965afe34..27b99d0dfdf 100644 --- a/mysql-test/main/stat_tables_disabled.test +++ b/mysql-test/main/stat_tables_disabled.test @@ -4,7 +4,9 @@ set @innodb_stats_persistent_sample_pages_save= set global innodb_stats_persistent= 1; set global innodb_stats_persistent_sample_pages=100; + --source include/have_innodb.inc +--source include/no_valgrind_without_big.inc SET SESSION DEFAULT_STORAGE_ENGINE='InnoDB'; diff --git a/mysql-test/main/stat_tables_innodb.test b/mysql-test/main/stat_tables_innodb.test index f439ec52315..fd8dc6bf3c5 100644 --- a/mysql-test/main/stat_tables_innodb.test +++ b/mysql-test/main/stat_tables_innodb.test @@ -1,3 +1,4 @@ +--source include/no_valgrind_without_big.inc --source include/have_innodb.inc --source include/have_sequence.inc diff --git a/mysql-test/main/stat_tables_par_innodb.test b/mysql-test/main/stat_tables_par_innodb.test index 79ab23dcc3f..024814933c6 100644 --- a/mysql-test/main/stat_tables_par_innodb.test +++ b/mysql-test/main/stat_tables_par_innodb.test @@ -1,6 +1,7 @@ # Note that this test requires a fresh restart to not have problems with the # old status values +--source include/no_valgrind_without_big.inc --source include/have_stat_tables.inc --source include/have_debug_sync.inc --source include/not_embedded.inc diff --git a/mysql-test/main/statistics.test b/mysql-test/main/statistics.test index 1f99aaa33e5..a81de1662f0 100644 --- a/mysql-test/main/statistics.test +++ b/mysql-test/main/statistics.test @@ -1,3 +1,4 @@ +--source include/no_valgrind_without_big.inc --source include/have_stat_tables.inc --source include/have_innodb.inc --disable_warnings diff --git a/mysql-test/main/subselect_innodb.test b/mysql-test/main/subselect_innodb.test index 493a7425ea8..b1916b9ec59 100644 --- a/mysql-test/main/subselect_innodb.test +++ b/mysql-test/main/subselect_innodb.test @@ -1,3 +1,4 @@ +-- source include/no_valgrind_without_big.inc -- source include/have_innodb.inc # Note: the tests uses only non-semijoin subqueries so semi-join switch diff --git a/mysql-test/main/subselect_sj.test b/mysql-test/main/subselect_sj.test index c869f56c837..e4d02ed666c 100644 --- a/mysql-test/main/subselect_sj.test +++ b/mysql-test/main/subselect_sj.test @@ -1,3 +1,4 @@ +--source include/no_valgrind_without_big.inc # # Nested Loops semi-join subquery evaluation tests # diff --git a/mysql-test/main/subselect_sj_jcl6.test b/mysql-test/main/subselect_sj_jcl6.test index 179c1aa029b..f4f605c0406 100644 --- a/mysql-test/main/subselect_sj_jcl6.test +++ b/mysql-test/main/subselect_sj_jcl6.test @@ -1,6 +1,7 @@ # # Run subselect_sj.test with BKA enabled # +--source include/no_valgrind_without_big.inc --source include/default_optimizer_switch.inc set @save_optimizer_switch_jcl6=@@optimizer_switch; diff --git a/mysql-test/main/trigger.test b/mysql-test/main/trigger.test index 32827975e14..16d117e7342 100644 --- a/mysql-test/main/trigger.test +++ b/mysql-test/main/trigger.test @@ -1,6 +1,7 @@ # This test uses chmod, can't be run with root permissions -- source include/not_as_root.inc ---source include/default_charset.inc +-- source include/no_valgrind_without_big.inc +-- source include/default_charset.inc # # Basic triggers test diff --git a/mysql-test/main/update_use_source.test b/mysql-test/main/update_use_source.test index d446bd512dd..1b765138a18 100644 --- a/mysql-test/main/update_use_source.test +++ b/mysql-test/main/update_use_source.test @@ -1,5 +1,6 @@ --source include/have_sequence.inc --source include/have_innodb.inc +--source include/no_valgrind_without_big.inc create table t1 (old_c1 integer, old_c2 integer,c1 integer, c2 integer, c3 integer) engine=InnoDB STATS_PERSISTENT=0; create view v1 as select * from t1 where c2=2; diff --git a/mysql-test/main/win.test b/mysql-test/main/win.test index d5fdd1e79f0..65801901e47 100644 --- a/mysql-test/main/win.test +++ b/mysql-test/main/win.test @@ -1,6 +1,7 @@ # # Window Functions Tests # +--source include/no_valgrind_without_big.inc --source include/have_sequence.inc --disable_warnings diff --git a/mysql-test/main/win_big-mdev-11697.test b/mysql-test/main/win_big-mdev-11697.test index 9488a938554..9016d0d5e0b 100644 --- a/mysql-test/main/win_big-mdev-11697.test +++ b/mysql-test/main/win_big-mdev-11697.test @@ -1,3 +1,5 @@ +--source include/no_valgrind_without_big.inc + set max_recursive_iterations=200000; create table test_table (id int, random_data varchar(36), static_int int, static_varchar varchar(10)); diff --git a/mysql-test/std_data/wsrep_notify.sh b/mysql-test/std_data/wsrep_notify.sh index 48edad4306f..5050ff9bc3e 100755 --- a/mysql-test/std_data/wsrep_notify.sh +++ b/mysql-test/std_data/wsrep_notify.sh @@ -4,11 +4,31 @@ # It will create 'wsrep' schema and two tables in it: 'membeship' and 'status' # and fill them on every membership or node status change. # -# Edit parameters below to specify the address and login to server. - +# Edit parameters below to specify the address and login to server: +# USER=root +PSWD= +# +# If these parameters are not set, then the values +# passed by the server are taken: +# HOST=127.0.0.1 PORT=$NODE_MYPORT_1 +# +# Edit parameters below to specify SSL parameters: +# +ssl_key= +ssl_cert= +ssl_ca= +ssl_capath= +ssl_cipher= +ssl_crl= +ssl_crlpath= +ssl_verify_server_cert=0 +# +# Client executable path: +# +CLIENT="$EXE_MYSQL" SCHEMA="mtr_wsrep_notify" MEMB_TABLE="$SCHEMA.membership" @@ -19,7 +39,7 @@ SET wsrep_on=0; CREATE SCHEMA IF NOT EXISTS $SCHEMA; CREATE TABLE IF NOT EXISTS $MEMB_TABLE ( idx INT, - uuid CHAR(40), /* node UUID */ + uuid CHAR(40), /* node UUID */ name VARCHAR(32), /* node name */ addr VARCHAR(256) /* node address */ ) ENGINE=MEMORY; @@ -40,7 +60,7 @@ configuration_change() local idx=0 - for NODE in $(echo $MEMBERS | sed s/,/\ /g) + for NODE in $(echo "$MEMBERS" | sed s/,/\ /g) do echo "INSERT INTO $MEMB_TABLE VALUES ( $idx, " # Don't forget to properly quote string values @@ -59,17 +79,44 @@ status_update() echo "$BEGIN; UPDATE $STATUS_TABLE SET status='$STATUS'; $END;" } +trim_string() +{ + if [ -n "${BASH_VERSION:-}" ]; then + local pattern="[![:space:]${2:-}]" + local x="${1#*$pattern}" + local z=${#1} + x=${#x} + if [ $x -ne $z ]; then + local y="${1%$pattern*}" + y=${#y} + x=$(( z-x-1 )) + y=$(( y-x+1 )) + printf '%s' "${1:$x:$y}" + else + printf '' + fi + else + local pattern="[[:space:]${2:-}]" + echo "$1" | sed -E "s/^$pattern+|$pattern+\$//g" + fi +} + COM=status_update # not a configuration change by default -while [ $# -gt 0 ] -do +STATUS="" +CLUSTER_UUID="" +PRIMARY="0" +INDEX="" +MEMBERS="" + +while [ $# -gt 0 ]; do case $1 in --status) - STATUS=$2 + STATUS=$(trim_string "$2") shift ;; --uuid) - CLUSTER_UUID=$2 + CLUSTER_UUID=$(trim_string "$2") shift ;; --primary) @@ -78,22 +125,75 @@ do shift ;; --index) - INDEX=$2 + INDEX=$(trim_string "$2") shift ;; --members) - MEMBERS=$2 + MEMBERS=$(trim_string "$2") shift ;; esac shift done +USER=$(trim_string "$USER") +PSWD=$(trim_string "$PSWD") + +HOST=$(trim_string "$HOST") +PORT=$(trim_string "$PORT") + +case "$HOST" in +\[*) + HOST="${HOST##\[}" + HOST=$(trim_string "${HOST%%\]}") + ;; +esac + +if [ -z "$HOST" ]; then + HOST="${NOTIFY_HOST:-}" +fi +if [ -z "$PORT" ]; then + PORT="${NOTIFY_PORT:-}" +fi + +ssl_key=$(trim_string "$ssl_key"); +ssl_cert=$(trim_string "$ssl_cert"); +ssl_ca=$(trim_string "$ssl_ca"); +ssl_capath=$(trim_string "$ssl_capath"); +ssl_cipher=$(trim_string "$ssl_cipher"); +ssl_crl=$(trim_string "$ssl_crl"); +ssl_crlpath=$(trim_string "$ssl_crlpath"); +ssl_verify_server_cert=$(trim_string "$ssl_verify_server_cert"); + +SSL_PARAM="" + +if [ -n "$ssl_key" -o -n "$ssl_cert" -o \ + -n "$ssl_ca" -o -n "$ssl_capath" -o \ + -n "$ssl_cipher" ] +then + SSL_PARAM=' --ssl' + [ -n "$ssl_key" ] && SSL_PARAM="$SSL_PARAM --ssl-key='$ssl_key'" + [ -n "$ssl_cert" ] && SSL_PARAM="$SSL_PARAM --ssl-cert='$ssl_cert'" + [ -n "$ssl_ca" ] && SSL_PARAM="$SSL_PARAM --ssl-ca='$ssl_ca'" + [ -n "$ssl_capath" ] && SSL_PARAM="$SSL_PARAM --ssl-capath='$ssl_capath'" + [ -n "$ssl_cipher" ] && SSL_PARAM="$SSL_PARAM --ssl-cipher='$ssl_cipher'" + [ -n "$ssl_crl" ] && SSL_PARAM="$SSL_PARAM --ssl-crl='$ssl_crl'" + [ -n "$ssl_crlpath" ] && SSL_PARAM="$SSL_PARAM --ssl-crlpath='$ssl_crlpath'" + if [ -n "$ssl_verify_server_cert" ]; then + if [ $ssl_verify_server_cert -ne 0 ]; then + SSL_PARAM+=' --ssl-verify-server-cert' + fi + fi +fi + case $STATUS in "joined" | "donor" | "synced") - $COM | mysql -B -u$USER -h$HOST -P$PORT + "$COM" | eval "$CLIENT" -B "-u'$USER'"${PSWD:+" -p'$PSWD'"}\ + "-h'$HOST'" "-P$PORT"$SSL_PARAM ;; - *) - exit 0 + *) + # The node might be shutting down ;; esac + +exit 0 diff --git a/mysql-test/std_data/wsrep_notify_ssl.sh b/mysql-test/std_data/wsrep_notify_ssl.sh new file mode 100755 index 00000000000..0e416a2f448 --- /dev/null +++ b/mysql-test/std_data/wsrep_notify_ssl.sh @@ -0,0 +1,195 @@ +#!/bin/sh -eu + +# This is a simple example of wsrep notification script (wsrep_notify_cmd). +# It will create 'wsrep' schema and two tables in it: 'membeship' and 'status' +# and fill them on every membership or node status change. +# +# Edit parameters below to specify the address and login to server: +# +USER=root +PSWD= +# +# If these parameters are not set, then the values +# passed by the server are taken: +# +HOST=127.0.0.1 +PORT=$NODE_MYPORT_1 +# +# Edit parameters below to specify SSL parameters: +# +ssl_cert="$MYSQL_TEST_DIR/std_data/client-cert.pem" +ssl_key="$MYSQL_TEST_DIR/std_data/client-key.pem" +ssl_ca="$MYSQL_TEST_DIR/std_data/cacert.pem" +ssl_capath= +ssl_cipher= +ssl_crl= +ssl_crlpath= +ssl_verify_server_cert=0 +# +# Client executable path: +# +CLIENT="$EXE_MYSQL" + +SCHEMA="mtr_wsrep_notify" +MEMB_TABLE="$SCHEMA.membership" +STATUS_TABLE="$SCHEMA.status" + +BEGIN=" +SET wsrep_on=0; +CREATE SCHEMA IF NOT EXISTS $SCHEMA; +CREATE TABLE IF NOT EXISTS $MEMB_TABLE ( + idx INT, + uuid CHAR(40), /* node UUID */ + name VARCHAR(32), /* node name */ + addr VARCHAR(256) /* node address */ +) ENGINE=MEMORY; +CREATE TABLE IF NOT EXISTS $STATUS_TABLE ( + size INT, /* component size */ + idx INT, /* this node index */ + status CHAR(16), /* this node status */ + uuid CHAR(40), /* cluster UUID */ + prim BOOLEAN /* if component is primary */ +) ENGINE=MEMORY; +BEGIN; +" +END="COMMIT;" + +configuration_change() +{ + echo "$BEGIN;" + + local idx=0 + + for NODE in $(echo "$MEMBERS" | sed s/,/\ /g) + do + echo "INSERT INTO $MEMB_TABLE VALUES ( $idx, " + # Don't forget to properly quote string values + echo "'$NODE'" | sed s/\\//\',\'/g + echo ");" + idx=$(( $idx + 1 )) + done + + echo "INSERT INTO $STATUS_TABLE VALUES($idx, $INDEX, '$STATUS', '$CLUSTER_UUID', $PRIMARY);" + + echo "$END" +} + +status_update() +{ + echo "SET wsrep_on=0; BEGIN; UPDATE $STATUS_TABLE SET status='$STATUS'; COMMIT;" +} + +trim_string() +{ + if [ -n "${BASH_VERSION:-}" ]; then + local pattern="[![:space:]${2:-}]" + local x="${1#*$pattern}" + local z=${#1} + x=${#x} + if [ $x -ne $z ]; then + local y="${1%$pattern*}" + y=${#y} + x=$(( z-x-1 )) + y=$(( y-x+1 )) + printf '%s' "${1:$x:$y}" + else + printf '' + fi + else + local pattern="[[:space:]${2:-}]" + echo "$1" | sed -E "s/^$pattern+|$pattern+\$//g" + fi +} + +COM=status_update # not a configuration change by default + +STATUS="" +CLUSTER_UUID="" +PRIMARY="0" +INDEX="" +MEMBERS="" + +while [ $# -gt 0 ]; do + case $1 in + --status) + STATUS=$(trim_string "$2") + shift + ;; + --uuid) + CLUSTER_UUID=$(trim_string "$2") + shift + ;; + --primary) + [ "$2" = "yes" ] && PRIMARY="1" || PRIMARY="0" + COM=configuration_change + shift + ;; + --index) + INDEX=$(trim_string "$2") + shift + ;; + --members) + MEMBERS=$(trim_string "$2") + shift + ;; + esac + shift +done + +USER=$(trim_string "$USER") +PSWD=$(trim_string "$PSWD") + +HOST=$(trim_string "$HOST") +PORT=$(trim_string "$PORT") + +case "$HOST" in +\[*) + HOST="${HOST##\[}" + HOST=$(trim_string "${HOST%%\]}") + ;; +esac + +if [ -z "$HOST" ]; then + HOST="${NOTIFY_HOST:-}" +fi +if [ -z "$PORT" ]; then + PORT="${NOTIFY_PORT:-}" +fi + +ssl_key=$(trim_string "$ssl_key"); +ssl_cert=$(trim_string "$ssl_cert"); +ssl_ca=$(trim_string "$ssl_ca"); +ssl_capath=$(trim_string "$ssl_capath"); +ssl_cipher=$(trim_string "$ssl_cipher"); +ssl_crl=$(trim_string "$ssl_crl"); +ssl_crlpath=$(trim_string "$ssl_crlpath"); +ssl_verify_server_cert=$(trim_string "$ssl_verify_server_cert"); + +SSL_PARAM="" + +if [ -n "$ssl_key" -o -n "$ssl_cert" -o \ + -n "$ssl_ca" -o -n "$ssl_capath" -o \ + -n "$ssl_cipher" ] +then + SSL_PARAM=' --ssl' + [ -n "$ssl_key" ] && SSL_PARAM="$SSL_PARAM --ssl-key='$ssl_key'" + [ -n "$ssl_cert" ] && SSL_PARAM="$SSL_PARAM --ssl-cert='$ssl_cert'" + [ -n "$ssl_ca" ] && SSL_PARAM="$SSL_PARAM --ssl-ca='$ssl_ca'" + [ -n "$ssl_capath" ] && SSL_PARAM="$SSL_PARAM --ssl-capath='$ssl_capath'" + [ -n "$ssl_cipher" ] && SSL_PARAM="$SSL_PARAM --ssl-cipher='$ssl_cipher'" + [ -n "$ssl_crl" ] && SSL_PARAM="$SSL_PARAM --ssl-crl='$ssl_crl'" + [ -n "$ssl_crlpath" ] && SSL_PARAM="$SSL_PARAM --ssl-crlpath='$ssl_crlpath'" + if [ -n "$ssl_verify_server_cert" ]; then + if [ $ssl_verify_server_cert -ne 0 ]; then + SSL_PARAM+=' --ssl-verify-server-cert' + fi + fi +fi + +# Undefined means node is shutting down +if [ "$STATUS" != 'Undefined' ]; then + "$COM" | eval "$CLIENT" -B "-u'$USER'"${PSWD:+" -p'$PSWD'"}\ + "-h'$HOST'" "-P$PORT"$SSL_PARAM +fi + +exit 0 diff --git a/mysql-test/suite/federated/federatedx_create_handlers.test b/mysql-test/suite/federated/federatedx_create_handlers.test index 4b5789e1d96..8863a057b47 100644 --- a/mysql-test/suite/federated/federatedx_create_handlers.test +++ b/mysql-test/suite/federated/federatedx_create_handlers.test @@ -1,5 +1,6 @@ --source have_federatedx.inc --source include/federated.inc +--source include/no_valgrind_without_big.inc connection default; diff --git a/mysql-test/suite/galera/disabled.def b/mysql-test/suite/galera/disabled.def index 34da18a9c22..77c2bb9659d 100644 --- a/mysql-test/suite/galera/disabled.def +++ b/mysql-test/suite/galera/disabled.def @@ -29,6 +29,7 @@ galera_var_dirty_reads : MDEV-25615 Galera test failure on galera_var_dirty_read galera_var_ignore_apply_errors : MDEV-26770 galera_var_ignore_apply_errors fails Server did not transition to READY state galera_var_node_address : MDEV-20485 Galera test failure galera_var_notify_cmd : MDEV-21905 Galera test galera_var_notify_cmd causes hang +galera_var_notify_ssl_ipv6 : hangs after the merge of MDEV-27682 galera_var_retry_autocommit: MDEV-18181 Galera test failure on galera.galera_var_retry_autocommit galera_wsrep_provider_unset_set: wsrep_provider is read-only for security reasons partition : MDEV-19958 Galera test failure on galera.partition diff --git a/mysql-test/suite/galera/r/galera_var_notify_ssl_ipv6.result b/mysql-test/suite/galera/r/galera_var_notify_ssl_ipv6.result new file mode 100644 index 00000000000..823407fbba7 --- /dev/null +++ b/mysql-test/suite/galera/r/galera_var_notify_ssl_ipv6.result @@ -0,0 +1,11 @@ +connection node_1; +SELECT COUNT(DISTINCT uuid) AS EXPECT_2 FROM mtr_wsrep_notify.membership; +EXPECT_2 +2 +SELECT MAX(size) AS EXPECT_2 FROM mtr_wsrep_notify.status; +EXPECT_2 +2 +SELECT COUNT(DISTINCT idx) AS EXPECT_2 FROM mtr_wsrep_notify.status; +EXPECT_2 +2 +DROP SCHEMA mtr_wsrep_notify; diff --git a/mysql-test/suite/galera/t/galera_var_notify_ssl_ipv6-master.opt b/mysql-test/suite/galera/t/galera_var_notify_ssl_ipv6-master.opt new file mode 100644 index 00000000000..99c5889916b --- /dev/null +++ b/mysql-test/suite/galera/t/galera_var_notify_ssl_ipv6-master.opt @@ -0,0 +1 @@ +--wsrep_notify_cmd=$MYSQL_TEST_DIR/std_data/wsrep_notify_ssl.sh --wsrep-sync-wait=0 diff --git a/mysql-test/suite/galera/t/galera_var_notify_ssl_ipv6.cnf b/mysql-test/suite/galera/t/galera_var_notify_ssl_ipv6.cnf new file mode 100644 index 00000000000..ce121d20e03 --- /dev/null +++ b/mysql-test/suite/galera/t/galera_var_notify_ssl_ipv6.cnf @@ -0,0 +1,20 @@ +!include ../galera_2nodes.cnf + +[mysqld] +ssl-cert=@ENV.MYSQL_TEST_DIR/std_data/server-cert.pem +ssl-key=@ENV.MYSQL_TEST_DIR/std_data/server-key.pem +ssl-ca=@ENV.MYSQL_TEST_DIR/std_data/cacert.pem +bind-address=:: + +[mysqld.1] +wsrep_provider_options='base_port=@mysqld.1.#galera_port;gmcast.listen_addr=tcp://[::]:@mysqld.1.#galera_port;ist.recv_addr=[::1]:@mysqld.1.#ist_port;gcache.size=1;pc.ignore_sb=true' +wsrep_node_incoming_address='[::1]:@mysqld.1.port' +wsrep_node_address=::1 +wsrep_sst_receive_address='[::1]:@mysqld.1.#sst_port' + +[mysqld.2] +wsrep_cluster_address='gcomm://[::1]:@mysqld.1.#galera_port' +wsrep_provider_options='base_port=@mysqld.2.#galera_port;gmcast.listen_addr=tcp://[::]:@mysqld.2.#galera_port;ist.recv_addr=[::1]:@mysqld.2.#ist_port;gcache.size=1;pc.ignore_sb=true' +wsrep_node_address=::1 +wsrep_node_incoming_address='[::1]:@mysqld.2.port' +wsrep_sst_receive_address='[::1]:@mysqld.2.#sst_port' diff --git a/mysql-test/suite/galera/t/galera_var_notify_ssl_ipv6.test b/mysql-test/suite/galera/t/galera_var_notify_ssl_ipv6.test new file mode 100644 index 00000000000..2c2b106c2ae --- /dev/null +++ b/mysql-test/suite/galera/t/galera_var_notify_ssl_ipv6.test @@ -0,0 +1,20 @@ +# +# Test wsrep_notify_cmd. We use a version of the support-files/wsrep_notify.sh script that writes +# notifications into a table. +# + +--source include/galera_cluster.inc +--source include/have_ssl_communication.inc +--source include/check_ipv6.inc +--source include/force_restart.inc + +--connection node_1 +--let $wait_condition = SELECT COUNT(DISTINCT uuid) = 2 FROM mtr_wsrep_notify.membership; +--source include/wait_condition.inc + +SELECT COUNT(DISTINCT uuid) AS EXPECT_2 FROM mtr_wsrep_notify.membership; +SELECT MAX(size) AS EXPECT_2 FROM mtr_wsrep_notify.status; +SELECT COUNT(DISTINCT idx) AS EXPECT_2 FROM mtr_wsrep_notify.status; + +# CLEANUP +DROP SCHEMA mtr_wsrep_notify; diff --git a/mysql-test/suite/gcol/r/innodb_virtual_debug_purge.result b/mysql-test/suite/gcol/r/innodb_virtual_debug_purge.result index 7835f42b552..3f3b2db8f32 100644 --- a/mysql-test/suite/gcol/r/innodb_virtual_debug_purge.result +++ b/mysql-test/suite/gcol/r/innodb_virtual_debug_purge.result @@ -150,10 +150,7 @@ lock table t write; connection prevent_purge; commit; connection default; -InnoDB 0 transactions not purged disconnect lock_table; -start transaction with consistent snapshot; -commit; InnoDB 0 transactions not purged set global debug_dbug=@old_dbug; drop table t; diff --git a/mysql-test/suite/gcol/t/innodb_virtual_debug_purge.test b/mysql-test/suite/gcol/t/innodb_virtual_debug_purge.test index 2f1f8b29aba..d9b764a75a7 100644 --- a/mysql-test/suite/gcol/t/innodb_virtual_debug_purge.test +++ b/mysql-test/suite/gcol/t/innodb_virtual_debug_purge.test @@ -191,10 +191,7 @@ lock table t write; connection prevent_purge; commit; connection default; ---source ../../innodb/include/wait_all_purged.inc disconnect lock_table; -start transaction with consistent snapshot; -commit; --source ../../innodb/include/wait_all_purged.inc set global debug_dbug=@old_dbug; drop table t; diff --git a/mysql-test/suite/innodb/r/purge_secondary.result b/mysql-test/suite/innodb/r/purge_secondary.result index a583e46418d..6c0612c7cfe 100644 --- a/mysql-test/suite/innodb/r/purge_secondary.result +++ b/mysql-test/suite/innodb/r/purge_secondary.result @@ -154,4 +154,19 @@ WHERE LOWER(variable_name) LIKE 'INNODB_BUFFER_POOL_PAGES_FLUSHED'; # FLUSH TABLES t1 FOR EXPORT; # UNLOCK TABLES; DROP TABLE t1; +# +# MDEV-29666 InnoDB fails to purge secondary index records +# when indexed virtual columns exist +# +CREATE TABLE t1 (a INT, b INT, a1 INT AS(a) VIRTUAL, +INDEX(a1),INDEX(b)) ENGINE=InnoDB; +INSERT INTO t1 SET a=1, b=1; +UPDATE t1 SET a=2, b=3; +InnoDB 0 transactions not purged +FLUSH TABLE t1 FOR EXPORT; +page 4: N_RECS=0x0001 +page 5: N_RECS=0x0001 +UNLOCK TABLES; +DROP TABLE t1; +# End of 10.3 tests SET GLOBAL innodb_purge_rseg_truncate_frequency = @saved_frequency; diff --git a/mysql-test/suite/innodb/t/alter_large_dml.test b/mysql-test/suite/innodb/t/alter_large_dml.test index d8b288e5a9f..7320fa008af 100644 --- a/mysql-test/suite/innodb/t/alter_large_dml.test +++ b/mysql-test/suite/innodb/t/alter_large_dml.test @@ -5,6 +5,8 @@ --source include/have_debug.inc --source include/have_debug_sync.inc --source include/have_sequence.inc +# This test often times out with MemorySanitizer. +--source include/not_msan.inc CREATE TABLE t1(f1 char(200), f2 char(200), f3 char(200), f4 char(200), f5 char(200), f6 char(200), diff --git a/mysql-test/suite/innodb/t/alter_missing_tablespace.test b/mysql-test/suite/innodb/t/alter_missing_tablespace.test index bf7111509bd..bac1b1dcdcf 100644 --- a/mysql-test/suite/innodb/t/alter_missing_tablespace.test +++ b/mysql-test/suite/innodb/t/alter_missing_tablespace.test @@ -1,5 +1,6 @@ --source include/not_embedded.inc --source include/innodb_page_size.inc +--source include/no_valgrind_without_big.inc --echo # --echo # Bug#13955083 ALLOW IN-PLACE DDL OPERATIONS ON MISSING diff --git a/mysql-test/suite/innodb/t/autoinc_persist.test b/mysql-test/suite/innodb/t/autoinc_persist.test index 6e094b40e02..a2832bd5187 100644 --- a/mysql-test/suite/innodb/t/autoinc_persist.test +++ b/mysql-test/suite/innodb/t/autoinc_persist.test @@ -1,6 +1,7 @@ --source include/have_innodb.inc # Restarting is not supported when testing the embedded server. --source include/not_embedded.inc +--source include/no_valgrind_without_big.inc --echo # --echo # MDEV-6076 Persistent AUTO_INCREMENT for InnoDB diff --git a/mysql-test/suite/innodb/t/ibuf_not_empty.test b/mysql-test/suite/innodb/t/ibuf_not_empty.test index 96ceb81ac00..207427d9ab8 100644 --- a/mysql-test/suite/innodb/t/ibuf_not_empty.test +++ b/mysql-test/suite/innodb/t/ibuf_not_empty.test @@ -1,4 +1,5 @@ --source include/have_innodb.inc +--source include/no_valgrind_without_big.inc # innodb_change_buffering_debug option is debug only --source include/have_debug.inc # Embedded server tests do not support restarting diff --git a/mysql-test/suite/innodb/t/innodb-get-fk.test b/mysql-test/suite/innodb/t/innodb-get-fk.test index 47db92a0c6d..b4b170b89f9 100644 --- a/mysql-test/suite/innodb/t/innodb-get-fk.test +++ b/mysql-test/suite/innodb/t/innodb-get-fk.test @@ -2,6 +2,8 @@ --source include/default_charset.inc # need to restart server --source include/not_embedded.inc +--source include/no_valgrind_without_big.inc + CREATE SCHEMA `repro`; CREATE TABLE `repro`.`crew` ( diff --git a/mysql-test/suite/innodb/t/innodb-stats-initialize-failure.test b/mysql-test/suite/innodb/t/innodb-stats-initialize-failure.test index d5d04190b8a..ba37e82057f 100644 --- a/mysql-test/suite/innodb/t/innodb-stats-initialize-failure.test +++ b/mysql-test/suite/innodb/t/innodb-stats-initialize-failure.test @@ -1,5 +1,6 @@ # MDEV-6424: Mariadb server crashes with assertion failure in file ha_innodb.cc --source include/have_innodb.inc +--source include/no_valgrind_without_big.inc # DEBUG_SYNC must be compiled in. --source include/have_debug_sync.inc diff --git a/mysql-test/suite/innodb/t/innodb-stats-sample.test b/mysql-test/suite/innodb/t/innodb-stats-sample.test index 600688ab98d..34ca4c7b58e 100644 --- a/mysql-test/suite/innodb/t/innodb-stats-sample.test +++ b/mysql-test/suite/innodb/t/innodb-stats-sample.test @@ -1,4 +1,5 @@ --source include/have_innodb.inc +--source include/no_valgrind_without_big.inc # # Test that mysqld does not crash when running ANALYZE TABLE with # different values of the parameter innodb_stats_transient_sample_pages. diff --git a/mysql-test/suite/innodb/t/innodb-trim.test b/mysql-test/suite/innodb/t/innodb-trim.test index 3f8eb5f2c71..a077e6acafe 100644 --- a/mysql-test/suite/innodb/t/innodb-trim.test +++ b/mysql-test/suite/innodb/t/innodb-trim.test @@ -1,5 +1,6 @@ --source include/have_innodb.inc --source include/have_innodb_punchhole.inc +--source include/no_valgrind_without_big.inc --disable_query_log --disable_warnings diff --git a/mysql-test/suite/innodb/t/innodb_bug30423.test b/mysql-test/suite/innodb/t/innodb_bug30423.test index de53a935156..9d9975c04ca 100644 --- a/mysql-test/suite/innodb/t/innodb_bug30423.test +++ b/mysql-test/suite/innodb/t/innodb_bug30423.test @@ -1,4 +1,5 @@ --source include/have_innodb.inc +--source include/no_valgrind_without_big.inc # Test for Bug #30423, InnoDBs treatment of NULL in index stats causes # bad "rows examined" estimates. # Implemented InnoDB system variable "innodb_stats_method" with diff --git a/mysql-test/suite/innodb/t/innodb_bug53290.test b/mysql-test/suite/innodb/t/innodb_bug53290.test index ea15212fa39..9d36d9bd2f6 100644 --- a/mysql-test/suite/innodb/t/innodb_bug53290.test +++ b/mysql-test/suite/innodb/t/innodb_bug53290.test @@ -1,4 +1,5 @@ -- source include/have_innodb.inc +-- source include/no_valgrind_without_big.inc create table bug53290 (x bigint) engine=innodb; diff --git a/mysql-test/suite/innodb/t/log_corruption.test b/mysql-test/suite/innodb/t/log_corruption.test index b9162be99db..46f6384b3c9 100644 --- a/mysql-test/suite/innodb/t/log_corruption.test +++ b/mysql-test/suite/innodb/t/log_corruption.test @@ -1,5 +1,6 @@ --source include/have_innodb.inc --source include/have_innodb_16k.inc +--source include/no_valgrind_without_big.inc --disable_query_log call mtr.add_suppression("InnoDB: Upgrade after a crash is not supported"); diff --git a/mysql-test/suite/innodb/t/log_file.test b/mysql-test/suite/innodb/t/log_file.test index e167bc6fb57..2484e787973 100644 --- a/mysql-test/suite/innodb/t/log_file.test +++ b/mysql-test/suite/innodb/t/log_file.test @@ -3,6 +3,7 @@ --echo # Bug#16418661 - CHANGING NAME IN FOR INNODB_DATA_FILE_PATH SHOULD NOT SUCCEED WITH LOG FILES --source include/have_innodb.inc +--source include/no_valgrind_without_big.inc --disable_query_log call mtr.add_suppression("InnoDB: Could not create undo tablespace.*undo002"); diff --git a/mysql-test/suite/innodb/t/log_file_name.test b/mysql-test/suite/innodb/t/log_file_name.test index 2a7ed7b494d..89fe04bcdfb 100644 --- a/mysql-test/suite/innodb/t/log_file_name.test +++ b/mysql-test/suite/innodb/t/log_file_name.test @@ -2,7 +2,7 @@ # Test the detection of duplicate tablespaces. --source include/have_innodb.inc ---source include/not_valgrind.inc +--source include/no_valgrind_without_big.inc # Embedded server does not support crashing --source include/not_embedded.inc diff --git a/mysql-test/suite/innodb/t/missing_tablespaces.test b/mysql-test/suite/innodb/t/missing_tablespaces.test index 8dc325b3356..92f963a262d 100644 --- a/mysql-test/suite/innodb/t/missing_tablespaces.test +++ b/mysql-test/suite/innodb/t/missing_tablespaces.test @@ -4,6 +4,7 @@ --source include/not_embedded.inc #Windows has trouble creating files/directories with long names --source include/not_windows.inc +--source include/no_valgrind_without_big.inc --echo # --echo # Bug#19419026 WHEN A TABLESPACE IS NOT FOUND, DO NOT REPORT "TABLE NOT FOUND" diff --git a/mysql-test/suite/innodb/t/purge_secondary.test b/mysql-test/suite/innodb/t/purge_secondary.test index f2c85ce10e7..1a0d178f66a 100644 --- a/mysql-test/suite/innodb/t/purge_secondary.test +++ b/mysql-test/suite/innodb/t/purge_secondary.test @@ -139,4 +139,36 @@ WHERE LOWER(variable_name) LIKE 'INNODB_BUFFER_POOL_PAGES_FLUSHED'; DROP TABLE t1; +--echo # +--echo # MDEV-29666 InnoDB fails to purge secondary index records +--echo # when indexed virtual columns exist +--echo # + +CREATE TABLE t1 (a INT, b INT, a1 INT AS(a) VIRTUAL, +INDEX(a1),INDEX(b)) ENGINE=InnoDB; +INSERT INTO t1 SET a=1, b=1; + +UPDATE t1 SET a=2, b=3; +let DATADIR=`select @@datadir`; +let PAGE_SIZE=`select @@innodb_page_size`; + +source include/wait_all_purged.inc; +FLUSH TABLE t1 FOR EXPORT; + +perl; +my $ps = $ENV{PAGE_SIZE}; +my $file = "$ENV{DATADIR}/test/t1.ibd"; +open(FILE, "<", $file) or die "Unable to open $file\n"; +die "Unable to read $file\n" unless + sysread(FILE, $_, 6*$ps) == 6*$ps; +close(FILE); +print "page 4: N_RECS=0x", unpack("H*", substr($_, 4 * $ps + 54, 2)), "\n"; +print "page 5: N_RECS=0x", unpack("H*", substr($_, 5 * $ps + 54, 2)), "\n"; +EOF + +UNLOCK TABLES; +DROP TABLE t1; + +--echo # End of 10.3 tests + SET GLOBAL innodb_purge_rseg_truncate_frequency = @saved_frequency; diff --git a/mysql-test/suite/innodb/t/read_only_recover_committed.test b/mysql-test/suite/innodb/t/read_only_recover_committed.test index 1d2270315c5..d61fbd3c522 100644 --- a/mysql-test/suite/innodb/t/read_only_recover_committed.test +++ b/mysql-test/suite/innodb/t/read_only_recover_committed.test @@ -1,6 +1,7 @@ --source include/have_innodb.inc --source include/have_debug.inc --source include/have_debug_sync.inc +--source include/no_valgrind_without_big.inc # need to restart server --source include/not_embedded.inc --source include/no_valgrind_without_big.inc diff --git a/mysql-test/suite/innodb/t/recovery_shutdown.test b/mysql-test/suite/innodb/t/recovery_shutdown.test index 85e49b255d3..968ea62833a 100644 --- a/mysql-test/suite/innodb/t/recovery_shutdown.test +++ b/mysql-test/suite/innodb/t/recovery_shutdown.test @@ -1,5 +1,6 @@ --source include/have_innodb.inc --source include/not_embedded.inc +--source include/no_valgrind_without_big.inc --source include/have_sequence.inc # Flush any open myisam tables from previous tests diff --git a/mysql-test/suite/innodb/t/table_flags.test b/mysql-test/suite/innodb/t/table_flags.test index d36e71b797a..6b2e6ee3ea6 100644 --- a/mysql-test/suite/innodb/t/table_flags.test +++ b/mysql-test/suite/innodb/t/table_flags.test @@ -1,7 +1,12 @@ --source include/innodb_page_size.inc # Embedded server tests do not support restarting --source include/not_embedded.inc ---source include/no_valgrind_without_big.inc +# Slow shutdown may take more than 120 seconds under Valgrind, +# causing the server to be (silently) killed. +# Due to that, crash recovery could "heal" the damage that our +# Perl code is inflicting, and the SELECT statements could succeed +# instead of failing with ER_NO_SUCH_TABLE_IN_ENGINE. +--source include/not_valgrind.inc --disable_query_log call mtr.add_suppression("InnoDB: Table `mysql`\\.`innodb_table_stats` not found"); diff --git a/mysql-test/suite/innodb/t/undo_truncate.test b/mysql-test/suite/innodb/t/undo_truncate.test index d954ff28307..19829ce21e7 100644 --- a/mysql-test/suite/innodb/t/undo_truncate.test +++ b/mysql-test/suite/innodb/t/undo_truncate.test @@ -3,6 +3,7 @@ --source include/have_undo_tablespaces.inc --source include/not_embedded.inc --source include/have_sequence.inc +--source include/no_valgrind_without_big.inc --disable_query_log call mtr.add_suppression("InnoDB: Difficult to find free blocks in the buffer pool"); diff --git a/mysql-test/suite/innodb_fts/t/innodb_fts_misc.test b/mysql-test/suite/innodb_fts/t/innodb_fts_misc.test index 279cca3177a..b194ad20f71 100644 --- a/mysql-test/suite/innodb_fts/t/innodb_fts_misc.test +++ b/mysql-test/suite/innodb_fts/t/innodb_fts_misc.test @@ -3,6 +3,7 @@ #----------------------------------------------------------------------------- --source include/have_innodb.inc +--source include/no_valgrind_without_big.inc --source include/default_charset.inc let collation=UTF8_UNICODE_CI; --source include/have_collation.inc diff --git a/mysql-test/suite/innodb_fts/t/innodb_fts_plugin.test b/mysql-test/suite/innodb_fts/t/innodb_fts_plugin.test index 6a7ad8c7d82..7ff36b6f4b6 100644 --- a/mysql-test/suite/innodb_fts/t/innodb_fts_plugin.test +++ b/mysql-test/suite/innodb_fts/t/innodb_fts_plugin.test @@ -1,5 +1,6 @@ --source include/have_innodb.inc --source include/have_simple_parser.inc +--source include/no_valgrind_without_big.inc # Restart is not supported in embedded --source include/not_embedded.inc diff --git a/mysql-test/suite/mariabackup/log_page_corruption.test b/mysql-test/suite/mariabackup/log_page_corruption.test index 8931eb1eaf7..b9b3a6e6a7b 100644 --- a/mysql-test/suite/mariabackup/log_page_corruption.test +++ b/mysql-test/suite/mariabackup/log_page_corruption.test @@ -1,4 +1,5 @@ --source include/have_debug.inc +--source include/no_valgrind_without_big.inc --echo ######## --echo # Test for generating "innodb_corrupted_pages" file during full and diff --git a/mysql-test/suite/optimizer_unfixed_bugs/t/bug43448.test b/mysql-test/suite/optimizer_unfixed_bugs/t/bug43448.test index 4e1df63b45b..69181c3615c 100644 --- a/mysql-test/suite/optimizer_unfixed_bugs/t/bug43448.test +++ b/mysql-test/suite/optimizer_unfixed_bugs/t/bug43448.test @@ -4,6 +4,7 @@ --source include/have_debug.inc --source include/have_innodb.inc +--source include/no_valgrind_without_big.inc SET @saved_dbug = @@SESSION.debug_dbug; # crash requires ICP support in InnoDB diff --git a/mysql-test/suite/rpl/t/rpl_gtid_stop_start.test b/mysql-test/suite/rpl/t/rpl_gtid_stop_start.test index 4a192230859..2cf184a3401 100644 --- a/mysql-test/suite/rpl/t/rpl_gtid_stop_start.test +++ b/mysql-test/suite/rpl/t/rpl_gtid_stop_start.test @@ -5,6 +5,7 @@ if (`SELECT $PS_PROTOCOL != 0`) --let $rpl_topology=1->2 --source include/rpl_init.inc --source include/have_innodb.inc +--source include/no_valgrind_without_big.inc --echo *** Test normal shutdown/restart of slave server configured as a GTID slave. *** diff --git a/mysql-test/suite/rpl/t/rpl_mdev12179.test b/mysql-test/suite/rpl/t/rpl_mdev12179.test index 2afcbf7b1e1..c8b9e665747 100644 --- a/mysql-test/suite/rpl/t/rpl_mdev12179.test +++ b/mysql-test/suite/rpl/t/rpl_mdev12179.test @@ -1,6 +1,7 @@ --source include/have_innodb.inc --let $rpl_topology=1->2 --source include/rpl_init.inc +--source include/no_valgrind_without_big.inc --connection server_2 call mtr.add_suppression("The automatically created table.*name may not be entirely in lowercase"); diff --git a/mysql-test/suite/rpl/t/rpl_semi_sync_shutdown_await_ack.test b/mysql-test/suite/rpl/t/rpl_semi_sync_shutdown_await_ack.test index 5e9cda6466e..2ee7d0aa052 100644 --- a/mysql-test/suite/rpl/t/rpl_semi_sync_shutdown_await_ack.test +++ b/mysql-test/suite/rpl/t/rpl_semi_sync_shutdown_await_ack.test @@ -1,3 +1,5 @@ +--source include/no_valgrind_without_big.inc + # # Purpose: # This test validates that data is consistent between a primary and replica diff --git a/mysql-test/suite/stress/t/ddl_innodb.test b/mysql-test/suite/stress/t/ddl_innodb.test index 083ec43e7d7..d5e23124b4b 100644 --- a/mysql-test/suite/stress/t/ddl_innodb.test +++ b/mysql-test/suite/stress/t/ddl_innodb.test @@ -1,3 +1,4 @@ +--source include/no_valgrind_without_big.inc ######## t/ddl_innodb.test ###### # # Stress the storage engine InnoDB with CREATE/DROP TABLE/INDEX diff --git a/mysql-test/suite/sys_vars/t/innodb_buffer_pool_dump_at_shutdown_basic.test b/mysql-test/suite/sys_vars/t/innodb_buffer_pool_dump_at_shutdown_basic.test index feb7bf05638..072d1cec1a4 100644 --- a/mysql-test/suite/sys_vars/t/innodb_buffer_pool_dump_at_shutdown_basic.test +++ b/mysql-test/suite/sys_vars/t/innodb_buffer_pool_dump_at_shutdown_basic.test @@ -5,6 +5,7 @@ -- source include/have_innodb.inc # include/restart_mysqld.inc does not work in embedded mode -- source include/not_embedded.inc +-- source include/no_valgrind_without_big.inc # Check the default value SET @orig = @@global.innodb_buffer_pool_dump_at_shutdown; diff --git a/mysql-test/suite/sys_vars/t/innodb_flush_method_func.test b/mysql-test/suite/sys_vars/t/innodb_flush_method_func.test index aad91d0f4a3..7293a99db41 100644 --- a/mysql-test/suite/sys_vars/t/innodb_flush_method_func.test +++ b/mysql-test/suite/sys_vars/t/innodb_flush_method_func.test @@ -1,6 +1,8 @@ --source include/have_innodb.inc # Embedded server tests do not support restarting. --source include/not_embedded.inc +# InnoDB: Cannot read first page of './ibdata1' I/O error +--source include/not_valgrind.inc call mtr.add_suppression("InnoDB: Failed to set .*DIRECT"); --replace_result unbuffered fsync |