diff options
Diffstat (limited to 'mysql-test/t')
177 files changed, 2089 insertions, 1820 deletions
diff --git a/mysql-test/t/alter_table.test b/mysql-test/t/alter_table.test index e6caadcc52c..0f685c470ad 100644 --- a/mysql-test/t/alter_table.test +++ b/mysql-test/t/alter_table.test @@ -10,6 +10,7 @@ if (`select plugin_auth_version < "5.6.26" from information_schema.plugins where drop table if exists t1,t2; drop database if exists mysqltest; --enable_warnings +set @save_max_allowed_packet=@@global.max_allowed_packet; create table t1 ( col1 int not null auto_increment primary key, @@ -1344,7 +1345,7 @@ SELECT LENGTH(my_t3_fld1) FROM t3; DROP TABLE t1, t2, t3; SET SQL_MODE=default; -SET GLOBAL max_allowed_packet=default; +SET GLOBAL max_allowed_packet=@save_max_allowed_packet; # # Test of ALTER TABLE IF [NOT] EXISTS diff --git a/mysql-test/t/analyze.test b/mysql-test/t/analyze.test index 0903db1eca4..85a88158162 100644 --- a/mysql-test/t/analyze.test +++ b/mysql-test/t/analyze.test @@ -13,6 +13,8 @@ # before calling mi_state_info_write # +--source include/default_optimizer_switch.inc + create table t1 (a bigint); lock tables t1 write; insert into t1 values(0); diff --git a/mysql-test/t/analyze_format_json.test b/mysql-test/t/analyze_format_json.test index 915e0c2bf3c..3f3324e9eec 100644 --- a/mysql-test/t/analyze_format_json.test +++ b/mysql-test/t/analyze_format_json.test @@ -5,6 +5,8 @@ drop table if exists t0,t1,t2,t3; --enable_warnings +--source include/default_optimizer_switch.inc + create table t0 (a int); INSERT INTO t0 VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); diff --git a/mysql-test/t/analyze_stmt.test b/mysql-test/t/analyze_stmt.test index 15fc00a321d..b40edc1cd0f 100644 --- a/mysql-test/t/analyze_stmt.test +++ b/mysql-test/t/analyze_stmt.test @@ -1,6 +1,10 @@ # # Tests for "ANALYZE $statement" feature # + +# Fix that analyze delete with join doesn't add extra WHERE clause. +set join_cache_level=2; + --disable_warnings drop table if exists t0,t1,t2,t3; --enable_warnings diff --git a/mysql-test/t/analyze_stmt_orderby.test b/mysql-test/t/analyze_stmt_orderby.test index a1cfb58f31a..ecee8040ed5 100644 --- a/mysql-test/t/analyze_stmt_orderby.test +++ b/mysql-test/t/analyze_stmt_orderby.test @@ -1,5 +1,6 @@ --source include/have_innodb.inc +--source include/default_optimizer_switch.inc create table t0(a int); insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); diff --git a/mysql-test/t/analyze_stmt_privileges2.test b/mysql-test/t/analyze_stmt_privileges2.test index e3274882ba6..a0f1f4908b6 100644 --- a/mysql-test/t/analyze_stmt_privileges2.test +++ b/mysql-test/t/analyze_stmt_privileges2.test @@ -1,4 +1,4 @@ -################################################################################ +############################################################################### # The test ensures that permission checks are applied correctly to # ANALYZE INSERT/REPLACE/UPDATE/DELETE/SELECT (I/R/U/D/S further in the test) # when it's executed on a table or on a view. @@ -18,7 +18,8 @@ # Search for 'MDEV' to find all of them. ################################################################################ --- source include/not_embedded.inc +--source include/not_embedded.inc +--source include/default_optimizer_switch.inc # Save the initial number of concurrent sessions --source include/count_sessions.inc @@ -44,6 +45,7 @@ INSERT INTO privtest_db.t2 VALUES (1,'foo'), (2,'bar'), (3,'qux'); GRANT SELECT ON privtest_db.t2 TO 'privtest'@'localhost'; connect(con1,localhost,privtest,,privtest_db); +--source include/default_optimizer_switch.inc --echo --echo ######################################################################### diff --git a/mysql-test/t/bootstrap.test b/mysql-test/t/bootstrap.test index 44b8d5eb08a..36a552caf95 100644 --- a/mysql-test/t/bootstrap.test +++ b/mysql-test/t/bootstrap.test @@ -33,10 +33,11 @@ drop table t1; remove_file $MYSQLTEST_VARDIR/tmp/bootstrap_error.sql; # -# Bootstrap with a query larger than 2*thd->net.max_packet +# Bootstrap with a large thd->net.max_packet # set @my_max_allowed_packet= @@max_allowed_packet; -set global max_allowed_packet=64*@@max_allowed_packet; +set @@global.max_allowed_packet= greatest(1073741824, @@max_allowed_packet); +set @max_allowed_packed=@@global.max_allowed_packet; --disable_query_log create table t1 select 2 as a, concat(repeat('MySQL', @@max_allowed_packet/10), ';') as b; eval select * into outfile '$MYSQLTEST_VARDIR/tmp/long_query.sql' from t1; diff --git a/mysql-test/t/bug13633383.test b/mysql-test/t/bug13633383.test index e31d4a8c9f6..c0411b70d37 100644 --- a/mysql-test/t/bug13633383.test +++ b/mysql-test/t/bug13633383.test @@ -2,6 +2,9 @@ --echo # Bug#13633383 63183: SMALL SORT_BUFFER_SIZE CRASH IN MERGE_BUFFERS --echo # +# Avoid warnings from join_buffer +--source include/default_optimizer_switch.inc + CREATE TABLE t1 ( `a` int(11) DEFAULT NULL, `col432` bit(8) DEFAULT NULL, diff --git a/mysql-test/t/cast.test b/mysql-test/t/cast.test index d62612f819e..528f9c789d5 100644 --- a/mysql-test/t/cast.test +++ b/mysql-test/t/cast.test @@ -393,6 +393,7 @@ DROP TABLE t1; --echo # Bug #11765023: 57934: DOS POSSIBLE SINCE BINARY CASTING --echo # DOESN'T ADHERE TO MAX_ALLOWED_PACKET +set @save_max_allowed_packet=@@global.max_allowed_packet; SET @@GLOBAL.max_allowed_packet=2048; # reconnect to make the new max packet size take effect --connect (newconn, localhost, root,,) @@ -403,7 +404,7 @@ SELECT length(CONVERT(repeat('a',2048), CHAR(2049))); connection default; disconnect newconn; -SET @@GLOBAL.max_allowed_packet=default; +SET @@GLOBAL.max_allowed_packet=@save_max_allowed_packet; --echo # --echo # Bug#13519724 63793: CRASH IN DTCOLLATION::SET(DTCOLLATION &SET) diff --git a/mysql-test/t/compound.test b/mysql-test/t/compound.test index cabdf96e00e..7583bc1cca9 100644 --- a/mysql-test/t/compound.test +++ b/mysql-test/t/compound.test @@ -144,6 +144,8 @@ drop table t1| # MDEV-6606 Server crashes in String::append on selecting sql_mode inside anonymous block # MDEV-6609 SQL inside an anonymous block is executed with wrong SQL_MODE # + +set @@sql_mode="STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"; begin not atomic select @@sql_mode; end| create table t1 (a int)| select a from t1 having a > 1| diff --git a/mysql-test/t/connect.test b/mysql-test/t/connect.test index 560f29e840d..e7d7128b233 100644 --- a/mysql-test/t/connect.test +++ b/mysql-test/t/connect.test @@ -224,6 +224,7 @@ SELECT user FROM information_schema.processlist ORDER BY id; --echo --echo # -- Resetting variables... +--replace_result $saved_max_connections #max_connections# --eval SET GLOBAL max_connections = $saved_max_connections --echo diff --git a/mysql-test/t/create.test b/mysql-test/t/create.test index 17929f9df15..11f641c6033 100644 --- a/mysql-test/t/create.test +++ b/mysql-test/t/create.test @@ -1,3 +1,5 @@ +--source include/default_charset.inc + call mtr.add_suppression("table or database name 't-1'"); # # Check some special create statements. @@ -977,6 +979,8 @@ SHOW CREATE DATABASE aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa # # Bug#21432 Database/Table name limited to 64 bytes, not chars, problems with multi-byte # +set @save_character_set_client=@@character_set_client; +set @save_collation_connection=@@collation_connection; set names utf8; create database имÑ_базы_в_кодировке_утф8_длиной_больше_чем_45; @@ -1052,7 +1056,9 @@ return 0; drop view имÑ_вью_кодировке_утф8_длиной_больше_чем_42; drop table имÑ_таблицы_в_кодировке_утф8_длиной_больше_чем_48; -set names default; +set @@character_set_client=@save_character_set_client; +set @@character_set_results=@save_character_set_client; +set @@session.collation_connection=@save_collation_connection; # # Bug#21136 CREATE TABLE SELECT within CREATE TABLE SELECT causes server crash diff --git a/mysql-test/t/cte_nonrecursive.test b/mysql-test/t/cte_nonrecursive.test index c0c5c22bed0..bd8af55071a 100644 --- a/mysql-test/t/cte_nonrecursive.test +++ b/mysql-test/t/cte_nonrecursive.test @@ -1,3 +1,5 @@ +--source include/default_optimizer_switch.inc + create table t1 (a int, b varchar(32)); insert into t1 values (4,'aaaa' ), (7,'bb'), (1,'ccc'), (4,'dd'); diff --git a/mysql-test/t/cte_recursive.test b/mysql-test/t/cte_recursive.test index 0923ca3fdd1..2c20e095130 100644 --- a/mysql-test/t/cte_recursive.test +++ b/mysql-test/t/cte_recursive.test @@ -1,3 +1,5 @@ +--source include/default_optimizer_switch.inc + create table t1 (a int, b varchar(32)); insert into t1 values (4,'aaaa' ), (7,'bb'), (1,'ccc'), (4,'dd'); diff --git a/mysql-test/t/ctype_create.test b/mysql-test/t/ctype_create.test index 61fc5292094..6ccc83521bd 100644 --- a/mysql-test/t/ctype_create.test +++ b/mysql-test/t/ctype_create.test @@ -114,6 +114,8 @@ USE test; --echo # --echo # MDEV-7387 Alter table xxx CHARACTER SET utf8, CONVERT TO CHARACTER SET latin1 should fail --echo # +CREATE DATABASE tmp DEFAULT CHARACTER SET latin5; +USE tmp; --error ER_CONFLICTING_DECLARATIONS CREATE TABLE t1 (a VARCHAR(10)) CHARACTER SET DEFAULT, CHARACTER SET utf8; --error ER_CONFLICTING_DECLARATIONS @@ -137,6 +139,8 @@ ALTER TABLE t1 CONVERT TO CHARACTER SET DEFAULT, CHARACTER SET utf8; --error ER_CONFLICTING_DECLARATIONS ALTER TABLE t1 CONVERT TO CHARACTER SET DEFAULT, CHARACTER SET latin1; DROP TABLE t1; +DROP DATABASE tmp; +USE test; --echo # --echo # End of 10.0 tests diff --git a/mysql-test/t/ctype_latin1_de.test b/mysql-test/t/ctype_latin1_de.test index 29a52c36db6..dc261790f6c 100644 --- a/mysql-test/t/ctype_latin1_de.test +++ b/mysql-test/t/ctype_latin1_de.test @@ -1,6 +1,8 @@ # # Test latin_de character set # +create database latin1_german2_ci default character set latin1 collate latin1_german2_ci; +use latin1_german2_ci; set names latin1; set @@collation_connection=latin1_german2_ci; @@ -180,3 +182,6 @@ select hex(weight_string('xß' as char(2))); --echo # --echo # End of 5.6 tests --echo # + +drop database latin1_german2_ci; +use test; diff --git a/mysql-test/t/ctype_ucs.test b/mysql-test/t/ctype_ucs.test index 061130e429f..d0d463c0340 100644 --- a/mysql-test/t/ctype_ucs.test +++ b/mysql-test/t/ctype_ucs.test @@ -74,6 +74,7 @@ DROP TABLE t1; --echo # --echo # Problem # 1 (original report): wrong parsing of ucs2 data +SET character_set_connection=ucs2; SELECT '00' UNION SELECT '10' INTO OUTFILE 'tmpp.txt'; CREATE TABLE t1(a INT); LOAD DATA INFILE 'tmpp.txt' INTO TABLE t1 CHARACTER SET ucs2 diff --git a/mysql-test/t/ctype_ujis.test b/mysql-test/t/ctype_ujis.test index cf247763b46..72a609edf39 100644 --- a/mysql-test/t/ctype_ujis.test +++ b/mysql-test/t/ctype_ujis.test @@ -1178,6 +1178,8 @@ DROP PROCEDURE IF EXISTS sp1; --enable_warnings set names ujis; +SET @save_character_set_server= @@character_set_server; +SET @save_character_set_database= @@character_set_database; set character_set_database = ujis; set character_set_server = ujis; @@ -1219,8 +1221,8 @@ SELECT CONVERT(REPLACE(EXPORT_SET('a','a','a','','a'),'00','') USING ujis); set names default; -set character_set_database=default; -set character_set_server=default; +set character_set_database=@save_character_set_server; +set character_set_server=@save_character_set_database; --echo End of 5.1 tests diff --git a/mysql-test/t/ctype_utf16.test b/mysql-test/t/ctype_utf16.test index 504e62e3e89..0e497b7b7bd 100644 --- a/mysql-test/t/ctype_utf16.test +++ b/mysql-test/t/ctype_utf16.test @@ -765,9 +765,10 @@ DROP TABLE t1; --echo # DATE_ADD/DATE_SUB WITH INTERVAL CRASHES IN GET_INTERVAL_VALUE() --echo # +let $max_packet=`select @@max_allowed_packet`; +--replace_result $max_packet XXX SELECT space(date_add(101, INTERVAL CHAR('1' USING utf16) hour_second)); - --echo # --echo # Bug#11750518 41090: ORDER BY TRUNCATES GROUP_CONCAT RESULT --echo # diff --git a/mysql-test/t/ctype_utf16_def-master.opt b/mysql-test/t/ctype_utf16_def-master.opt index 55bb5d14bbd..909a004bacc 100644 --- a/mysql-test/t/ctype_utf16_def-master.opt +++ b/mysql-test/t/ctype_utf16_def-master.opt @@ -1 +1 @@ ---character-set-server=utf16,latin1 +--character-set-server=utf16,latin1 --collation-server=utf16_general_ci diff --git a/mysql-test/t/ctype_utf8.test b/mysql-test/t/ctype_utf8.test index be342f80a75..3e82f74a38a 100644 --- a/mysql-test/t/ctype_utf8.test +++ b/mysql-test/t/ctype_utf8.test @@ -7,6 +7,8 @@ let collation=utf8_unicode_ci; SET TIME_ZONE='+03:00'; --source include/have_innodb.inc +--source include/default_optimizer_switch.inc +--source include/default_charset.inc --disable_warnings drop table if exists t1,t2,t3,t4; diff --git a/mysql-test/t/ctype_utf8mb4.test b/mysql-test/t/ctype_utf8mb4.test index 9cf87d12340..88fb3d23b62 100644 --- a/mysql-test/t/ctype_utf8mb4.test +++ b/mysql-test/t/ctype_utf8mb4.test @@ -5,6 +5,7 @@ # --source include/have_innodb.inc +--source include/default_optimizer_switch.inc --disable_warnings drop table if exists t1,t2; @@ -1187,7 +1188,9 @@ drop table t1; # SET CHARACTER SET utf8mb4; +--source include/default_charset.inc SHOW VARIABLES LIKE 'character\_set\_%'; +SET @@character_set_server=@save_character_set_server; CREATE DATABASE crashtest DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin; USE crashtest; CREATE TABLE crashtest (crash char(10)) DEFAULT CHARSET=utf8mb4; diff --git a/mysql-test/t/derived.test b/mysql-test/t/derived.test index 35f840b621c..6d9d5e23cf9 100644 --- a/mysql-test/t/derived.test +++ b/mysql-test/t/derived.test @@ -1,4 +1,9 @@ # Initialize +--source include/default_optimizer_switch.inc + +--disable_warnings +drop table if exists t1,t2,t3; +--enable_warnings set @save_derived_optimizer_switch=@@optimizer_switch; set optimizer_switch='derived_merge=off,derived_with_keys=off'; @@ -106,6 +111,7 @@ create user mysqltest_1; create table t1 select 1 as a; connect (con1,localhost,mysqltest_1,,*NO-ONE*,$MASTER_MYPORT,$MASTER_MYSOCK); connection con1; +--source include/default_optimizer_switch.inc set optimizer_switch='derived_merge=off,derived_with_keys=off'; --error 1046 select 2 as a from (select * from t1) b; diff --git a/mysql-test/t/derived_cond_pushdown.test b/mysql-test/t/derived_cond_pushdown.test index 8592b887966..c9c8fb21ac7 100644 --- a/mysql-test/t/derived_cond_pushdown.test +++ b/mysql-test/t/derived_cond_pushdown.test @@ -1,4 +1,6 @@ +--source include/default_optimizer_switch.inc let $no_pushdown= set statement optimizer_switch='condition_pushdown_for_derived=off' for; +set @@join_buffer_size=256*1024; create table t1 (a int, b int, c int); create table t2 (a int, b int, c int, d decimal); diff --git a/mysql-test/t/derived_view.test b/mysql-test/t/derived_view.test index 158c1a9d004..46d6a7805ca 100644 --- a/mysql-test/t/derived_view.test +++ b/mysql-test/t/derived_view.test @@ -1,3 +1,5 @@ +--source include/default_optimizer_switch.inc + --disable_warnings drop table if exists t1,t2; drop view if exists v1,v2,v3,v4; @@ -5,6 +7,7 @@ drop view if exists v1,v2,v3,v4; set @exit_optimizer_switch=@@optimizer_switch; set @exit_join_cache_level=@@join_cache_level; +set @exit_join_buffer_size=@@join_buffer_size; set optimizer_switch='derived_merge=on,derived_with_keys=on'; # The 'default' value within the scope of this test: set @save_optimizer_switch=@@optimizer_switch; @@ -1077,8 +1080,8 @@ EXPLAIN SELECT t2.d FROM t1,t2,v3 WHERE v3.e = t2.d AND v3.i < 3; SELECT t2.d FROM t1,t2,v3 WHERE v3.e = t2.d AND v3.i < 3; -SET SESSION join_cache_level = DEFAULT; -SET SESSION join_buffer_size = DEFAULT; +SET SESSION join_cache_level = @exit_join_cache_level; +SET SESSION join_buffer_size = @exit_join_buffer_size; DROP VIEW v3; DROP TABLE t1,t2,t3,t4,t5; @@ -1167,7 +1170,7 @@ SELECT * FROM t3 SELECT * FROM t3 WHERE t3.b <> ANY (SELECT t1.b FROM t1 LEFT JOIN v2 ON v2.a = t1.a); -SET SESSION join_cache_level = default; +SET SESSION join_cache_level = @exit_join_cache_level; SET optimizer_switch=@save_optimizer_switch; diff --git a/mysql-test/t/distinct.test b/mysql-test/t/distinct.test index d41340c29fd..da12c7273b2 100644 --- a/mysql-test/t/distinct.test +++ b/mysql-test/t/distinct.test @@ -3,6 +3,7 @@ # Bug with group by and not used fields # +--source include/default_optimizer_switch.inc --disable_warnings drop table if exists t1,t2,t3; --enable_warnings diff --git a/mysql-test/t/dyncol.test b/mysql-test/t/dyncol.test index f2c0a31c898..c0835de8c44 100644 --- a/mysql-test/t/dyncol.test +++ b/mysql-test/t/dyncol.test @@ -2,6 +2,8 @@ # Dynamic column function test # +--source include/default_charset.inc + --echo # --echo # column create --echo # @@ -674,7 +676,7 @@ select hex(column_create(1212, 2, "www", 3)); select hex(column_create("1212", 2, "www", 3)); select hex(column_create("1212", 2, 3, 3)); select hex(column_create("1212", 2, "адын", 1, 3, 3)); -set names default; +set names latin1; --echo # fetching column test (names) set names utf8; @@ -685,7 +687,7 @@ select column_get(column_create("1212", 2, "адын", 1, 3, 3), "3" as int); select column_get(column_create("1212", 2, "адын", 1, 3, 3), 3 as int); select column_get(column_create("1212", 2, "адын", 1, 3, 3), 4 as int); select column_get(column_create("1212", 2, "адын", 1, 3, 3), "4" as int); -set names default; +set names latin1; --echo # column existance test (names) set names utf8; @@ -697,7 +699,7 @@ select column_exists(column_create("1212", 2, "адын", 1, 3, 3), "3"); select column_exists(column_create("1212", 2, "адын", 1, 3, 3), 3); select column_exists(column_create("1212", 2, "адын", 1, 3, 3), 4); select column_exists(column_create("1212", 2, "адын", 1, 3, 3), "4"); -set names default; +set names latin1; --echo # column changing test (names) select hex(column_add(column_create(1, "AAA"), "b", "BBB")); diff --git a/mysql-test/t/events_1.test b/mysql-test/t/events_1.test index 58c151bc86e..33b82730783 100644 --- a/mysql-test/t/events_1.test +++ b/mysql-test/t/events_1.test @@ -5,6 +5,7 @@ -- source include/not_embedded.inc set sql_mode=""; +--source include/default_charset.inc call mtr.add_suppression("Column count of mysql.event is wrong. Expected .*, found .*\. The table is probably corrupted"); diff --git a/mysql-test/t/events_2.test b/mysql-test/t/events_2.test index 12ce9210b0a..2012f94e9f2 100644 --- a/mysql-test/t/events_2.test +++ b/mysql-test/t/events_2.test @@ -4,6 +4,7 @@ -- source include/not_embedded.inc set sql_mode=""; +--source include/default_charset.inc --disable_warnings drop database if exists events_test; diff --git a/mysql-test/t/events_bugs.test b/mysql-test/t/events_bugs.test index 76288c8fbae..a0f3c5991ef 100644 --- a/mysql-test/t/events_bugs.test +++ b/mysql-test/t/events_bugs.test @@ -139,6 +139,7 @@ drop database if exists events_test; drop database if exists mysqltest_db1; drop database if exists mysqltest_db2; --enable_warnings +set collation_server=latin1_swedish_ci; create database events_test; use events_test; # We use MyISAM tables and must avoid effects (visibility of changes might be diff --git a/mysql-test/t/events_grant.test b/mysql-test/t/events_grant.test index 8db4333cc03..0c89e9d1f6c 100644 --- a/mysql-test/t/events_grant.test +++ b/mysql-test/t/events_grant.test @@ -1,5 +1,7 @@ # Can't test with embedded server that doesn't support grants -- source include/not_embedded.inc +--source include/default_charset.inc + CREATE DATABASE IF NOT EXISTS events_test; use events_test; diff --git a/mysql-test/t/events_logs_tests.test b/mysql-test/t/events_logs_tests.test index c3bbff90723..c4ef133f46b 100644 --- a/mysql-test/t/events_logs_tests.test +++ b/mysql-test/t/events_logs_tests.test @@ -1,6 +1,7 @@ # Can't test with embedded server that doesn't support grants -- source include/not_embedded.inc +set @save_long_query_time=@@long_query_time; --disable_warnings drop database if exists events_test; --enable_warnings @@ -78,8 +79,8 @@ select user_host, db, sql_text from mysql.slow_log drop database events_test; set global event_scheduler=off; -set @@global.long_query_time=default; -set @@session.long_query_time=default; +set @@global.long_query_time=@save_long_query_time; +set @@session.long_query_time=@save_long_query_time; # # Safety diff --git a/mysql-test/t/events_restart.test b/mysql-test/t/events_restart.test index 7f01859e059..ca674170e96 100644 --- a/mysql-test/t/events_restart.test +++ b/mysql-test/t/events_restart.test @@ -3,6 +3,7 @@ call mtr.add_suppression("Column count of mysql.event is wrong. Expected .*, found .*\. The table is probably corrupted"); +let $collation_server=`select @@collation_server`; # # Test that when the server is restarted, it checks mysql.event table, # and disables the scheduler if it's not up to date. @@ -92,6 +93,7 @@ set global event_scheduler=on; select @@global.event_scheduler; --sorted_result --replace_column 6 # 9 # 10 # +--replace_result $collation_server latin1_swedish_ci show events; --echo Now let's restart the server again diff --git a/mysql-test/t/explain_json.test b/mysql-test/t/explain_json.test index c3665b1818b..cfbc0cfa10c 100644 --- a/mysql-test/t/explain_json.test +++ b/mysql-test/t/explain_json.test @@ -1,6 +1,8 @@ # # EXPLAIN FORMAT=JSON tests. These are tests developed for MariaDB. # +--source include/default_optimizer_switch.inc + --disable_warnings drop table if exists t0,t1,t2; --enable_warnings diff --git a/mysql-test/t/flush2.test b/mysql-test/t/flush2.test index 496b57ccea4..6c06eea0f98 100644 --- a/mysql-test/t/flush2.test +++ b/mysql-test/t/flush2.test @@ -4,13 +4,16 @@ --source include/not_embedded.inc +set @save_expire_logs_days=@@global.expire_logs_days; + flush logs; set global expire_logs_days = 3; +let $relay_prefix=`select concat(substring_index(@@relay_log,"-",1),"-")`; show variables like 'log_bin%'; ---replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR $relay_prefix XXX- show variables like 'relay_log%'; flush logs; show variables like 'log_bin%'; ---replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR $relay_prefix XXX- show variables like 'relay_log%'; -set global expire_logs_days = 0; +set global expire_logs_days=@save_expire_logs_days; diff --git a/mysql-test/t/func_compress.test b/mysql-test/t/func_compress.test index 3fd9cad467b..983b792f4c4 100644 --- a/mysql-test/t/func_compress.test +++ b/mysql-test/t/func_compress.test @@ -5,6 +5,7 @@ # Note that this test gives error in the gzip library when running under # valgrind, but these warnings can be ignored +set @save_max_allowed_packet=@@max_allowed_packet; set global max_allowed_packet=1048576; connect (conn1,localhost,root,,); connection conn1; @@ -56,7 +57,7 @@ eval select compress(repeat('aaaaaaaaaa', IF('$LOW_MEMORY', 10, 10000000))) is n disconnect newconn; --source include/wait_until_disconnected.inc connection default; -set @@global.max_allowed_packet=default; +set @@global.max_allowed_packet=@save_max_allowed_packet; # # Bug #18643: problem with null values @@ -116,7 +117,7 @@ DROP TABLE t1; --echo End of 5.0 tests --disable_result_log --disable_query_log -set @@global.max_allowed_packet=default; +set @@global.max_allowed_packet=@save_max_allowed_packet; --enable_result_log --enable_query_log @@ -148,7 +149,7 @@ SELECT UNCOMPRESS(CAST(0 AS BINARY(5))); disconnect conn1; connection default; -set global max_allowed_packet=default; +set global max_allowed_packet=@save_max_allowed_packet; --echo # --echo # End of 5.5 tests --echo # diff --git a/mysql-test/t/func_isnull.test b/mysql-test/t/func_isnull.test index 7d1a7e83a1a..f4cf5a5b88b 100644 --- a/mysql-test/t/func_isnull.test +++ b/mysql-test/t/func_isnull.test @@ -1,6 +1,7 @@ # # test of ISNULL() # +--source include/default_optimizer_switch.inc --disable_warnings drop table if exists t1; diff --git a/mysql-test/t/func_json.test b/mysql-test/t/func_json.test index 5b77c2cd4a4..2eaaf218e5e 100644 --- a/mysql-test/t/func_json.test +++ b/mysql-test/t/func_json.test @@ -265,6 +265,9 @@ SELECT JSON_search( '{"x": "\\""}', "one", '\\"'); # # MDEV-11833 JSON functions don't seem to respect max_allowed_packet. # +set @save_max_allowed_packet=@@max_allowed_packet; +set @save_net_buffer_length=@@net_buffer_length; + set @@global.net_buffer_length=1024; set @@global.max_allowed_packet=2048; --connect (newconn, localhost, root,,) @@ -275,8 +278,8 @@ select json_array(repeat('a',1024),repeat('a',1024)); select json_object("a", repeat('a',1024),"b", repeat('a',1024)); --connection default -set @@global.max_allowed_packet = default; -set @@global.net_buffer_length = default; +set @@global.max_allowed_packet = @save_max_allowed_packet; +set @@global.net_buffer_length = @save_net_buffer_length; --disconnect newconn diff --git a/mysql-test/t/func_math.test b/mysql-test/t/func_math.test index 4332f21443f..05fd69d7f73 100644 --- a/mysql-test/t/func_math.test +++ b/mysql-test/t/func_math.test @@ -2,6 +2,8 @@ # Test of math functions # +--source include/default_charset.inc + --disable_warnings drop table if exists t1; --enable_warnings @@ -193,7 +195,7 @@ insert into t2 values (16777216,16787215,1),(33554432,33564431,2); select format(t2.f2-t2.f1+1,0) from t1,t2 where t1.f2 = t2.f3 order by t1.f1; drop table t1, t2; -set names default; +set names latin1; # Bug 24912 -- misc functions have trouble with unsigned diff --git a/mysql-test/t/func_misc.test b/mysql-test/t/func_misc.test index 32e8401840c..89c1744c354 100644 --- a/mysql-test/t/func_misc.test +++ b/mysql-test/t/func_misc.test @@ -2,6 +2,7 @@ # Testing of misc functions # +--source include/default_optimizer_switch.inc --disable_warnings DROP TABLE IF EXISTS t1, t2; --enable_warnings diff --git a/mysql-test/t/func_str.test b/mysql-test/t/func_str.test index 80390536343..1a59946e97e 100644 --- a/mysql-test/t/func_str.test +++ b/mysql-test/t/func_str.test @@ -6,6 +6,7 @@ drop table if exists t1,t2; --enable_warnings +set @save_max_allowed_packet=@@global.max_allowed_packet; set global max_allowed_packet=1048576; connect (conn1,localhost,root,,); connection conn1; @@ -1795,7 +1796,7 @@ EXECUTE stmt; disconnect conn1; connection default; -set global max_allowed_packet=default; +set global max_allowed_packet=@save_max_allowed_packet; --echo # --echo # End of 5.6 tests diff --git a/mysql-test/t/func_weight_string.test b/mysql-test/t/func_weight_string.test index b376b996556..528aa5d4f0f 100644 --- a/mysql-test/t/func_weight_string.test +++ b/mysql-test/t/func_weight_string.test @@ -2,7 +2,7 @@ drop table if exists t1; --enable_warnings - +set @save_max_allowed_packet=@@max_allowed_packet; set global max_allowed_packet=1048576; connect (conn1,localhost,root,,); connection conn1; @@ -118,7 +118,7 @@ SELECT HEX(WEIGHT_STRING('ab' AS BINARY(1000000000000000000))); disconnect conn1; connection default; -set global max_allowed_packet=default; +set global max_allowed_packet=@save_max_allowed_packet; --echo # --echo # Start of 10.1 tests diff --git a/mysql-test/t/grant.opt b/mysql-test/t/grant.opt new file mode 100644 index 00000000000..afe4f848260 --- /dev/null +++ b/mysql-test/t/grant.opt @@ -0,0 +1 @@ +--disable-skip-name-resolve --character_set_server=latin1 --collation_server=latin1_swedish_ci diff --git a/mysql-test/t/grant2.opt b/mysql-test/t/grant2.opt new file mode 100644 index 00000000000..afe4f848260 --- /dev/null +++ b/mysql-test/t/grant2.opt @@ -0,0 +1 @@ +--disable-skip-name-resolve --character_set_server=latin1 --collation_server=latin1_swedish_ci diff --git a/mysql-test/t/grant4.opt b/mysql-test/t/grant4.opt new file mode 100644 index 00000000000..afe4f848260 --- /dev/null +++ b/mysql-test/t/grant4.opt @@ -0,0 +1 @@ +--disable-skip-name-resolve --character_set_server=latin1 --collation_server=latin1_swedish_ci diff --git a/mysql-test/t/grant_explain_non_select.test b/mysql-test/t/grant_explain_non_select.test index 701586be325..2bde3bed17c 100644 --- a/mysql-test/t/grant_explain_non_select.test +++ b/mysql-test/t/grant_explain_non_select.test @@ -7,6 +7,7 @@ # Save the initial number of concurrent sessions --source include/count_sessions.inc +--source include/default_optimizer_switch.inc set GLOBAL sql_mode=""; set LOCAL sql_mode=""; @@ -22,6 +23,7 @@ GRANT SELECT ON privtest_db.t2 TO 'privtest'@'localhost'; connect(con1,localhost,privtest,,); connection con1; +--source include/default_optimizer_switch.inc USE privtest_db; diff --git a/mysql-test/t/greedy_optimizer.test b/mysql-test/t/greedy_optimizer.test index dcd0587d76e..cac262bca64 100644 --- a/mysql-test/t/greedy_optimizer.test +++ b/mysql-test/t/greedy_optimizer.test @@ -138,11 +138,6 @@ insert into t7 values (21,2,3,4,5,6); # The actual test begins here # -# Check the default values for the optimizer parameters - -select @@optimizer_search_depth; -select @@optimizer_prune_level; - # This value swithes back to the old implementation of 'find_best()' # set optimizer_search_depth=63; - old (independent of the optimizer_prune_level) # @@ -170,7 +165,7 @@ select @@optimizer_prune_level; # procedure 'find_best'. Notice that 'find_best' does not depend on the # choice of heuristic. -set optimizer_search_depth=63; +set optimizer_search_depth=63, optimizer_prune_level=1; select @@optimizer_search_depth; # 6-table join, chain diff --git a/mysql-test/t/group_by.test b/mysql-test/t/group_by.test index 61be676bb11..78a319f8f84 100644 --- a/mysql-test/t/group_by.test +++ b/mysql-test/t/group_by.test @@ -400,15 +400,20 @@ set big_tables=0; # Test of GROUP BY ... ORDER BY NULL optimization # +SET @save_optimizer_use_condition_selectivity=@@optimizer_use_condition_selectivity,@save_optimizer_switch=@@optimizer_switch; +SET optimizer_switch='outer_join_with_cache=off',@@optimizer_use_condition_selectivity=1; create table t1 (a int not null, b int not null); insert into t1 values (1,1),(1,2),(3,1),(3,2),(2,2),(2,1); create table t2 (a int not null, b int not null, key(a)); insert into t2 values (1,3),(3,1),(2,2),(1,1); select t1.a,t2.b from t1,t2 where t1.a=t2.a group by t1.a,t2.b; +--sorted_result select t1.a,t2.b from t1,t2 where t1.a=t2.a group by t1.a,t2.b ORDER BY NULL; explain select t1.a,t2.b from t1,t2 where t1.a=t2.a group by t1.a,t2.b; explain select t1.a,t2.b from t1,t2 where t1.a=t2.a group by t1.a,t2.b ORDER BY NULL; drop table t1,t2; +SET @@optimizer_use_condition_selectivity=@save_optimizer_use_condition_selectivity,@@optimizer_switch=@save_optimizer_switch; + # # group function arguments in some functions diff --git a/mysql-test/t/group_min_max.test b/mysql-test/t/group_min_max.test index e8245dd2898..7cea21df56b 100644 --- a/mysql-test/t/group_min_max.test +++ b/mysql-test/t/group_min_max.test @@ -3,6 +3,8 @@ # The queries in this file test query execution via QUICK_GROUP_MIN_MAX_SELECT. # +--source include/default_optimizer_switch.inc + # # TODO: # Add queries with: diff --git a/mysql-test/t/handlersocket.opt b/mysql-test/t/handlersocket.opt new file mode 100644 index 00000000000..8374626febe --- /dev/null +++ b/mysql-test/t/handlersocket.opt @@ -0,0 +1 @@ +--plugin-maturity=unknown diff --git a/mysql-test/t/host_cache_size_functionality.test b/mysql-test/t/host_cache_size_functionality.test index 5a7376cc5eb..db4f64fd493 100644 --- a/mysql-test/t/host_cache_size_functionality.test +++ b/mysql-test/t/host_cache_size_functionality.test @@ -31,13 +31,8 @@ echo '##' #################################################################### # Checking default value # #################################################################### -SELECT COUNT(@@GLOBAL.Host_Cache_Size); ---echo 1 Expected -#set @Default_host_cache_size=(select if(if(@@global.max_connections<500,128+@@global.max_connections,128+@@global.max_connections+floor((@@global.max_connections-500)/20))>2000,2000,if(@@global.max_connections<500,128+@@global.max_connections,128+@@global.max_connections+floor((@@global.max_connections-500)/20)))); -set @Default_host_cache_size=279; - -select @@global.Host_Cache_Size=@Default_host_cache_size; +select @@global.Host_Cache_Size > 0; --echo 1 Expected diff --git a/mysql-test/t/huge_frm-6224.test b/mysql-test/t/huge_frm-6224.test index 322abd01738..e53c0a4c6e3 100644 --- a/mysql-test/t/huge_frm-6224.test +++ b/mysql-test/t/huge_frm-6224.test @@ -4,6 +4,7 @@ # verify that huge frms are rejected during creation, not on opening # --source include/have_partition.inc +set @save_max_allowed_packet=@@max_allowed_packet; set global max_allowed_packet=1024*1024*10; connect con1,localhost,root; @@ -23,5 +24,4 @@ eval $a partition foo); connection default; disconnect con1; -set global max_allowed_packet=default; - +set global max_allowed_packet=@save_max_allowed_packet; diff --git a/mysql-test/t/index_intersect.test b/mysql-test/t/index_intersect.test index 1be963cb9e5..76d37b16c3e 100644 --- a/mysql-test/t/index_intersect.test +++ b/mysql-test/t/index_intersect.test @@ -1,3 +1,6 @@ +--source include/default_optimizer_switch.inc +--source include/default_charset.inc + --disable_warnings DROP TABLE IF EXISTS t1,t2,t3,t4; DROP DATABASE IF EXISTS world; diff --git a/mysql-test/t/index_merge_innodb.test b/mysql-test/t/index_merge_innodb.test index f959db3039a..11988d4529c 100644 --- a/mysql-test/t/index_merge_innodb.test +++ b/mysql-test/t/index_merge_innodb.test @@ -74,6 +74,7 @@ set optimizer_switch='derived_merge=off,derived_with_keys=off'; # We have to use FORCE INDEX here as Innodb gives inconsistent estimates # which causes different query plans. +--replace_column 9 # EXPLAIN SELECT COUNT(*) FROM (SELECT * FROM t1 FORCE INDEX(primary,idx) diff --git a/mysql-test/t/information_schema-big.test b/mysql-test/t/information_schema-big.test index 9212348649e..3a82bbf6dcb 100644 --- a/mysql-test/t/information_schema-big.test +++ b/mysql-test/t/information_schema-big.test @@ -26,7 +26,7 @@ SELECT t.table_name, c1.column_name c2.table_name = t.table_name AND c2.column_name LIKE '%SCHEMA%' ) - AND t.table_name NOT LIKE 'innodb%'; + AND t.table_name NOT LIKE 'innodb%' and t.table_name NOT LIKE "OPTIMIZER_TRACE%"; --sorted_result SELECT t.table_name, c1.column_name FROM information_schema.tables t @@ -42,4 +42,4 @@ SELECT t.table_name, c1.column_name c2.table_name = t.table_name AND c2.column_name LIKE '%SCHEMA%' ) - AND t.table_name NOT LIKE 'innodb%'; + AND t.table_name NOT LIKE 'innodb%' and t.table_name NOT LIKE "OPTIMIZER_TRACE%"; diff --git a/mysql-test/t/information_schema.test b/mysql-test/t/information_schema.test index 76a187e8c2e..20654a95717 100644 --- a/mysql-test/t/information_schema.test +++ b/mysql-test/t/information_schema.test @@ -17,6 +17,9 @@ # Save the initial number of concurrent sessions --source include/count_sessions.inc +--source include/default_optimizer_switch.inc +--source include/default_charset.inc + set global sql_mode=""; set local sql_mode=""; diff --git a/mysql-test/t/information_schema_parameters.test b/mysql-test/t/information_schema_parameters.test index 0563941c17c..3a226b38fa0 100644 --- a/mysql-test/t/information_schema_parameters.test +++ b/mysql-test/t/information_schema_parameters.test @@ -7,6 +7,8 @@ # Last modified: 2007-12-03 #------------------------------------------------------------------------------ +--source include/default_charset.inc + ############################################################################### # Testcase parameters.1: Verify INFORMATION_SCHEMA.PARAMETERS view has the # following structure: diff --git a/mysql-test/t/information_schema_routines.test b/mysql-test/t/information_schema_routines.test index 190410c2b82..a07e54cd70b 100644 --- a/mysql-test/t/information_schema_routines.test +++ b/mysql-test/t/information_schema_routines.test @@ -56,6 +56,8 @@ ################################################################################ set sql_mode=""; set sql_mode=""; +--source include/default_charset.inc + -- echo # ========== routines.1 ========== USE INFORMATION_SCHEMA; --replace_result ENGINE=MyISAM "" ENGINE=MARIA "" ENGINE=Aria "" " PAGE_CHECKSUM=1" "" " PAGE_CHECKSUM=0" "" diff --git a/mysql-test/t/information_schema_stats.test b/mysql-test/t/information_schema_stats.test index c7f39894ce7..49d46ee437d 100644 --- a/mysql-test/t/information_schema_stats.test +++ b/mysql-test/t/information_schema_stats.test @@ -1,6 +1,7 @@ # # MDEV-8633: information_schema.index_statistics doesn't delete item when drop table indexes or drop table; # +set @save_userstat=@@global.userstat; set global userstat=1; create table just_a_test(id int,first_name varchar(10),last_name varchar(10),address varchar(100),phone bigint,email varchar(30), state varchar(30)); insert into just_a_test values(1,'fa','la','china_a',11111111,'fa_la@163.com','California'), @@ -43,4 +44,4 @@ select * from information_schema.table_statistics where table_schema='test' and drop table just_a_test; select * from information_schema.index_statistics where table_schema='test' and table_name='just_a_test'; select * from information_schema.table_statistics where table_schema='test' and table_name='just_a_test'; -set global userstat=0; +set global userstat=@save_userstat; diff --git a/mysql-test/t/init_connection_query_cache.test b/mysql-test/t/init_connection_query_cache.test index 4d83304163e..5a5c7dcef4b 100644 --- a/mysql-test/t/init_connection_query_cache.test +++ b/mysql-test/t/init_connection_query_cache.test @@ -4,6 +4,7 @@ --echo # MDEV-4520: Assertion `0' fails in Query_cache::end_of_result on --echo # concurrent drop event and event execution --echo # +set @save_query_cache_size=@@query_cache_size; set GLOBAL query_cache_size=1355776; create user mysqltest1@localhost; @@ -23,4 +24,4 @@ drop user mysqltest1@localhost; drop table t1; -set GLOBAL query_cache_size=default; +set GLOBAL query_cache_size=@save_query_cache_size; diff --git a/mysql-test/t/innodb_ext_key.test b/mysql-test/t/innodb_ext_key.test index 4104ac5f787..8def57ad377 100644 --- a/mysql-test/t/innodb_ext_key.test +++ b/mysql-test/t/innodb_ext_key.test @@ -784,6 +784,8 @@ drop table t0,t1,t2; --echo # MDEV-11196: Error:Run-Time Check Failure #2 - Stack around the variable 'key_buff' --echo # was corrupted, server crashes in opt_sum_query +SET @save_optimizer_use_condition_selectivity=@@optimizer_use_condition_selectivity,@@optimizer_use_condition_selectivity=1; + CREATE TABLE t1 ( pk INT, f1 VARCHAR(3), @@ -822,3 +824,4 @@ INSERT INTO t1 VALUES (1,2,'2','abc'),(2,3,'3','def'); explain format= json select * from t1 force index(k1) where f2 <= 5 and pk2 <=5 and pk1 = 'abc' and f1 <= '3'; drop table t1; +SET optimizer_use_condition_selectivity=@save_optimizer_use_condition_selectivity; diff --git a/mysql-test/t/innodb_icp.test b/mysql-test/t/innodb_icp.test index acb8238e01f..83b0f619349 100644 --- a/mysql-test/t/innodb_icp.test +++ b/mysql-test/t/innodb_icp.test @@ -3,6 +3,7 @@ # --source include/have_innodb.inc +--source include/default_optimizer_switch.inc set @save_storage_engine= @@storage_engine; set storage_engine=InnoDB; diff --git a/mysql-test/t/join.test b/mysql-test/t/join.test index 4ea6b56bc0b..31eee0a7d5e 100644 --- a/mysql-test/t/join.test +++ b/mysql-test/t/join.test @@ -1,5 +1,6 @@ # # Initialization +--source include/default_optimizer_switch.inc --disable_warnings drop table if exists t1,t2,t3; drop view if exists v1,v2; diff --git a/mysql-test/t/join_cache.test b/mysql-test/t/join_cache.test index ba5afafcf8b..9576d598125 100644 --- a/mysql-test/t/join_cache.test +++ b/mysql-test/t/join_cache.test @@ -2,15 +2,22 @@ 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; +set @save_join_buffer_space_limit=@@join_buffer_space_limit; +set @save_join_buffer_size=@@join_buffer_size; +set @save_expensive_subquery_limit=@@expensive_subquery_limit; -set @save_optimizer_switch=@@optimizer_switch; set @@optimizer_switch='optimize_join_buffer_size=on'; -set optimizer_switch='semijoin=on,firstmatch=on,loosescan=on'; +set @@optimizer_switch='semijoin=on,firstmatch=on,loosescan=on'; set @@optimizer_switch='semijoin_with_cache=on'; set @@optimizer_switch='outer_join_with_cache=on'; -set optimizer_switch='mrr=on,mrr_sort_keys=on,index_condition_pushdown=on'; +set @@optimizer_switch='mrr=on,mrr_sort_keys=on,index_condition_pushdown=on'; +set @local_optimizer_switch=@@optimizer_switch; -set @local_join_cache_test_optimizer_switch_default=@@optimizer_switch; set names utf8; CREATE DATABASE world; @@ -318,11 +325,8 @@ SELECT City.Name, Country.Name, CountryLanguage.Language CountryLanguage.Percentage > 50 AND LENGTH(Language) < LENGTH(City.Name) - 2; -set join_cache_level=default; -set join_buffer_size=default; - -show variables like 'join_buffer_size'; -show variables like 'join_cache_level'; +set join_cache_level=@save_join_cache_level; +set join_buffer_size=@save_join_buffer_size; DROP DATABASE world; @@ -911,11 +915,8 @@ SELECT Name FROM City WHERE City.Country IN (SELECT Code FROM Country WHERE Country.Name LIKE 'L%') AND City.Population > 100000; -set join_cache_level=default; -set join_buffer_size=default; - -show variables like 'join_buffer_size'; -show variables like 'join_cache_level'; +set join_cache_level=@save_join_cache_level; +set join_buffer_size=@save_join_buffer_size; set join_cache_level=1; @@ -934,7 +935,7 @@ SELECT City.Name, Country.Name FROM City,Country SELECT City.Name, Country.Name FROM City,Country WHERE City.Country=Country.Code AND City.Population > 3000000; -set join_buffer_size=default; +set join_buffer_size=@save_join_buffer_size; set join_cache_level=6; @@ -964,8 +965,8 @@ SELECT City.Name, Country.Name, Country.PopulationBar FROM City,Country WHERE City.Country=Country.Code AND Country.Name LIKE 'L%' AND City.Population > 100000; -set join_cache_level=default; -set join_buffer_size=default; +set join_cache_level=@save_join_cache_level; +set join_buffer_size=@save_join_buffer_size; --echo # @@ -999,7 +1000,7 @@ SELECT Country.Name, Country.Population, City.Name, City.Population WHERE Country.Name LIKE 'C%' AND Country.Population > 10000000; set @@optimizer_use_condition_selectivity=@save_optimizer_use_condition_selectivity; set @@use_stat_tables=@save_use_stat_tables; -set join_cache_level=default; +set @@join_cache_level=@save_join_cache_level; DROP DATABASE world; @@ -1272,8 +1273,8 @@ DROP TABLE t1,t2; --echo # Bug #40134: outer join with not exists optimization and join buffer --echo # -set join_cache_level=default; -set join_buffer_size=default; +set join_cache_level=@save_join_cache_level; +set join_buffer_size=@save_join_buffer_size; CREATE TABLE t1 (a int NOT NULL); INSERT INTO t1 VALUES (2), (4), (3), (5), (1); @@ -1292,8 +1293,8 @@ SELECT * FROM t1 LEFT JOIN t2 ON t1.a=t2.a WHERE t2.b IS NULL; DROP TABLE t1, t2; -set join_cache_level=default; -set join_buffer_size=default; +set join_cache_level=@save_join_cache_level; +set join_buffer_size=@save_join_buffer_size; --echo # --echo # BUG#40136: Group by is ignored when join buffer is used for an outer join @@ -1335,7 +1336,7 @@ SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b FROM t2 LEFT JOIN (t3, t4) ON t2.b=t4.b WHERE t3.a+2<t2.a OR t3.c IS NULL; -set join_cache_level=default; +set join_cache_level=@save_join_cache_level; DROP TABLE t2, t3, t4; --echo # @@ -1353,7 +1354,7 @@ select * from t1 left join t2 on t1.a=t2.a; explain select * from t1 left join t2 on t1.a=t2.a where t2.c=102 or t2.c is null; select * from t1 left join t2 on t1.a=t2.a where t2.c=102 or t2.c is null; -set join_cache_level=default; +set join_cache_level=@save_join_cache_level; drop table t1, t2; --echo # @@ -1374,7 +1375,7 @@ select * from t1 left join t2 on (1=0) where a=40; set join_cache_level=0; explain select * from t1 left join t2 on (1=0); -set join_cache_level=default; +set join_cache_level=@save_join_cache_level; drop table t1, t2; --echo # @@ -1418,8 +1419,8 @@ set join_buffer_size=1024; EXPLAIN SELECT AVG(c) FROM t1,t2 WHERE t1.a=t2.b; SELECT AVG(c) FROM t1,t2 WHERE t1.a=t2.b; -set join_buffer_size=default; -set join_cache_level=default; +set join_buffer_size=@save_join_buffer_size; +set join_cache_level=@save_join_cache_level; DROP TABLE t1, t2; @@ -1465,8 +1466,8 @@ SELECT COUNT(*) FROM t1,t2,t3 WHERE t1.a=t2.a AND t2.a=t3.a AND t1.b IS NULL AND t2.b IS NULL AND t3.b IS NULL; -set join_buffer_size=default; -set join_cache_level=default; +set join_buffer_size=@save_join_buffer_size; +set join_cache_level=@save_join_cache_level; DROP TABLE t1,t2,t3; @@ -1536,8 +1537,8 @@ SELECT t1.a, t2.a, t3.a, t2.b, t3.b, t3.val FROM (t1,t2) LEFT JOIN t3 ON (t1.a=t3.a AND t2.b=t3.b) WHERE t1.a=t2.a; -set join_buffer_size=default; -set join_cache_level=default; +set join_buffer_size=@save_join_buffer_size; +set join_cache_level=@save_join_cache_level; DROP TABLE t1,t2,t3; @@ -1594,7 +1595,7 @@ where t1.f1=t2.f1 and t2.f2 between t1.f1 and t2.f2; show status like "Handler_icp%"; drop table t1,t2; -set join_cache_level=default; +set join_cache_level=@save_join_cache_level; --echo # --echo # Bug #42955: join with GROUP BY/ORDER BY and when BKA is enabled @@ -1628,7 +1629,7 @@ select t1.id1 from t1 join t2 on t1.id1=t2.id1 select t1.id1 from t1 join t2 on t1.id1=t2.id1 where t1.d=3 and t2.id2 > 200 order by t1.id1; -set join_cache_level=default; +set join_cache_level=@save_join_cache_level; drop table t1,t2; @@ -1692,7 +1693,7 @@ select t1.a, t1.b, t1.c, t1.d, t2.e, t3.f, t4.g from t1,t2,t3,t4 select t1.a, t1.b, t1.c, t1.d, t2.e, t3.f, t4.g from t1,t2,t3,t4 where t2.b=t1.b and t3.d=t1.d and t4.c=t1.c; -set join_cache_level=default; +set join_cache_level=@save_join_cache_level; drop table t1,t2,t3,t4; @@ -2081,8 +2082,8 @@ SELECT STRAIGHT_JOIN t1.id1, t1.num3, t3.text1, t3.id4, t2.id3, t4.dummy WHERE t1.id1=t5.id1 AND t1.id2=t5.id2 and t4.id2=t1.id2 AND t5.enum2='Active' AND t3.id4=t2.id4 AND t2.id3=t1.id3 AND t3.text1<'D'; -set join_buffer_size=default; -set join_cache_level=default; +set join_buffer_size=@save_join_buffer_size; +set join_cache_level=@save_join_cache_level; DROP TABLE t1,t2,t3,t4,t5; @@ -2153,7 +2154,7 @@ ORDER BY t1.int_key; DROP TABLE t1,t2; -SET join_cache_level=default; +SET join_cache_level=@save_join_cache_level; --echo # --echo # Regression test for @@ -2216,7 +2217,7 @@ set join_cache_level=6; SELECT t1.*, t2.*, LENGTH(t2.c1), LENGTH(t2.c2) FROM t1,t2 WHERE t1.c2=LENGTH(t2.c2) and t1.c1=LENGTH(t2.c1); -set join_cache_level=default; +set join_cache_level=@save_join_cache_level; DROP TABLE t1,t2; @@ -2242,7 +2243,7 @@ set join_cache_level=2; explain select t1.* from t1,t2,t3; select t1.* from t1,t2,t3; -set join_cache_level=default; +set join_cache_level=@save_join_cache_level; drop table t1,t2,t3; @@ -2271,7 +2272,7 @@ SELECT t3.a FROM t1,t2,t3 WHERE t1.a = t3.a AND t1.b = t3.b; DROP TABLE t1,t2,t3; -set join_cache_level=default; +set join_cache_level=@save_join_cache_level; --echo # --echo # Bug #51084: Batched key access crashes for SELECT with @@ -2313,7 +2314,7 @@ SELECT COUNT(*) FROM (t2 JOIN t1) LEFT JOIN (t3 JOIN t4 ON t3.id = t4.carrier_id) ON t3.carrier = t1.carrier; -SET join_cache_level=default; +SET join_cache_level=@save_join_cache_level; DROP TABLE t1,t2,t3,t4; @@ -2367,7 +2368,7 @@ explain SELECT t2.a FROM t1 LEFT JOIN t2 ON t2.b = t1.b; --sorted_result SELECT t2.a FROM t1 LEFT JOIN t2 ON t2.b = t1.b; -set join_cache_level = default; +set join_cache_level=@save_join_cache_level; DROP TABLE t1,t2; --echo # @@ -2395,7 +2396,7 @@ SELECT t.a FROM t1 t, t1 s FORCE INDEX(idx) SELECT t.a FROM t1 t, t1 s FORCE INDEX(idx) WHERE s.pk AND s.a >= t.pk AND s.b = t.c; -set join_cache_level = default; +set join_cache_level=@save_join_cache_level; DROP TABLE t1; --echo # @@ -2426,7 +2427,7 @@ SELECT t1.a FROM t1 LEFT JOIN (t2 LEFT JOIN (t3 LEFT JOIN t4 ON 1) ON t2.a) ON 0 WHERE t1.a OR t4.a; -set join_cache_level = default; +set join_cache_level=@save_join_cache_level; DROP TABLE t1,t2,t3,t4; --echo # @@ -2484,8 +2485,8 @@ SELECT t1.i, t1.d, t1.v, t2.i, t2.d, t2.t, t2.v FROM t1,t2,t3 DROP TABLE t1,t2,t3; -SET SESSION join_cache_level=DEFAULT; -SET SESSION join_buffer_size=DEFAULT; +SET SESSION join_cache_level=@save_join_cache_level; +SET SESSION join_buffer_size=@save_join_buffer_size; --echo # @@ -2593,7 +2594,7 @@ WHERE t2.v <> t3.v AND t3.pk = t2.i AND t1.v = t3.v AND t1.pk*2<100 DROP TABLE t1,t2,t3; -SET SESSION join_cache_level=DEFAULT; +SET SESSION join_cache_level=@save_join_cache_level; --echo # --echo # Bug #668290: hash join with non-binary collations @@ -2634,7 +2635,7 @@ EXPLAIN SELECT t2.i FROM t1,t2 WHERE t1.cu = t2.cl ; SELECT t2.i FROM t1,t2 WHERE t1.cu = t2.cl ; -SET SESSION join_cache_level = DEFAULT; +SET SESSION join_cache_level=@save_join_cache_level; DROP TABLE t1,t2; @@ -2662,8 +2663,8 @@ EXPLAIN SELECT t1.a, t2.c FROM t1,t2 WHERE t1.a=t2.a AND t2.b=99; SELECT t1.a, t2.c FROM t1,t2 WHERE t1.a=t2.a AND t2.b=99; -SET SESSION join_cache_level = DEFAULT; -SET SESSION join_buffer_size = DEFAULT; +SET SESSION join_cache_level=@save_join_cache_level; +SET SESSION join_buffer_size=@save_join_buffer_size; DROP TABLE t1,t2; @@ -2712,7 +2713,7 @@ EXPLAIN SELECT t1.v,t2.i FROM t1,t2 WHERE t2.v = concat(t1.v, t1.v); SELECT t1.v,t2.i FROM t1,t2 WHERE t2.v = concat(t1.v, t1.v); -SET SESSION join_cache_level = DEFAULT; +SET SESSION join_cache_level=@save_join_cache_level; DROP TABLE t1,t2; @@ -2785,8 +2786,8 @@ SELECT t3.i FROM t1,t2,t3 SELECT t3.i FROM t1,t2,t3 WHERE t1.v = t2.v AND t3.v = t1.v AND t2.i <> 0; -SET SESSION join_cache_level = DEFAULT; -SET SESSION join_buffer_size = DEFAULT; +SET SESSION join_cache_level=@save_join_cache_level; +SET SESSION join_buffer_size=@save_join_buffer_size; DROP TABLE t1,t2,t3; @@ -2822,7 +2823,7 @@ EXPLAIN SELECT * FROM t1,t2 WHERE t2.a=t1.a; SELECT * FROM t1,t2 WHERE t2.a=t1.a; -SET SESSION join_cache_level = DEFAULT; +SET SESSION join_cache_level=@save_join_cache_level; DROP TABLE t1,t2; @@ -2844,8 +2845,8 @@ SELECT t3.a (t2 LEFT OUTER JOIN t3 ON t2.b = t3.b) ON t2.a = t1.b WHERE t3.a BETWEEN 3 AND 11 OR t1.a <= t2.c; -SET SESSION optimizer_switch = 'outer_join_with_cache=off'; -SET SESSION join_cache_level = DEFAULT; +SET SESSION optimizer_switch=@local_optimizer_switch; +SET SESSION join_cache_level=@save_join_cache_level; DROP TABLE t1,t2,t3; @@ -2868,8 +2869,8 @@ SELECT * FROM t2 LEFT JOIN ((t1 JOIN t3 ON t1.a = t3.pk) LEFT JOIN t4 ON 1) ON 1; -SET SESSION optimizer_switch = 'outer_join_with_cache=off'; -SET SESSION join_cache_level = DEFAULT; +SET SESSION optimizer_switch=@local_optimizer_switch; +SET SESSION join_cache_level=@save_join_cache_level; DROP TABLE t1,t2,t3,t4; @@ -2895,8 +2896,8 @@ EXPLAIN SELECT * FROM t2 LEFT JOIN t1 ON t2.a <> 0 WHERE t1.a <> 0 OR t2.pk < 9; SELECT * FROM t2 LEFT JOIN t1 ON t2.a <> 0 WHERE t1.a <> 0 OR t2.pk < 9; -SET SESSION optimizer_switch = 'outer_join_with_cache=off'; -SET SESSION join_cache_level = DEFAULT; +SET SESSION optimizer_switch=@local_optimizer_switch; +SET SESSION join_cache_level=@save_join_cache_level; DROP TABLE t1,t2; @@ -2955,8 +2956,8 @@ SELECT * FROM ((t1 LEFT JOIN (t2 JOIN t3 ON t2.c2 = t3.a3) ON t1.pk = t2.d2) LEFT JOIN t4 ON t1.a1 = t4.a4) LEFT JOIN t5 ON t3.a3 = t5.a5; -SET SESSION optimizer_switch = 'outer_join_with_cache=off'; -SET SESSION join_cache_level = DEFAULT; +SET SESSION optimizer_switch=@local_optimizer_switch; +SET SESSION join_cache_level=@save_join_cache_level; DROP TABLE t1,t2,t3,t4,t5; @@ -3001,8 +3002,8 @@ SELECT * FROM ((t2 JOIN t3 ON t2.a2 = t3.b3) JOIN t4 ON t4.b4 <> 0) ON t1.c1 = t3.c3 WHERE t3.a3 IS NULL; -SET SESSION optimizer_switch = 'outer_join_with_cache=off'; -SET SESSION join_cache_level = DEFAULT; +SET SESSION optimizer_switch=@local_optimizer_switch; +SET SESSION join_cache_level=@save_join_cache_level; DROP TABLE t1,t2,t3,t4; @@ -3031,8 +3032,8 @@ EXPLAIN SELECT * FROM t1 LEFT JOIN t2 JOIN t3 ON t3.a3 = t2.a2 ON t3.b3 <> 0; SELECT * FROM t1 LEFT JOIN t2 JOIN t3 ON t3.a3 = t2.a2 ON t3.b3 <> 0; -SET SESSION optimizer_switch = 'outer_join_with_cache=off'; -SET SESSION join_cache_level = DEFAULT; +SET SESSION optimizer_switch=@local_optimizer_switch; +SET SESSION join_cache_level=@save_join_cache_level; DROP TABLE t1,t2,t3; @@ -3076,8 +3077,8 @@ SELECT t4.a4, t5.b5 FROM ((t1 LEFT JOIN (t2 JOIN t3 ON t2.a2 = t3.a3) ON t2.b2 = t1.a1) LEFT JOIN t4 ON t4.a4 <> 0) LEFT JOIN t5 ON t5.a5 = t2.a2; -SET SESSION optimizer_switch = 'outer_join_with_cache=off'; -SET SESSION join_cache_level = DEFAULT; +SET SESSION optimizer_switch=@local_optimizer_switch; +SET SESSION join_cache_level=@save_join_cache_level; DROP TABLE t1,t2,t3,t4,t5; @@ -3104,7 +3105,7 @@ EXPLAIN SELECT * FROM t1,t2 WHERE t1.a=t2.a; SELECT * FROM t1,t2 WHERE t1.a=t2.a; -SET SESSION join_cache_level = DEFAULT; +SET SESSION join_cache_level=@save_join_cache_level; DROP TABLE t1,t2; @@ -3138,8 +3139,8 @@ SELECT * FROM t1,t2 SELECT * FROM t1,t2 WHERE t1.f1 = t2.f4 AND (t1.f3 = 1 AND t2.f3 = 4 OR t1.f3 = 2 AND t2.f3 = 6); -SET SESSION join_cache_level = DEFAULT; -SET SESSION optimizer_switch = @local_join_cache_test_optimizer_switch_default; +SET SESSION join_cache_level=@save_join_cache_level; +SET SESSION optimizer_switch=@local_optimizer_switch; DROP TABLE t1,t2; @@ -3165,7 +3166,7 @@ EXPLAIN SELECT * FROM t1,t2 WHERE t2.f3 = t1.f2 AND t1.f1 IN (9, 0, 100) ORDER BY t1.f2 LIMIT 1; SELECT * FROM t1,t2 WHERE t2.f3 = t1.f2 AND t1.f1 IN (9, 0 ,100) ORDER BY t1.f2 LIMIT 1; -SET SESSION optimizer_switch = @local_join_cache_test_optimizer_switch_default; +SET SESSION optimizer_switch=@local_optimizer_switch; SET SESSION optimizer_switch = 'index_condition_pushdown=on'; EXPLAIN SELECT * FROM t1,t2 @@ -3173,7 +3174,7 @@ EXPLAIN SELECT * FROM t1,t2 SELECT * FROM t1,t2 WHERE t2.f3 = t1.f2 AND t1.f1 IN (9, 0 ,100) ORDER BY t1.f2 LIMIT 1; -SET SESSION optimizer_switch = @local_join_cache_test_optimizer_switch_default; +SET SESSION optimizer_switch=@local_optimizer_switch; DROP TABLE t1,t2; @@ -3202,8 +3203,7 @@ EXPLAIN SELECT * FROM t1,t2 WHERE t1.a < 3 and t2.a IS NULL; SELECT * FROM t1,t2 WHERE t1.a < 3 and t2.a IS NULL; - -SET SESSION join_cache_level = DEFAULT; +SET SESSION join_cache_level=@save_join_cache_level; DROP TABLE t1,t2; @@ -3229,7 +3229,7 @@ EXPLAIN SELECT * FROM t1,t2 WHERE t2.f1 = t1.f1; SELECT * FROM t1,t2 WHERE t2.f1 = t1.f1; -SET SESSION join_cache_level = DEFAULT; +SET SESSION join_cache_level=@save_join_cache_level; DROP TABLE t1,t2; @@ -3259,8 +3259,8 @@ EXPLAIN SELECT a FROM t1,t2 WHERE t2.v = t1.v ; SELECT a FROM t1,t2 WHERE t2.v = t1.v ; -SET SESSION join_cache_level = DEFAULT; -SET SESSION join_buffer_size = DEFAULT; +SET SESSION join_cache_level=@save_join_cache_level; +SET SESSION join_buffer_size=@save_join_buffer_size; DROP TABLE t1,t2; @@ -3293,10 +3293,12 @@ SELECT * FROM (SELECT DISTINCT * FROM t1) t SELECT * FROM (SELECT DISTINCT * FROM t1) t WHERE t.a IN (SELECT t2.a FROM t2); -SET SESSION join_cache_level = DEFAULT; - DROP TABLE t1, t2; +SET SESSION join_cache_level=@save_join_cache_level; + +# Note that next tests are run with same optimizer_switch as previous one! + --echo # --echo # Bug #887479: join_cache_level=3 + semijoin=on --echo # @@ -3307,7 +3309,7 @@ INSERT INTO t1 VALUES (3914,17), (3710,5), (3888,20); CREATE TABLE t2 (c int, KEY (c)); INSERT INTO t2 VALUES (27), (17), (33), (20), (3), (7), (18), (2); -SET @tmp887479_optimizer_switch=@@optimizer_switch; +SET @tmp_optimizer_switch=@@optimizer_switch; SET SESSION optimizer_switch='semijoin=on'; SET SESSION optimizer_switch='semijoin_with_cache=on'; @@ -3321,8 +3323,8 @@ EXPLAIN SELECT * FROM t1 WHERE (t1.b) IN (SELECT c FROM t2); SELECT * FROM t1 WHERE (t1.b) IN (SELECT c FROM t2); -SET SESSION join_cache_level = DEFAULT; -SET optimizer_switch=@tmp887479_optimizer_switch; +SET SESSION join_cache_level=@save_join_cache_level; +set @@optimizer_switch=@tmp_optimizer_switch; DROP TABLE t1,t2; @@ -3361,8 +3363,8 @@ SELECT t1.* FROM t1,t2 WHERE (t1.b,t2.b) IN (SELECT t3.b,t4.b FROM t3,t4 WHERE t4.c=t3.b) AND t1.a = 1; -SET SESSION join_cache_level = DEFAULT; -SET optimizer_switch=@tmp_optimizer_switch; +SET SESSION join_cache_level=@save_join_cache_level; +set @@optimizer_switch=@local_optimizer_switch; DROP TABLE t1,t2,t3,t4; @@ -3377,11 +3379,9 @@ INSERT INTO t2 VALUES (8), (7); CREATE TABLE t3 (a int); INSERT INTO t3 VALUES (8), (7); -SET @tmp_optimizer_switch=@@optimizer_switch; -set optimizer_switch=default; set @@optimizer_switch='semijoin_with_cache=off'; set @@optimizer_switch='outer_join_with_cache=off'; -SET optimizer_switch='derived_merge=off,derived_with_keys=off'; +set @@optimizer_switch='derived_merge=off,derived_with_keys=off'; SET join_cache_level=0; EXPLAIN @@ -3390,8 +3390,8 @@ SELECT * FROM (SELECT t1.* FROM t1, t2) t WHERE t.a IN (SELECT * FROM t3); SELECT * FROM ( SELECT ta.* FROM t1 AS ta, t1 ) tb WHERE a IN ( SELECT * FROM t1 ); -SET SESSION join_cache_level = DEFAULT; -SET optimizer_switch=@tmp_optimizer_switch; +SET SESSION join_cache_level=@save_join_cache_level; +set @@optimizer_switch=@local_optimizer_switch; DROP TABLE t1,t2,t3; @@ -3410,8 +3410,8 @@ CREATE TABLE t3 (c int, d int); INSERT INTO t3 VALUES (8,10); INSERT INTO t3 VALUES (9,11); -SET @tmp_optimizer_switch=@@optimizer_switch; set @@optimizer_switch='semijoin_with_cache=on'; +set @@optimizer_switch='firstmatch=off'; SET join_cache_level=1; EXPLAIN @@ -3428,8 +3428,8 @@ EXPLAIN SELECT * FROM t1,t2 WHERE b IN (SELECT d FROM t3 WHERE c <= t2.c) ORDER BY a,d; SELECT * FROM t1,t2 WHERE b IN (SELECT d FROM t3 WHERE c <= t2.c) ORDER BY a,d; -SET SESSION join_cache_level = DEFAULT; -SET optimizer_switch=@tmp_optimizer_switch; +SET SESSION join_cache_level=@save_join_cache_level; +set @@optimizer_switch=@local_optimizer_switch; DROP TABLE t1,t2,t3; @@ -3451,7 +3451,6 @@ INSERT INTO t4 VALUES (19,11,10), (17,12,18), (12,13,15), (14,12,19), (18,13,18), (13,14,11), (15,15,14); -SET @tmp_optimizer_switch=@@optimizer_switch; SET @@optimizer_switch='semijoin=on'; SET @@optimizer_switch='firstmatch=off'; SET @@optimizer_switch='mrr=off'; @@ -3491,8 +3490,8 @@ SELECT * FROM t1,t2 t2.a BETWEEN 4 and 5 ORDER BY t2.b; -SET join_cache_level = DEFAULT; -SET optimizer_switch=@tmp_optimizer_switch; +set join_cache_level=@save_join_cache_level; +set @@optimizer_switch=@local_optimizer_switch; DROP TABLE t1,t2,t3,t4; @@ -3517,11 +3516,10 @@ insert into t3 values (2,5), (2,6), (2,7), (2,8), (3,1), (3,2), (3,9); -set @tmp_optimizer_switch=@@optimizer_switch; -set @@optimizer_switch='semijoin=on'; -set optimizer_switch='materialization=off'; -set optimizer_switch='loosescan=off,firstmatch=off'; -set optimizer_switch='mrr_sort_keys=off'; +set @@optimizer_switch='semijoin=on'; +set @@optimizer_switch='materialization=off'; +set @@optimizer_switch='loosescan=off,firstmatch=off'; +set @@optimizer_switch='mrr_sort_keys=off'; set join_cache_level=7; create table t4 (uid int primary key, name varchar(128), index(name)); @@ -3538,8 +3536,8 @@ select name from t2, t1 where t1.uid in (select t4.uid from t4, t3 where t3.uid=1 and t4.uid=t3.fid) and t2.uid=t1.fid; -set join_cache_level = default; -set optimizer_switch=@tmp_optimizer_switch; +set join_cache_level=@save_join_cache_level; +set @@optimizer_switch=@local_optimizer_switch; drop table t1,t2,t3,t4; @@ -3555,9 +3553,8 @@ INSERT INTO t1 VALUES (1), (2); INSERT INTO t2 VALUES (6); INSERT INTO t3 VALUES (1), (2); -set @tmp_optimizer_switch=@@optimizer_switch; -set @@optimizer_switch='semijoin=on'; -set optimizer_switch='materialization=on'; +set @@optimizer_switch='semijoin=on'; +set @@optimizer_switch='materialization=on'; set join_cache_level=0; EXPLAIN @@ -3573,8 +3570,8 @@ SELECT * FROM t1 WHERE t1.i IN SELECT * FROM t1 WHERE t1.i IN (SELECT t3.i FROM t3 LEFT JOIN t2 ON t2.i=t3.i); -set join_cache_level = default; -set optimizer_switch=@tmp_optimizer_switch; +set join_cache_level=@save_join_cache_level; +set @@optimizer_switch=@local_optimizer_switch; DROP TABLE t1,t2,t3; @@ -3592,9 +3589,8 @@ INSERT INTO t2 VALUES ('we',4,NULL), ('v',1305673728,6); CREATE TABLE t3 (b int, c int); INSERT INTO t3 VALUES (4,4); -set @tmp_optimizer_switch=@@optimizer_switch; -set optimizer_switch='semijoin=off'; -set optimizer_switch='materialization=off'; +set @@optimizer_switch='semijoin=off'; +set @@optimizer_switch='materialization=off'; set join_cache_level=0; EXPLAIN @@ -3615,8 +3611,8 @@ SELECT * FROM t1 WHERE a IN (SELECT t2.a FROM t2 LEFT JOIN t3 ON t2.b = t3.b WHERE t2.c < 10 OR t3.c > 1); -set join_cache_level = default; -set optimizer_switch=@tmp_optimizer_switch; +set join_cache_level=@save_join_cache_level; +set @@optimizer_switch=@local_optimizer_switch; DROP TABLE t1,t2,t3; @@ -3637,21 +3633,20 @@ INSERT INTO t2 VALUES CREATE TABLE t3 (b int, c int); INSERT INTO t3 VALUES (32, 302), (42,400), (30,300); -set @tmp_optimizer_switch=@@optimizer_switch; -set optimizer_switch='optimize_join_buffer_size=off'; +set @@optimizer_switch='optimize_join_buffer_size=off'; +set @@optimizer_switch='outer_join_with_cache=on'; set join_buffer_space_limit=4096; set join_buffer_size=4096*2; set join_cache_level=2; -set optimizer_switch='outer_join_with_cache=on'; EXPLAIN SELECT * FROM t1, t2 LEFT JOIN t3 ON t2.b=t3.b WHERE t1.a=t2.a; SELECT * FROM t1, t2 LEFT JOIN t3 ON t2.b=t3.b WHERE t1.a=t2.a; -set join_buffer_space_limit=default; -set join_buffer_size=default; -set join_cache_level=default; -set optimizer_switch=@tmp_optimizer_switch; +set join_buffer_space_limit=@save_join_buffer_space_limit; +set join_buffer_size=@save_join_buffer_size; +set join_cache_level=@save_join_cache_level; +set @@optimizer_switch=@local_optimizer_switch; DROP TABLE t1,t2,t3; @@ -3688,8 +3683,7 @@ INSERT INTO t2 VALUES (NULL); CREATE TABLE t3 (c int) ENGINE=Aria; INSERT INTO t3 VALUES (NULL); -set @tmp_optimizer_switch=@@optimizer_switch; -set optimizer_switch = 'outer_join_with_cache=on,join_cache_incremental=on'; +set @@optimizer_switch = 'outer_join_with_cache=on,join_cache_incremental=on'; set join_buffer_size=128; EXPLAIN @@ -3699,12 +3693,14 @@ SELECT 1 AS c FROM t1 NATURAL LEFT JOIN t2 LEFT OUTER JOIN t3 ON 1 SELECT 1 AS c FROM t1 NATURAL LEFT JOIN t2 LEFT OUTER JOIN t3 ON 1 GROUP BY elt(t1.col282,1,t1.col280); -set join_buffer_size=default; -set optimizer_switch=@tmp_optimizer_switch; - DROP table t1,t2,t3; -set join_buffer_size= default; -set @@optimizer_switch=@save_optimizer_switch; +set join_buffer_size=@save_join_buffer_size; + +# +# --echo switch to use orginal test suite optimizer switch +# + +set @@optimizer_switch=@org_optimizer_switch,@local_optimizer_switch= @org_optimizer_switch; --echo # @@ -3853,8 +3849,8 @@ FROM ORDER BY col1; -set join_buffer_size=default; -set join_cache_level = default; +set join_buffer_size=@save_join_buffer_size; +set join_cache_level=@save_join_cache_level; DROP TABLE t1,t2; @@ -3877,11 +3873,10 @@ INSERT INTO t2 SELECT * FROM t1; INSERT INTO t4 SELECT * FROM t1; INSERT INTO t5 SELECT * FROM t1; -set @save_optimizer_switch= @@optimizer_switch; SET join_cache_level = 6; SET join_buffer_size=4096; SET join_buffer_space_limit=4096; -SET optimizer_switch = 'join_cache_hashed=on,optimize_join_buffer_size=on'; +set @@optimizer_switch = 'join_cache_hashed=on,optimize_join_buffer_size=on'; let $q= SELECT * FROM t1 @@ -3896,10 +3891,10 @@ WHERE eval EXPLAIN $q; eval $q; -SET join_cache_level = default; -SET join_buffer_size = default; -SET join_buffer_space_limit= default; -set optimizer_switch=@save_optimizer_switch; +set join_cache_level=@save_join_cache_level; +SET join_buffer_size=@save_join_buffer_size; +SET join_buffer_space_limit=@save_join_buffer_space_limit; +set @@optimizer_switch=@local_optimizer_switch; DROP TABLE t1,t4,t5,t2; @@ -3932,13 +3927,12 @@ eval EXPLAIN EXTENDED $q; DROP TABLE t1,t2,temp; -SET join_cache_level = default; +set join_cache_level=@save_join_cache_level; --echo # --echo # MDEV-5123 Remove duplicated conditions pushed both to join_tab->select_cond and join_tab->cache_select->cond for blocked joins. --echo # -set join_cache_level=default; set expensive_subquery_limit=0; create table t1 (c1 int); @@ -3976,7 +3970,7 @@ where c1 = c2-0 and select @counter; drop table t1,t2,t3; -set expensive_subquery_limit=default; +set expensive_subquery_limit=@save_expensive_subquery_limit; --echo # --echo # MDEV-6071: EXPLAIN chooses to use join buffer while execution turns it down @@ -3989,12 +3983,10 @@ insert into t1 values explain select count(*) from t1, t1 t2 where t1.a=t2.a; set join_buffer_space_limit=1024*8; -select @@join_buffer_space_limit; -select @@join_buffer_size; explain select count(*) from t1, t1 t2 where t1.a=t2.a; -set join_buffer_space_limit=default; +set join_buffer_space_limit=@save_join_buffer_space_limit; drop table t1; @@ -4008,7 +4000,7 @@ SET join_cache_level = 3; explain SELECT * FROM INFORMATION_SCHEMA.PROFILING, mysql.user WHERE password_expired = PAGE_FAULTS_MINOR; -set join_cache_level=default; +set join_cache_level=@save_join_cache_level; # # MDEV-12580 Wrong query result in join when using an index (Version > "10.2.3") @@ -4020,7 +4012,7 @@ insert t2 values (4,1,1), (6,1,1); set join_buffer_size = 222222208; select f2 from t2,t1 where f2 = 0; drop table t1, t2; -set join_buffer_size = default; +set join_buffer_size=@save_join_buffer_size; -# The following command must be the last one the file +# The following command must be the last one in the file set @@optimizer_switch=@save_optimizer_switch; diff --git a/mysql-test/t/join_nested_jcl6.test b/mysql-test/t/join_nested_jcl6.test index 0e8646bceda..3c33c8fe0f3 100644 --- a/mysql-test/t/join_nested_jcl6.test +++ b/mysql-test/t/join_nested_jcl6.test @@ -9,7 +9,7 @@ set @@optimizer_switch='outer_join_with_cache=on'; set @@optimizer_switch='mrr=on,mrr_sort_keys=on,index_condition_pushdown=on'; set join_cache_level=6; -show variables like 'join_cache_level'; +set optimizer_search_depth=62; set @optimizer_switch_for_join_nested_test=@@optimizer_switch; set @join_cache_level_for_join_nested_test=@@join_cache_level; @@ -104,7 +104,6 @@ SELECT t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b DROP TABLE t5,t6,t7,t8; set join_cache_level=default; -show variables like 'join_cache_level'; set @@optimizer_switch=@save_optimizer_switch_jcl6; set @optimizer_switch_for_join_nested_test=NULL; diff --git a/mysql-test/t/join_outer.test b/mysql-test/t/join_outer.test index b242b42710b..c5b2c985ff7 100644 --- a/mysql-test/t/join_outer.test +++ b/mysql-test/t/join_outer.test @@ -8,7 +8,7 @@ drop table if exists t0,t1,t2,t3,t4,t5; --enable_warnings -SET @save_optimizer_switch=@@optimizer_switch; +SET @org_optimizer_switch=@@optimizer_switch; SET optimizer_switch=ifnull(@optimizer_switch_for_join_outer_test,'outer_join_with_cache=off'); if (`select @join_cache_level_for_join_outer_test is null`) { @@ -1588,7 +1588,7 @@ EXECUTE stmt; DEALLOCATE PREPARE stmt; -SET SESSION join_cache_level=default; +SET SESSION join_cache_level=2; DROP TABLE t1,t2,t3; @@ -2190,4 +2190,4 @@ DROP TABLE t1,t2,t3,t4; --echo # end of 10.1 tests -SET optimizer_switch=@save_optimizer_switch; +SET optimizer_switch=@org_optimizer_switch; diff --git a/mysql-test/t/join_outer_innodb.test b/mysql-test/t/join_outer_innodb.test index 67e9965a475..c26cd62fbc7 100644 --- a/mysql-test/t/join_outer_innodb.test +++ b/mysql-test/t/join_outer_innodb.test @@ -3,6 +3,7 @@ # --source include/have_innodb.inc +--source include/default_optimizer_switch.inc # # Test for bug #17164: ORed FALSE blocked conversion of outer join into join diff --git a/mysql-test/t/join_outer_jcl6.test b/mysql-test/t/join_outer_jcl6.test index e34cc615216..2f3db5b8c47 100644 --- a/mysql-test/t/join_outer_jcl6.test +++ b/mysql-test/t/join_outer_jcl6.test @@ -2,14 +2,15 @@ # Run join_outer.test with BKA enabled # +--source include/default_optimizer_switch.inc + set @save_optimizer_switch_jcl6=@@optimizer_switch; + set @@optimizer_switch='optimize_join_buffer_size=on'; set @@optimizer_switch='semijoin_with_cache=on'; set @@optimizer_switch='outer_join_with_cache=on'; -set optimizer_switch='mrr=on,mrr_sort_keys=on,index_condition_pushdown=on'; - -set join_cache_level=6; -show variables like 'join_cache_level'; +set @@optimizer_switch='mrr=on,mrr_sort_keys=on,index_condition_pushdown=on'; +set @@join_cache_level=6; set @optimizer_switch_for_join_outer_test=@@optimizer_switch; set @join_cache_level_for_join_outer_test=@@join_cache_level; @@ -17,7 +18,6 @@ set @join_cache_level_for_join_outer_test=@@join_cache_level; --source t/join_outer.test set join_cache_level=default; -show variables like 'join_cache_level'; set @@optimizer_switch=@save_optimizer_switch_jcl6; set @optimizer_switch_for_join_outer_test=NULL; diff --git a/mysql-test/t/limit_rows_examined.test b/mysql-test/t/limit_rows_examined.test index 815394aec5c..28b39a4caa1 100644 --- a/mysql-test/t/limit_rows_examined.test +++ b/mysql-test/t/limit_rows_examined.test @@ -2,6 +2,7 @@ # Tests for LIMIT ROWS EXAMINED, MDEV-28 # +--source include/default_optimizer_switch.inc call mtr.add_suppression("Sort aborted.*"); set @save_join_cache_level = @@join_cache_level; diff --git a/mysql-test/t/log_slow.test b/mysql-test/t/log_slow.test index edb1865b5ae..64fd8202985 100644 --- a/mysql-test/t/log_slow.test +++ b/mysql-test/t/log_slow.test @@ -2,6 +2,8 @@ # Testing of slow log query options # +set @@log_slow_verbosity=""; + select @@log_slow_filter; select @@log_slow_rate_limit; select @@log_slow_verbosity; diff --git a/mysql-test/t/log_state.test b/mysql-test/t/log_state.test index 5a08b8015f0..44a844a67b0 100644 --- a/mysql-test/t/log_state.test +++ b/mysql-test/t/log_state.test @@ -12,7 +12,7 @@ SET @old_general_log= @@global.general_log; SET @old_general_log_file= @@global.general_log_file; SET @old_slow_query_log= @@global.slow_query_log; SET @old_slow_query_log_file= @@global.slow_query_log_file; - +set @save_long_query_time=@@long_query_time; --disable_ps_protocol @@ -330,7 +330,7 @@ disconnect con1; connection default; # Reset global system variables to initial values if forgotten somewhere above. -SET GLOBAL long_query_time = DEFAULT; +SET GLOBAL long_query_time = @save_long_query_time; SET GLOBAL log_output = @old_log_output; SET global general_log = @old_general_log; SET global general_log_file = @old_general_log_file; diff --git a/mysql-test/t/log_tables.test b/mysql-test/t/log_tables.test index f822ec8d758..4ea8a7639ef 100644 --- a/mysql-test/t/log_tables.test +++ b/mysql-test/t/log_tables.test @@ -27,10 +27,6 @@ SET @saved_log_output = @@log_output; SET @saved_general_log = @@GLOBAL.general_log; SET @saved_slow_query_log = @@GLOBAL.slow_query_log; -SELECT @saved_long_query_time, @saved_log_output, @saved_general_log, @saved_slow_query_log; - - - # # Check that log tables work and we can do basic selects. This also # tests truncate, which works in a special mode with the log tables @@ -528,7 +524,7 @@ SELECT "My own slow query", sleep(2); SELECT "My own slow query", sleep(2); ## So we look for seq 2-4 ---replace_column 1 START_TIME 2 USER_HOST 3 QUERY_TIME +--replace_column 1 START_TIME 2 USER_HOST 3 QUERY_TIME 12 THREAD_ID SELECT * FROM mysql.slow_log WHERE seq >= 2 LIMIT 3; SET GLOBAL slow_query_log = 0; diff --git a/mysql-test/t/lowercase_table_qcache.test b/mysql-test/t/lowercase_table_qcache.test index ab05755bec1..bf24c8e9a1c 100644 --- a/mysql-test/t/lowercase_table_qcache.test +++ b/mysql-test/t/lowercase_table_qcache.test @@ -2,6 +2,7 @@ # # Test of query cache with --lower-case-table-names # +set @save_query_cache_size=@@query_cache_size; set GLOBAL query_cache_size=1355776; set GLOBAL query_cache_type=ON; set LOCAL query_cache_type=ON; @@ -28,7 +29,7 @@ select * from MySQL.db; enable_result_log; show status like "Qcache_queries_in_cache"; -set GLOBAL query_cache_size=default; +set GLOBAL query_cache_size=@save_query_cache_size; set GLOBAL query_cache_type=default; # End of 4.1 tests diff --git a/mysql-test/t/mdev13607.test b/mysql-test/t/mdev13607.test index 45fdb0a74d4..2d11312cd94 100644 --- a/mysql-test/t/mdev13607.test +++ b/mysql-test/t/mdev13607.test @@ -3,6 +3,7 @@ --echo # --source include/have_innodb.inc +--source include/default_optimizer_switch.inc CREATE TABLE t1 (id INT) ENGINE=InnoDB; INSERT INTO t1 VALUES diff --git a/mysql-test/t/mdev375.test b/mysql-test/t/mdev375.test index 759f7bd31f0..9e35190b927 100644 --- a/mysql-test/t/mdev375.test +++ b/mysql-test/t/mdev375.test @@ -3,6 +3,7 @@ # --source include/not_embedded.inc +set @save_log_warnings=@@log_warnings, @save_max_connections=@@max_connections; SET GLOBAL log_warnings=4; SET GLOBAL max_connections=10; @@ -28,5 +29,5 @@ SELECT 2; SELECT 0; show status like "Threads_connected"; -SET GLOBAL log_warnings=default; -SET GLOBAL max_connections=default; +SET GLOBAL log_warnings=@save_log_warnings; +SET GLOBAL max_connections=@save_max_connections; diff --git a/mysql-test/t/merge.test b/mysql-test/t/merge.test index 71812b29713..9bc15575d1e 100644 --- a/mysql-test/t/merge.test +++ b/mysql-test/t/merge.test @@ -6,9 +6,12 @@ --source include/count_sessions.inc # MERGE tables require MyISAM tables -let $default=`select @@global.storage_engine`; -set global storage_engine=myisam; -set session storage_engine=myisam; +set @save_default_storage_engine=@@global.storage_engine; +set global default_storage_engine=myisam; +set session default_storage_engine=myisam; + +# This test assumes a stable character set +--source include/default_charset.inc # Clean up resources used in this test case. --disable_warnings @@ -17,7 +20,6 @@ drop database if exists mysqltest; --enable_warnings let $MYSQLD_DATADIR= `select @@datadir`; - create table t1 (a int not null primary key auto_increment, message char(20)); create table t2 (a int not null primary key auto_increment, message char(20)); INSERT INTO t1 (message) VALUES ("Testing"),("table"),("t1"); @@ -1923,13 +1925,16 @@ set @a=concat("create table t_parent (a int) union(", @a, prepare stmt from @a; execute stmt; prepare stmt from "select * from t_parent"; ---error ER_NEED_REPREPARE +--disable_result_log +--error 0,ER_NEED_REPREPARE execute stmt; ---error ER_NEED_REPREPARE +--error 0,ER_NEED_REPREPARE execute stmt; ---error ER_NEED_REPREPARE +--error 0,ER_NEED_REPREPARE execute stmt; deallocate prepare stmt; +--enable_result_log + --echo # --echo # Create merge parent --echo # @@ -2974,7 +2979,7 @@ DROP TABLE m1; --disable_result_log --disable_query_log -eval set global storage_engine=$default; +set global default_storage_engine=@save_default_storage_engine; --enable_result_log --enable_query_log diff --git a/mysql-test/t/mrr_icp_extra.test b/mysql-test/t/mrr_icp_extra.test index 75ddc85b984..e2d25686c81 100644 --- a/mysql-test/t/mrr_icp_extra.test +++ b/mysql-test/t/mrr_icp_extra.test @@ -1,5 +1,8 @@ - # Generated by an ALTER TABLE in include/varchar.inc + +--source include/default_optimizer_switch.inc +--source include/default_charset.inc + call mtr.add_suppression("Can't find record in .*"); set @mrr_icp_extra_tmp=@@optimizer_switch; diff --git a/mysql-test/t/myisam.test b/mysql-test/t/myisam.test index c2b022ff091..0eb6a746ee0 100644 --- a/mysql-test/t/myisam.test +++ b/mysql-test/t/myisam.test @@ -2,6 +2,8 @@ # Test bugs in the MyISAM code # +--source include/default_optimizer_switch.inc + call mtr.add_suppression("Can't find record in '.*'"); call mtr.add_suppression("Table 't1' is marked as crashed and should be repaired"); diff --git a/mysql-test/t/myisam_explain_non_select_all.test b/mysql-test/t/myisam_explain_non_select_all.test index ccd4ebd6297..8b79a6bd3ca 100644 --- a/mysql-test/t/myisam_explain_non_select_all.test +++ b/mysql-test/t/myisam_explain_non_select_all.test @@ -2,6 +2,8 @@ # Run explain_non_select.inc on MyISAM with all of the so-called 6.0 features. # +--source include/default_optimizer_switch.inc + #--source include/have_semijoin.inc #--source include/have_materialization.inc #--source include/have_firstmatch.inc diff --git a/mysql-test/t/myisam_icp.test b/mysql-test/t/myisam_icp.test index 508c282b1dc..d1dc35ebba4 100644 --- a/mysql-test/t/myisam_icp.test +++ b/mysql-test/t/myisam_icp.test @@ -2,6 +2,7 @@ # ICP/MyISAM tests (Index Condition Pushdown) # +--source include/default_optimizer_switch.inc set @myisam_icp_tmp=@@optimizer_switch; set optimizer_switch='mrr=on,mrr_sort_keys=on,index_condition_pushdown=on'; diff --git a/mysql-test/t/myisam_mrr.test b/mysql-test/t/myisam_mrr.test index b15fdf60ce7..e3c758d3c10 100644 --- a/mysql-test/t/myisam_mrr.test +++ b/mysql-test/t/myisam_mrr.test @@ -8,6 +8,7 @@ drop table if exists t0, t1, t2, t3; set @myisam_mrr_tmp=@@optimizer_switch; set optimizer_switch='mrr=on,mrr_sort_keys=on,index_condition_pushdown=on'; +set optimizer_switch='optimize_join_buffer_size=off'; set @mrr_buffer_size_save= @@mrr_buffer_size; set mrr_buffer_size=79; diff --git a/mysql-test/t/myisam_recover.test b/mysql-test/t/myisam_recover.test index 316be56609b..9056b219148 100644 --- a/mysql-test/t/myisam_recover.test +++ b/mysql-test/t/myisam_recover.test @@ -2,6 +2,8 @@ call mtr.add_suppression("Table 't1' is marked as crashed and should be repaired"); +set @save_table_definition_cache=@@table_definition_cache; + --echo # --echo # Tests for corrupted MyISAM tables and MyISAMMRG tables with corrupted --echo # children.. @@ -104,11 +106,11 @@ unlock tables; prepare stmt from @drop_table_stmt; execute stmt; deallocate prepare stmt; -set @@global.table_definition_cache=default; set @@global.table_open_cache=@save_table_open_cache; disconnect con1; connection default; --enable_ps_protocol +set @@global.table_definition_cache=@save_table_definition_cache; --echo # --echo # 18075170 - sql node restart required to avoid deadlock after diff --git a/mysql-test/t/mysql.test b/mysql-test/t/mysql.test index 1a0d74970b3..1c65fe2190e 100644 --- a/mysql-test/t/mysql.test +++ b/mysql-test/t/mysql.test @@ -694,7 +694,7 @@ select count(*) from t1; truncate table t1; --exec $MYSQL --disable-local-infile -e "$ldli" select count(*) from t1; truncate table t1; --error 1 ---exec $MYSQL -e "/*q*/$ldli" +--exec $MYSQL --local-infile=0 -e "/*q*/$ldli" select count(*) from t1; truncate table t1; --exec $MYSQL --enable-local-infile -e "/*q*/$ldli" select count(*) from t1; truncate table t1; diff --git a/mysql-test/t/mysql_client_test.test b/mysql-test/t/mysql_client_test.test index d486a93a79d..8fbbbc1602e 100644 --- a/mysql-test/t/mysql_client_test.test +++ b/mysql-test/t/mysql_client_test.test @@ -5,6 +5,15 @@ # This test is slow on buildbot. --source include/big_test.inc +# Run test with default character set +--source include/default_charset.inc +SET @save_character_set_client= @@global.character_set_client; +SET @save_collation_connection= @@global.collation_connection; +SET @@global.character_set_server= @@character_set_server; +SET @@global.collation_server= @@collation_server; +SET @@global.character_set_client= @@character_set_server; +SET @@global.collation_connection= @@collation_server; + SET @old_general_log= @@global.general_log; SET @old_slow_query_log= @@global.slow_query_log; @@ -32,3 +41,7 @@ echo ok; SET @@global.general_log= @old_general_log; SET @@global.slow_query_log= @old_slow_query_log; +SET @@global.character_set_server= @save_character_set_server; +SET @@global.collation_server= @save_collation_server; +SET @@global.character_set_client= @save_character_set_client; +SET @@global.collation_connection= @save_collation_connection; diff --git a/mysql-test/t/mysql_client_test_nonblock.test b/mysql-test/t/mysql_client_test_nonblock.test index 76126e15cee..92e3b9812ef 100644 --- a/mysql-test/t/mysql_client_test_nonblock.test +++ b/mysql-test/t/mysql_client_test_nonblock.test @@ -1,3 +1,4 @@ + # This runs the mysql_client_test using the non-blocking API. # The non-blocking API is not supported in the embedded server. diff --git a/mysql-test/t/mysql_comments.test b/mysql-test/t/mysql_comments.test index fb0e5f94950..54b85d4b8d9 100644 --- a/mysql-test/t/mysql_comments.test +++ b/mysql-test/t/mysql_comments.test @@ -1,5 +1,6 @@ # This test should work in embedded server after we fix mysqltest -- source include/not_embedded.inc + ###################### mysql_comments.test ############################# # # # Testing of comments handling by the command line client (mysql) # @@ -31,13 +32,12 @@ drop trigger if exists t1_bi; # Test without comments --echo "Pass 1 : --disable-comments" --replace_regex /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}(.[0-9]{2})*/--TIME--/ ---exec $MYSQL --disable-comments test 2>&1 < "./t/mysql_comments.sql" +--exec $MYSQL --default-character-set=latin1 --disable-comments test 2>&1 < "./t/mysql_comments.sql" # Test with comments --echo "Pass 2 : --enable-comments" --replace_regex /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}(.[0-9]{2})*/--TIME--/ ---exec $MYSQL --enable-comments test 2>&1 < "./t/mysql_comments.sql" - +--exec $MYSQL --default-character-set=latin1 --enable-comments test 2>&1 < "./t/mysql_comments.sql" set global sql_mode=default; --echo End of 5.0 tests diff --git a/mysql-test/t/mysqlbinlog-innodb.test b/mysql-test/t/mysqlbinlog-innodb.test index c8bf8095705..559fe785c00 100644 --- a/mysql-test/t/mysqlbinlog-innodb.test +++ b/mysql-test/t/mysqlbinlog-innodb.test @@ -24,7 +24,9 @@ COMMIT; USE test; SELECT * FROM t1 ORDER BY a; FLUSH LOGS; +--replace_regex /@@session.sql_mode=\d+/@@session.sql_mode=#/ /collation_server=\d+/collation_server=#/ --exec $MYSQL_BINLOG $MYSQLD_DATADIR/master-bin.000001 --short-form +--replace_regex /@@session.sql_mode=\d+/@@session.sql_mode=#/ /collation_server=\d+/collation_server=#/ --exec $MYSQL_BINLOG $MYSQLD_DATADIR/master-bin.000001 --short-form --rewrite-db="test->foo" --rewrite-db="test2->bar" DROP DATABASE test2; DROP TABLE t1; diff --git a/mysql-test/t/mysqlbinlog.test b/mysql-test/t/mysqlbinlog.test index 6988b2a8e9b..e0503402bd6 100644 --- a/mysql-test/t/mysqlbinlog.test +++ b/mysql-test/t/mysqlbinlog.test @@ -54,7 +54,7 @@ select "--- Local --" as ""; # let $MYSQLD_DATADIR= `select @@datadir`; --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR ---replace_regex /SQL_LOAD_MB-[0-9a-f]+-[0-9a-f]+/SQL_LOAD_MB-#-#/ +--replace_regex /SQL_LOAD_MB-[0-9a-f]+-[0-9a-f]+/SQL_LOAD_MB-#-#/ /@@session.sql_mode=\d+/@@session.sql_mode=#/ /collation_server=\d+/collation_server=#/ --exec $MYSQL_BINLOG --short-form --local-load=$MYSQLTEST_VARDIR/tmp/ $MYSQLD_DATADIR/master-bin.000001 # this should not fail but shouldn't produce any working statements @@ -62,7 +62,7 @@ let $MYSQLD_DATADIR= `select @@datadir`; select "--- Broken LOAD DATA --" as ""; --enable_query_log --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR ---replace_regex /SQL_LOAD_MB-[0-9a-f]+-[0-9a-f]+/SQL_LOAD_MB-#-#/ +--replace_regex /SQL_LOAD_MB-[0-9a-f]+-[0-9a-f]+/SQL_LOAD_MB-#-#/ /@@session.sql_mode=\d+/@@session.sql_mode=#/ /collation_server=\d+/collation_server=#/ --exec $MYSQL_BINLOG --short-form --local-load=$MYSQLTEST_VARDIR/tmp/ $MYSQLD_DATADIR/master-bin.000002 2> /dev/null # this should show almost nothing @@ -70,7 +70,7 @@ select "--- Broken LOAD DATA --" as ""; select "--- --database --" as ""; --enable_query_log --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR ---replace_regex /SQL_LOAD_MB-[0-9a-f]+-[0-9a-f]+/SQL_LOAD_MB-#-#/ +--replace_regex /SQL_LOAD_MB-[0-9a-f]+-[0-9a-f]+/SQL_LOAD_MB-#-#/ /@@session.sql_mode=\d+/@@session.sql_mode=#/ /collation_server=\d+/collation_server=#/ --exec $MYSQL_BINLOG --short-form --local-load=$MYSQLTEST_VARDIR/tmp/ --database=nottest $MYSQLD_DATADIR/master-bin.000001 2> /dev/null # this test for start-position option @@ -78,7 +78,7 @@ select "--- --database --" as ""; select "--- --start-position --" as ""; --enable_query_log --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR ---replace_regex /SQL_LOAD_MB-[0-9a-f]+-[0-9a-f]+/SQL_LOAD_MB-#-#/ +--replace_regex /SQL_LOAD_MB-[0-9a-f]+-[0-9a-f]+/SQL_LOAD_MB-#-#/ /@@session.sql_mode=\d+/@@session.sql_mode=#/ /collation_server=\d+/collation_server=#/ --exec $MYSQL_BINLOG --short-form --local-load=$MYSQLTEST_VARDIR/tmp/ --start-position=$binlog_start_pos $MYSQLD_DATADIR/master-bin.000002 # These are tests for remote binlog. @@ -90,7 +90,7 @@ select "--- Remote --" as ""; # This is broken now --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR ---replace_regex /SQL_LOAD_MB-[0-9a-f]+-[0-9a-f]+/SQL_LOAD_MB-#-#/ +--replace_regex /SQL_LOAD_MB-[0-9a-f]+-[0-9a-f]+/SQL_LOAD_MB-#-#/ /@@session.sql_mode=\d+/@@session.sql_mode=#/ /collation_server=\d+/collation_server=#/ --exec $MYSQL_BINLOG --short-form --local-load=$MYSQLTEST_VARDIR/tmp/ --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001 # This is broken too @@ -98,7 +98,7 @@ select "--- Remote --" as ""; select "--- Broken LOAD DATA --" as ""; --enable_query_log --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR ---replace_regex /SQL_LOAD_MB-[0-9a-f]+-[0-9a-f]+/SQL_LOAD_MB-#-#/ +--replace_regex /SQL_LOAD_MB-[0-9a-f]+-[0-9a-f]+/SQL_LOAD_MB-#-#/ /@@session.sql_mode=\d+/@@session.sql_mode=#/ /collation_server=\d+/collation_server=#/ --exec $MYSQL_BINLOG --short-form --local-load=$MYSQLTEST_VARDIR/tmp/ --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000002 2> /dev/null # And this too ! (altough it is documented) @@ -106,7 +106,7 @@ select "--- Broken LOAD DATA --" as ""; select "--- --database --" as ""; --enable_query_log --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR ---replace_regex /SQL_LOAD_MB-[0-9a-f]+-[0-9a-f]+/SQL_LOAD_MB-#-#/ +--replace_regex /SQL_LOAD_MB-[0-9a-f]+-[0-9a-f]+/SQL_LOAD_MB-#-#/ /@@session.sql_mode=\d+/@@session.sql_mode=#/ /collation_server=\d+/collation_server=#/ --exec $MYSQL_BINLOG --short-form --local-load=$MYSQLTEST_VARDIR/tmp/ --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT --database=nottest master-bin.000001 2> /dev/null # Strangely but this works @@ -114,7 +114,7 @@ select "--- --database --" as ""; select "--- --start-position --" as ""; --enable_query_log --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR ---replace_regex /SQL_LOAD_MB-[0-9a-f]+-[0-9a-f]+/SQL_LOAD_MB-#-#/ +--replace_regex /SQL_LOAD_MB-[0-9a-f]+-[0-9a-f]+/SQL_LOAD_MB-#-#/ /@@session.sql_mode=\d+/@@session.sql_mode=#/ /collation_server=\d+/collation_server=#/ --exec $MYSQL_BINLOG --short-form --local-load=$MYSQLTEST_VARDIR/tmp/ --read-from-remote-server --start-position=$binlog_start_pos --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000002 # Bug#7853 mysqlbinlog does not accept input from stdin @@ -122,11 +122,11 @@ select "--- --start-position --" as ""; select "--- reading stdin --" as ""; --enable_query_log --replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR ---replace_regex /SQL_LOAD_MB-[0-9a-f]+-[0-9a-f]+/SQL_LOAD_MB-#-#/ +--replace_regex /SQL_LOAD_MB-[0-9a-f]+-[0-9a-f]+/SQL_LOAD_MB-#-#/ /@@session.sql_mode=\d+/@@session.sql_mode=#/ /collation_server=\d+/collation_server=#/ --exec $MYSQL_BINLOG --short-form - < $MYSQL_TEST_DIR/std_data/trunc_binlog.000001 --replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR ---replace_regex /SQL_LOAD_MB-[0-9a-f]+-[0-9a-f]+/SQL_LOAD_MB-#-#/ +--replace_regex /SQL_LOAD_MB-[0-9a-f]+-[0-9a-f]+/SQL_LOAD_MB-#-#/ /@@session.sql_mode=\d+/@@session.sql_mode=#/ /collation_server=\d+/collation_server=#/ # postion is constant to correspond to an event in pre-recorded binlog --let $binlog_start_pos=79 --exec $MYSQL_BINLOG --short-form --start-position=$binlog_start_pos - < $MYSQL_TEST_DIR/std_data/trunc_binlog.000001 @@ -214,7 +214,7 @@ call p1(); drop procedure p1; --error ER_SP_DOES_NOT_EXIST call p1(); ---replace_regex /SQL_LOAD_MB-[0-9a-f]+-[0-9a-f]+/SQL_LOAD_MB-#-#/ +--replace_regex /SQL_LOAD_MB-[0-9a-f]+-[0-9a-f]+/SQL_LOAD_MB-#-#/ /@@session.sql_mode=\d+/@@session.sql_mode=#/ /collation_server=\d+/collation_server=#/ --exec $MYSQL_BINLOG --short-form $MYSQLD_DATADIR/master-bin.000008 --exec $MYSQL_BINLOG --short-form $MYSQLD_DATADIR/master-bin.000008 | $MYSQL call p1(); @@ -255,7 +255,7 @@ drop table t1; flush logs; --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR ---replace_regex /SQL_LOAD_MB-[0-9a-f]+-[0-9a-f]+/SQL_LOAD_MB-#-#/ +--replace_regex /SQL_LOAD_MB-[0-9a-f]+-[0-9a-f]+/SQL_LOAD_MB-#-#/ /@@session.sql_mode=\d+/@@session.sql_mode=#/ /collation_server=\d+/collation_server=#/ --exec $MYSQL_BINLOG --short-form --local-load=$MYSQLTEST_VARDIR/tmp/ $MYSQLD_DATADIR/master-bin.000010 # diff --git a/mysql-test/t/mysqlbinlog_row_big.test b/mysql-test/t/mysqlbinlog_row_big.test index 44bceaad66b..c224691c377 100644 --- a/mysql-test/t/mysqlbinlog_row_big.test +++ b/mysql-test/t/mysqlbinlog_row_big.test @@ -138,7 +138,9 @@ let $MYSQLD_DATADIR= `select @@datadir`; --echo # Cleanup. --echo # --echo # reset variable value to pass testcase checks +--disable_query_log eval SET @@global.max_allowed_packet = $orig_max_allowed_packet; +--enable_query_log DROP TABLE t1; --echo remove_file \$MYSQLTEST_VARDIR/$mysqlbinlog_output diff --git a/mysql-test/t/mysqlbinlog_row_compressed.test b/mysql-test/t/mysqlbinlog_row_compressed.test index 1a7ce093986..6b62a42c449 100644 --- a/mysql-test/t/mysqlbinlog_row_compressed.test +++ b/mysql-test/t/mysqlbinlog_row_compressed.test @@ -29,7 +29,7 @@ DELETE FROM t2; FLUSH BINARY LOGS; --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR ---replace_regex /\d{6} *\d*:\d\d:\d\d/<date>/ /Start:.*at startup/Start: xxx/ /SET TIMESTAMP=\d*/SET TIMESTAMP=X/ /exec_time=\d*/exec_time=x/ /mapped to number \d*/mapped to number num/ /CRC32 0x[0-9a-f]+/CRC32 XXX/ +--replace_regex /\d{6} *\d*:\d\d:\d\d/<date>/ /Start:.*at startup/Start: xxx/ /SET TIMESTAMP=\d*/SET TIMESTAMP=X/ /exec_time=\d*/exec_time=x/ /mapped to number \d*/mapped to number num/ /CRC32 0x[0-9a-f]+/CRC32 XXX/ /@@session.sql_mode=\d+/@@session.sql_mode=#/ /collation_server=\d+/collation_server=#/ --exec $MYSQL_BINLOG --verbose --verbose --base64-output=DECODE-ROWS $datadir/$binlog --echo diff --git a/mysql-test/t/mysqlbinlog_row_minimal.test b/mysql-test/t/mysqlbinlog_row_minimal.test index 85b816e1be5..b69aa6da14b 100644 --- a/mysql-test/t/mysqlbinlog_row_minimal.test +++ b/mysql-test/t/mysqlbinlog_row_minimal.test @@ -28,7 +28,7 @@ DELETE FROM t2; FLUSH BINARY LOGS; --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR ---replace_regex /\d{6} *\d*:\d\d:\d\d/<date>/ /Start:.*at startup/Start: xxx/ /SET TIMESTAMP=\d*/SET TIMESTAMP=X/ /exec_time=\d*/exec_time=x/ /mapped to number \d*/mapped to number num/ /CRC32 0x[0-9a-f]+/CRC32 XXX/ +--replace_regex /\d{6} *\d*:\d\d:\d\d/<date>/ /Start:.*at startup/Start: xxx/ /SET TIMESTAMP=\d*/SET TIMESTAMP=X/ /exec_time=\d*/exec_time=x/ /mapped to number \d*/mapped to number num/ /CRC32 0x[0-9a-f]+/CRC32 XXX/ /@@session.sql_mode=\d+/@@session.sql_mode=#/ /collation_server=\d+/collation_server=#/ --exec $MYSQL_BINLOG --verbose --verbose --base64-output=DECODE-ROWS $datadir/$binlog DROP TABLE t1,t2; @@ -67,7 +67,7 @@ UPDATE t1 t1 INNER JOIN t2 t2 ON t1.ref_id = t2.id FLUSH BINARY LOGS; --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR ---replace_regex /\d{6} *\d*:\d\d:\d\d/<date>/ /SET TIMESTAMP=\d*/SET TIMESTAMP=X/ /exec_time=\d*/exec_time=x/ /@3=\d*/@3=X/ /CRC32 0x[0-9a-f]+/CRC32 XXX/ +--replace_regex /\d{6} *\d*:\d\d:\d\d/<date>/ /SET TIMESTAMP=\d*/SET TIMESTAMP=X/ /exec_time=\d*/exec_time=x/ /@3=\d*/@3=X/ /CRC32 0x[0-9a-f]+/CRC32 XXX/ /@@session.sql_mode=\d+/@@session.sql_mode=#/ /collation_server=\d+/collation_server=#/ --exec $MYSQL_BINLOG --verbose --verbose --base64-output=DECODE-ROWS $datadir/$binlog --start-position=$binlog_pos DROP TABLE t1,t2; diff --git a/mysql-test/t/mysqlbinlog_stmt_compressed.test b/mysql-test/t/mysqlbinlog_stmt_compressed.test index c4331ddf229..613a820d3ea 100644 --- a/mysql-test/t/mysqlbinlog_stmt_compressed.test +++ b/mysql-test/t/mysqlbinlog_stmt_compressed.test @@ -29,7 +29,7 @@ DELETE FROM t2; FLUSH BINARY LOGS; --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR ---replace_regex /\d{6} *\d*:\d\d:\d\d/<date>/ /Start:.*at startup/Start: xxx/ /SET TIMESTAMP=\d*/SET TIMESTAMP=X/ /exec_time=\d*/exec_time=x/ /mapped to number \d*/mapped to number num/ /CRC32 0x[0-9a-f]+/CRC32 XXX/ +--replace_regex /\d{6} *\d*:\d\d:\d\d/<date>/ /Start:.*at startup/Start: xxx/ /SET TIMESTAMP=\d*/SET TIMESTAMP=X/ /exec_time=\d*/exec_time=x/ /mapped to number \d*/mapped to number num/ /CRC32 0x[0-9a-f]+/CRC32 XXX/ /@@session.sql_mode=\d+/@@session.sql_mode=#/ /collation_server=\d+/collation_server=#/ --exec $MYSQL_BINLOG --verbose --verbose --base64-output=DECODE-ROWS $datadir/$binlog --echo diff --git a/mysql-test/t/mysqlcheck.opt b/mysql-test/t/mysqlcheck.opt new file mode 100644 index 00000000000..35db081c15b --- /dev/null +++ b/mysql-test/t/mysqlcheck.opt @@ -0,0 +1 @@ +--character-set-server=latin1 --collation_server=latin1_swedish_ci diff --git a/mysql-test/t/mysqlcheck.test b/mysql-test/t/mysqlcheck.test index 779ea8d13d4..8f3c241ebb7 100644 --- a/mysql-test/t/mysqlcheck.test +++ b/mysql-test/t/mysqlcheck.test @@ -2,8 +2,11 @@ call mtr.add_suppression("Invalid .old.. table or database name"); # Embedded server doesn't support external clients --source include/not_embedded.inc - --source include/have_innodb.inc +--source include/default_charset.inc + +set @save_character_set_client=@@character_set_client; +set @save_collation_connection=@@collation_connection; # check that CSV engine was compiled in, as the result of the test # depends on the presence of the log tables (which are CSV-based). @@ -136,7 +139,10 @@ drop table t1; SET NAMES utf8; CREATE TABLE `#mysql50#@` (a INT) engine=myisam; SHOW TABLES; -SET NAMES DEFAULT; +# Safer version of SET NAMES DEFAULT: +set @@character_set_client=@save_character_set_client; +set @@character_set_results=@save_character_set_client; +set @@collation_connection=@save_collation_connection; --echo mysqlcheck --fix-table-names --databases test --exec $MYSQL_CHECK --fix-table-names --databases test SET NAMES utf8; @@ -144,7 +150,10 @@ SHOW TABLES; DROP TABLE `@`; CREATE TABLE `Ñ` (a INT) engine=myisam; -SET NAMES DEFAULT; +set @@character_set_client=@save_character_set_client; +set @@character_set_results=@save_character_set_client; +set @@collation_connection=@save_collation_connection; + call mtr.add_suppression("@003f.frm' \\(errno: 22\\)"); --echo mysqlcheck --default-character-set="latin1" --databases test # Error returned depends on platform, replace it with "Table doesn't exist" @@ -155,7 +164,9 @@ call mtr.add_suppression("Can't find file: '..test.@003f.frm'"); --exec $MYSQL_CHECK --default-character-set="utf8" --databases test SET NAMES utf8; DROP TABLE `Ñ`; -SET NAMES DEFAULT; +set @@character_set_client=@save_character_set_client; +set @@character_set_results=@save_character_set_client; +set @@collation_connection=@save_collation_connection; CREATE DATABASE `#mysql50#a@b`; USE `#mysql50#a@b`; @@ -405,5 +416,6 @@ create table t1(a int); insert into t1 (a) values (1), (2), (3); select * from mysql.column_stats; --exec $MYSQL_CHECK --analyze test t1 --persistent +--replace_column 9 # 10 # 11 # select * from mysql.column_stats where db_name = 'test' and table_name = 't1'; drop table t1; diff --git a/mysql-test/t/mysqldump-max.test b/mysql-test/t/mysqldump-max.test index c0596f27e4f..4aadb09de53 100644 --- a/mysql-test/t/mysqldump-max.test +++ b/mysql-test/t/mysqldump-max.test @@ -1,3 +1,5 @@ +--source include/have_utf8mb4.inc + # Embedded server doesn't support external clients --source include/not_embedded.inc --source include/have_innodb.inc diff --git a/mysql-test/t/mysqldump-nl.test b/mysql-test/t/mysqldump-nl.test index 4513fb2c637..863c846b9a6 100644 --- a/mysql-test/t/mysqldump-nl.test +++ b/mysql-test/t/mysqldump-nl.test @@ -6,6 +6,7 @@ --source include/not_embedded.inc # cmd.exe doesn't like new lines on the command line --source include/not_windows.inc +--source include/default_charset.inc create database `mysqltest1 1tsetlqsym`; diff --git a/mysql-test/t/mysqldump.opt b/mysql-test/t/mysqldump.opt new file mode 100644 index 00000000000..0833e0abd4c --- /dev/null +++ b/mysql-test/t/mysqldump.opt @@ -0,0 +1 @@ +--character_set_server=latin1 --collation_server=latin1_swedish_ci --sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION diff --git a/mysql-test/t/mysqldump.test b/mysql-test/t/mysqldump.test index df939fd368f..34976350c78 100644 --- a/mysql-test/t/mysqldump.test +++ b/mysql-test/t/mysqldump.test @@ -85,10 +85,10 @@ INSERT INTO t1 VALUES ("1.2345", 2.3456); SET SQL_MODE=@OLD_SQL_MODE; # check how mysqldump make quoting ---exec $MYSQL_DUMP --compact test t1 ---exec $MYSQL_DUMP --compact --skip-create-options test t1 ---exec $MYSQL_DUMP --skip-create-options --skip-comments test t1 ---exec $MYSQL_DUMP --skip-opt --extended-insert --skip-comments test t1 +--exec $MYSQL_DUMP --compact --default-character-set=utf8mb4 test t1 +--exec $MYSQL_DUMP --compact --skip-create-options --default-character-set=utf8mb4 test t1 +--exec $MYSQL_DUMP --skip-create-options --skip-comments --default-character-set=utf8mb4 test t1 +--exec $MYSQL_DUMP --skip-opt --extended-insert --skip-comments --default-character-set=utf8mb4 test t1 DROP TABLE t1; CREATE TABLE t1(a int, b text, c varchar(3)); @@ -112,7 +112,7 @@ DROP TABLE t1; CREATE TABLE t1 (a VARCHAR(255)) DEFAULT CHARSET koi8r; INSERT INTO t1 VALUES (_koi8r x'C1C2C3C4C5'), (NULL); ---exec $MYSQL_DUMP --skip-comments --skip-extended-insert test t1 +--exec $MYSQL_DUMP --skip-comments --skip-extended-insert --default-character-set=utf8mb4 test t1 DROP TABLE t1; --echo # @@ -121,8 +121,8 @@ DROP TABLE t1; CREATE TABLE t1 (a int) ENGINE=MYISAM; INSERT INTO t1 VALUES (1), (2); ---exec $MYSQL_DUMP --skip-comments --compatible=mysql40 test t1 ---exec $MYSQL_DUMP --skip-comments --compatible=mysql323 test t1 +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments --compatible=mysql40 test t1 +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments --compatible=mysql323 test t1 DROP TABLE t1; --echo # @@ -138,11 +138,11 @@ drop table ```a`; --echo # create table t1(a int); ---exec $MYSQL_DUMP --comments=0 test ---exec $MYSQL_DUMP --comments=0 --compatible=ansi test +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --comments=0 test +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --comments=0 --compatible=ansi test set global sql_mode='ANSI_QUOTES'; ---exec $MYSQL_DUMP --comments=0 test ---exec $MYSQL_DUMP --comments=0 --compatible=ansi test +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --comments=0 test +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --comments=0 --compatible=ansi test set global sql_mode=default; drop table t1; @@ -152,12 +152,12 @@ drop table t1; create table t1(a int); insert into t1 values (1),(2),(3); ---exec $MYSQL_DUMP --skip-comments --tab=$MYSQLTEST_VARDIR/tmp/ test +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments --tab=$MYSQLTEST_VARDIR/tmp/ test --cat_file $MYSQLTEST_VARDIR/tmp/t1.sql --cat_file $MYSQLTEST_VARDIR/tmp/t1.txt --remove_file $MYSQLTEST_VARDIR/tmp/t1.sql --remove_file $MYSQLTEST_VARDIR/tmp/t1.txt ---exec $MYSQL_DUMP --tab=$MYSQLTEST_VARDIR/tmp/ test +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --tab=$MYSQLTEST_VARDIR/tmp/ test --remove_file $MYSQLTEST_VARDIR/tmp/t1.sql --remove_file $MYSQLTEST_VARDIR/tmp/t1.txt drop table t1; @@ -166,10 +166,10 @@ drop table t1; --echo # Bug#6101 create database problem --echo # ---exec $MYSQL_DUMP --skip-comments --databases test +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments --databases test create database mysqldump_test_db character set latin2 collate latin2_bin; ---exec $MYSQL_DUMP --skip-comments --databases mysqldump_test_db +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments --databases mysqldump_test_db drop database mysqldump_test_db; --echo # @@ -181,7 +181,7 @@ drop database mysqldump_test_db; CREATE TABLE t1 (a CHAR(10)); INSERT INTO t1 VALUES (_latin1 'ÄÖÜß'); ---exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --skip-comments test t1 +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --character-sets-dir=$MYSQL_SHAREDIR/charsets --skip-comments test t1 --echo # --echo # Bug#8063 make test mysqldump [ fail ] @@ -191,7 +191,7 @@ INSERT INTO t1 VALUES (_latin1 'ÄÖÜß'); --echo # checking that "mysqldump" is compiled with "latin1" --echo # -#--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --skip-comments --compatible=mysql323 test t1 +#--exec $MYSQL_DUMP --default-character-set=utf8mb4 --character-sets-dir=$MYSQL_SHAREDIR/charsets --skip-comments --compatible=mysql323 test t1 --exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --skip-comments --compatible=mysql323 --default-character-set=cp850 test t1 --exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --skip-comments --default-character-set=cp850 --compatible=mysql323 test t1 --exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --skip-comments --default-character-set=utf8 --compatible=mysql323 test t1 @@ -205,7 +205,7 @@ CREATE TABLE t1 (a int); CREATE TABLE t2 (a int); INSERT INTO t1 VALUES (1),(2),(3); INSERT INTO t2 VALUES (4),(5),(6); ---exec $MYSQL_DUMP --skip-comments --ignore-table=test.t1 test +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments --ignore-table=test.t1 test DROP TABLE t1; DROP TABLE t2; @@ -215,7 +215,7 @@ DROP TABLE t2; CREATE TABLE t1 (`b` blob); INSERT INTO `t1` VALUES (0x602010000280100005E71A); ---exec $MYSQL_DUMP --skip-extended-insert --hex-blob test --skip-comments t1 +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-extended-insert --hex-blob test --skip-comments t1 DROP TABLE t1; --echo # @@ -225,8 +225,8 @@ DROP TABLE t1; CREATE TABLE t1 (a INT) ENGINE=MyISAM; INSERT INTO t1 VALUES (1),(2),(3); INSERT INTO t1 VALUES (4),(5),(6); ---exec $MYSQL_DUMP --skip-comments --insert-ignore test t1 ---exec $MYSQL_DUMP --skip-comments --insert-ignore --delayed-insert test t1 +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments --insert-ignore test t1 +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments --insert-ignore --delayed-insert test t1 DROP TABLE t1; --echo # @@ -565,7 +565,7 @@ create table t1 ( F_6faa8040da20ef399b63a72d0e4ab575 int, F_fe73f687e5bc5280214e0486b273a5f9 int); insert into t1 (F_8d3bba7425e7c98c50f52ca1b52d3735) values (1); ---exec $MYSQL_DUMP --skip-comments -c test +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments -c test drop table t1; --echo # @@ -574,7 +574,7 @@ drop table t1; CREATE TABLE t1 (a int); INSERT INTO t1 VALUES (1),(2),(3); ---exec $MYSQL_DUMP --add-drop-database --skip-comments --databases test +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --add-drop-database --skip-comments --databases test DROP TABLE t1; --echo # @@ -587,10 +587,10 @@ CREATE TABLE t1 ( a INT ); CREATE TABLE t2 ( a INT ); INSERT INTO t1 VALUES (1), (2); INSERT INTO t2 VALUES (1), (2); ---exec $MYSQL_DUMP --skip-comments --no-data mysqldump_test_db ---exec $MYSQL_DUMP --skip-comments --no-data mysqldump_test_db t1 t2 ---exec $MYSQL_DUMP --skip-comments --skip-create-options --xml --no-data mysqldump_test_db ---exec $MYSQL_DUMP --skip-comments --skip-create-options --xml --no-data mysqldump_test_db t1 t2 +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments --no-data mysqldump_test_db +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments --no-data mysqldump_test_db t1 t2 +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments --skip-create-options --xml --no-data mysqldump_test_db +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments --skip-create-options --xml --no-data mysqldump_test_db t1 t2 DROP TABLE t1, t2; DROP DATABASE mysqldump_test_db; @@ -681,11 +681,11 @@ create table t2 (pk int primary key auto_increment, a int(10), b varchar(30), c datetime, d blob, e text); insert into t1 values (NULL), (10), (20); insert into t2 (a, b) values (NULL, NULL),(10, NULL),(NULL, "twenty"),(30, "thirty"); ---exec $MYSQL_DUMP --skip-comments --xml --no-create-info test +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments --xml --no-create-info test # Test if UNIQUE_CHECK is done correctly ---exec $MYSQL_DUMP --skip-comments --no-create-info test ---exec $MYSQL_DUMP --skip-comments test +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments --no-create-info test +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments test drop table t1, t2; @@ -696,7 +696,7 @@ drop table t1, t2; create table t1 (a text character set utf8, b text character set latin1); insert t1 values (0x4F736E616272C3BC636B, 0x4BF66C6E); select * from t1; ---exec $MYSQL_DUMP --tab=$MYSQLTEST_VARDIR/tmp/ test +--exec $MYSQL_DUMP --disable-default-character-set --tab=$MYSQLTEST_VARDIR/tmp/ test --exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/t1.sql --exec $MYSQL_IMPORT test $MYSQLTEST_VARDIR/tmp/t1.txt select * from t1; @@ -729,7 +729,7 @@ select * from t1; show create table `t1`; ---exec $MYSQL_DUMP --skip-comments test t1 > $MYSQLTEST_VARDIR/tmp/bug19025.sql +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments test t1 > $MYSQLTEST_VARDIR/tmp/bug19025.sql DROP TABLE `t1`; --exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/bug19025.sql @@ -751,7 +751,7 @@ create table t2(a int); create table t3(a int); --replace_result mysqldump.exe mysqldump --error 6 ---exec $MYSQL_DUMP --skip-comments --force --no-data test t3 t1 non_existing t2 +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments --force --no-data test t3 t1 non_existing t2 drop table t1, t2, t3; @@ -762,7 +762,7 @@ drop table t1, t2, t3; create table t1 (a int); --replace_result mysqldump.exe mysqldump --error 2 ---exec $MYSQL_DUMP --skip-comments --force test t1 --where="xx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 2>&1 +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments --force test t1 --where="xx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 2>&1 drop table t1; @@ -780,8 +780,8 @@ CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1; insert into t1 values (0815, 4711, 2006); ---exec $MYSQL_DUMP --skip-comments --compatible=ansi --order-by-primary test t1 ---exec $MYSQL_DUMP --skip-comments --order-by-primary test t1 +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments --compatible=ansi --order-by-primary test t1 +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments --order-by-primary test t1 DROP TABLE `t1`; --enable_warnings @@ -806,7 +806,7 @@ INSERT INTO t2 VALUES ('bingo'); INSERT INTO t2 VALUES ('waffle'); INSERT INTO t2 VALUES ('lemon'); create view v2 as select * from t2 where a like 'a%' with check option; ---exec $MYSQL_DUMP --skip-comments db1 +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments db1 drop table t2; drop view v2; drop database db1; @@ -856,7 +856,7 @@ use test; create table t1(a int); create view v1 as select * from t1; ---exec $MYSQL_DUMP --skip-comments test +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments test drop view v1; drop table t1; @@ -879,7 +879,7 @@ INSERT INTO t2 VALUES ('bingo'); INSERT INTO t2 VALUES ('waffle'); INSERT INTO t2 VALUES ('lemon'); create view v2 as select * from t2 where a like 'a%' with check option; ---exec $MYSQL_DUMP --skip-comments mysqldump_test_db +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments mysqldump_test_db drop table t2; drop view v2; drop database mysqldump_test_db; @@ -891,7 +891,7 @@ use test; CREATE TABLE t1 (a char(10)); INSERT INTO t1 VALUES ('\''); ---exec $MYSQL_DUMP --skip-comments test t1 +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments test t1 DROP TABLE t1; --echo # @@ -911,7 +911,7 @@ select * from v3 where b in (1, 2, 3, 4, 5, 6, 7); create view v2 as select v3.a from v3, v1 where v1.a=v3.a and v3.b=3 limit 1; ---exec $MYSQL_DUMP --skip-comments test +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments test drop view v1, v2, v3; drop table t1; @@ -953,11 +953,11 @@ show triggers like "t1"; INSERT INTO t1 (a) VALUES (1),(2),(3),(22); update t1 set a = 4 where a=3; # Triggers should be dumped by default ---exec $MYSQL_DUMP --skip-comments --databases test +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments --databases test # Skip dumping triggers ---exec $MYSQL_DUMP --skip-comments --databases --skip-triggers test +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments --databases --skip-triggers test # Dump and reload... ---exec $MYSQL_DUMP --skip-comments --databases test > $MYSQLTEST_VARDIR/tmp/mysqldump.sql +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments --databases test > $MYSQLTEST_VARDIR/tmp/mysqldump.sql drop table t1; --exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/mysqldump.sql # Check that tables have been reloaded @@ -1003,7 +1003,7 @@ INSERT INTO `test1` VALUES (1); SELECT * FROM `test2`; # dump ---exec $MYSQL_DUMP --skip-comments --databases test > $MYSQLTEST_VARDIR/tmp/mysqldump.sql +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments --databases test > $MYSQLTEST_VARDIR/tmp/mysqldump.sql #DROP TRIGGER testref; #DROP TABLE test1; @@ -1060,7 +1060,7 @@ create procedure `a'b` () select 1; # to fix syntax highlighting :') set sql_mode=''; # Dump the DB and ROUTINES ---exec $MYSQL_DUMP --skip-comments --routines --databases test +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments --routines --databases test # ok, now blow it all away DROP FUNCTION bug9056_func1; @@ -1088,8 +1088,8 @@ set time_zone='Europe/Moscow'; # results should show two same time values, despite unique select * from t1; set global time_zone='Europe/Moscow'; ---exec $MYSQL_DUMP --skip-comments --databases test ---exec $MYSQL_DUMP --skip-tz-utc --skip-comments --databases test +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments --databases test +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-tz-utc --skip-comments --databases test drop table t1; set global time_zone=default; set time_zone=default; @@ -1122,7 +1122,7 @@ INSERT INTO `t1 test` VALUES (3); SELECT * FROM `t2 test`; # dump with compatible=ansi. Everything except triggers should be double # quoted ---exec $MYSQL_DUMP --skip-comments --compatible=ansi --triggers test +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments --compatible=ansi --triggers test DROP TRIGGER `test trig`; DROP TABLE `t1 test`; @@ -1145,7 +1145,7 @@ create view v0 as select * from v1; create view v2 as select * from v0; select * from v2; ---exec $MYSQL_DUMP -x --skip-comments --databases test +--exec $MYSQL_DUMP --default-character-set=utf8mb4 -x --skip-comments --databases test drop view v2; drop view v0; @@ -1171,7 +1171,7 @@ DELIMITER ;| SET SQL_MODE = @old_sql_mode; ---exec $MYSQL_DUMP --skip-comments --databases test +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments --databases test DROP TRIGGER tr1; DROP TABLE t1; @@ -1182,8 +1182,8 @@ DROP TABLE t1; create table t1 (a binary(1), b blob); insert into t1 values ('',''); ---exec $MYSQL_DUMP --skip-comments --skip-extended-insert --hex-blob test t1 ---exec $MYSQL_DUMP --skip-comments --hex-blob test t1 +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments --skip-extended-insert --hex-blob test t1 +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments --hex-blob test t1 drop table t1; --echo # @@ -1199,7 +1199,7 @@ create algorithm=merge view v4 as select * from t1 with cascaded check option; create algorithm =temptable view v5 as select * from t1; # dump tables and views ---exec $MYSQL_DUMP test > $MYSQLTEST_VARDIR/tmp/bug14871.sql +--exec $MYSQL_DUMP --default-character-set=utf8mb4 test > $MYSQLTEST_VARDIR/tmp/bug14871.sql # drop the db, tables and views drop table t1; @@ -1234,7 +1234,7 @@ end| delimiter ;| # dump table and trigger ---exec $MYSQL_DUMP test > $MYSQLTEST_VARDIR/tmp/bug16878.sql +--exec $MYSQL_DUMP --default-character-set=utf8mb4 test > $MYSQLTEST_VARDIR/tmp/bug16878.sql drop trigger tr1; drop trigger tr2; drop table t1, t2; @@ -1259,7 +1259,7 @@ insert into t values(5, 51); create view v1 as select qty, price, qty*price as value from t; create view v2 as select qty from v1; --echo mysqldump { ---exec $MYSQL_DUMP --compact -F --tab $MYSQLTEST_VARDIR/tmp test +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --compact -F --tab $MYSQLTEST_VARDIR/tmp test --cat_file $MYSQLTEST_VARDIR/tmp/v1.sql --echo } mysqldump { --cat_file $MYSQLTEST_VARDIR/tmp/v2.sql @@ -1300,7 +1300,7 @@ drop table t1; --echo mysqldump { --replace_result mysqldump.exe mysqldump --error 2 ---exec $MYSQL_DUMP --force -N --compact --skip-comments test +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --force -N --compact --skip-comments test --echo } mysqldump drop view v1; @@ -1317,7 +1317,7 @@ insert into t1 values (1232131); insert into t1 values (4711); insert into t1 values (3231); insert into t1 values (0815); ---exec $MYSQL_DUMP --skip-comments --add-drop-database --databases mysqldump_test_db +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments --add-drop-database --databases mysqldump_test_db drop view v1; drop table t1; drop database mysqldump_test_db; @@ -1335,7 +1335,7 @@ create database mysqldump_views; use mysqldump_views; create view nasishnasifu as select mysqldump_tables.basetable.id from mysqldump_tables.basetable; ---exec $MYSQL_DUMP --skip-comments --compact --databases mysqldump_tables mysqldump_views +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments --compact --databases mysqldump_tables mysqldump_views drop view nasishnasifu; drop database mysqldump_views; @@ -1358,7 +1358,7 @@ create table t1 (f1 int, f2 int); insert into t1 values (2,2); create view v1 as select f1, f2 from t1; ---exec $MYSQL_DUMP --skip-comments --add-drop-database --databases mysqldump_dba mysqldump_dbb > $MYSQLTEST_VARDIR/tmp/bug20221_backup +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments --add-drop-database --databases mysqldump_dba mysqldump_dbb > $MYSQLTEST_VARDIR/tmp/bug20221_backup drop view v1; drop table t1; @@ -1398,13 +1398,13 @@ reset master; # Execute mysqldump, will fail on FLUSH TABLES --replace_result mysqldump.exe mysqldump --error 2 ---exec $MYSQL_DUMP --compact --master-data -u mysqltest_1 test 2>&1 +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --compact --master-data -u mysqltest_1 test 2>&1 # Execute mysqldump, will fail on FLUSH TABLES # use --force, should no affect behaviour --replace_result mysqldump.exe mysqldump --error 2 ---exec $MYSQL_DUMP --compact --force --master-data -u mysqltest_1 test 2>&1 +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --compact --force --master-data -u mysqltest_1 test 2>&1 # Add RELOAD grants grant RELOAD on *.* to mysqltest_1@localhost; @@ -1412,20 +1412,20 @@ grant RELOAD on *.* to mysqltest_1@localhost; # Execute mysqldump, will fail on SHOW MASTER STATUS --replace_result mysqldump.exe mysqldump --error 2 ---exec $MYSQL_DUMP --compact --master-data -u mysqltest_1 test 2>&1 +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --compact --master-data -u mysqltest_1 test 2>&1 # Execute mysqldump, will fail on SHOW MASTER STATUS. # use --force, should not alter behaviour --replace_result mysqldump.exe mysqldump --error 2 ---exec $MYSQL_DUMP --compact --force --master-data -u mysqltest_1 test 2>&1 +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --compact --force --master-data -u mysqltest_1 test 2>&1 # Add REPLICATION CLIENT grants grant REPLICATION CLIENT on *.* to mysqltest_1@localhost; # Execute mysqldump, should now succeed --disable_result_log ---exec $MYSQL_DUMP --compact --master-data -u mysqltest_1 test 2>&1 +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --compact --master-data -u mysqltest_1 test 2>&1 --enable_result_log # Clean up @@ -1456,7 +1456,7 @@ insert into u1 values (4); create view v1 (c1) as select * from t1; # Backup should not fail for Bug#21527. Flush priviliges test begins. ---exec $MYSQL_DUMP --skip-comments --add-drop-table --flush-privileges --ignore-table=mysql.general_log --ignore-table=mysql.slow_log --databases mysqldump_myDB mysql > $MYSQLTEST_VARDIR/tmp/bug21527.sql +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments --add-drop-table --flush-privileges --ignore-table=mysql.general_log --ignore-table=mysql.slow_log --ignore-table=mysql.transaction_registry --databases mysqldump_myDB mysql > $MYSQLTEST_VARDIR/tmp/bug21527.sql # Clean up connection root; @@ -1505,7 +1505,7 @@ use test; --echo # --echo # Bug #33762: mysqldump can not dump INFORMATION_SCHEMA --echo # ---exec $MYSQL_DUMP --compact --opt -d information_schema TABLES +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --compact --opt -d information_schema TABLES --echo # --echo # Bug#19745 mysqldump --xml produces invalid xml @@ -1518,7 +1518,7 @@ DROP TABLE IF EXISTS t1; CREATE TABLE t1 (f1 int(10), data MEDIUMBLOB); INSERT INTO t1 VALUES(1,0xff00fef0); ---exec $MYSQL_DUMP --xml --hex-blob --skip-create-options test t1 +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --xml --hex-blob --skip-create-options test t1 DROP TABLE t1; @@ -1533,19 +1533,19 @@ INSERT INTO t1 VALUES (1), (2); # too long a file path causes an error --replace_result mysqldump.exe mysqldump --error 1 ---exec $MYSQL_DUMP --tab=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa test 2>&1 +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --tab=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa test 2>&1 ---exec $MYSQL_DUMP --tab=$MYSQLTEST_VARDIR/tmp/ --fields-terminated-by=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa test +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --tab=$MYSQLTEST_VARDIR/tmp/ --fields-terminated-by=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa test --replace_result mysqldump.exe mysqldump --error 2 ---exec $MYSQL_DUMP --tab=$MYSQLTEST_VARDIR/tmp/ --fields-enclosed-by=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa test +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --tab=$MYSQLTEST_VARDIR/tmp/ --fields-enclosed-by=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa test --replace_result mysqldump.exe mysqldump --error 2 ---exec $MYSQL_DUMP --tab=$MYSQLTEST_VARDIR/tmp/ --fields-optionally-enclosed-by=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa test +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --tab=$MYSQLTEST_VARDIR/tmp/ --fields-optionally-enclosed-by=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa test --replace_result mysqldump.exe mysqldump --error 2 ---exec $MYSQL_DUMP --tab=$MYSQLTEST_VARDIR/tmp/ --fields-escaped-by=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa test ---exec $MYSQL_DUMP --tab=$MYSQLTEST_VARDIR/tmp/ --lines-terminated-by=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa test +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --tab=$MYSQLTEST_VARDIR/tmp/ --fields-escaped-by=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa test +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --tab=$MYSQLTEST_VARDIR/tmp/ --lines-terminated-by=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa test --remove_file $MYSQLTEST_VARDIR/tmp/t1.sql --remove_file $MYSQLTEST_VARDIR/tmp/t1.txt @@ -1559,7 +1559,7 @@ DROP TABLE t1; CREATE TABLE t2 (a INT) ENGINE=MyISAM; CREATE TABLE t3 (a INT) ENGINE=MyISAM; CREATE TABLE t1 (a INT) ENGINE=merge UNION=(t2, t3); ---exec $MYSQL_DUMP --skip-comments -c test +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments -c test DROP TABLE t1, t2, t3; @@ -1580,7 +1580,7 @@ create function f2() returns int return f1(); create view v3 as select bug23491_original.f1(); # Backup. ---exec $MYSQL_DUMP --skip-comments -uroot --opt --routines bug23491_original > $MYSQLTEST_VARDIR/tmp/bug23491_backup.sql +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments -uroot --opt --routines bug23491_original > $MYSQLTEST_VARDIR/tmp/bug23491_backup.sql # Restore. --exec $MYSQL bug23491_restore < $MYSQLTEST_VARDIR/tmp/bug23491_backup.sql @@ -1646,7 +1646,7 @@ DROP TABLE t1; --echo # CREATE VIEW v1 AS SELECT 1; ---exec $MYSQL_DUMP --skip-add-drop-table test > $MYSQLTEST_VARDIR/tmp/bug28524.sql +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-add-drop-table test > $MYSQLTEST_VARDIR/tmp/bug28524.sql DROP VIEW v1; --exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/bug28524.sql @@ -1671,7 +1671,7 @@ INSERT INTO t2 VALUES (0), (1), (2); SET SQL_MODE = @TMP_SQL_MODE; SELECT * FROM t2; ---exec $MYSQL_DUMP --routines test >$MYSQLTEST_VARDIR/tmp/bug29788.sql +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --routines test >$MYSQLTEST_VARDIR/tmp/bug29788.sql --exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/bug29788.sql SELECT * FROM t2; @@ -1686,15 +1686,15 @@ DROP TABLE t1,t2; --echo # --skip-dump-date: --replace_regex /-- [^D][^u][^m][^p].*// /\/\*!.*// ---exec $MYSQL_DUMP --skip-dump-date test +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-dump-date test --echo # --dump-date: --replace_regex /-- [^D][^u][^m][^p].*// /\/\*!.*// / on [0-9 :-]+/ on DATE/ ---exec $MYSQL_DUMP --dump-date test +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --dump-date test --echo # --dump-date (default): --replace_regex /-- [^D][^u][^m][^p].*// /\/\*!.*// / on [0-9 :-]+/ on DATE/ ---exec $MYSQL_DUMP test +--exec $MYSQL_DUMP --default-character-set=utf8mb4 test --echo # --echo # Bug #42635: mysqldump includes views that were excluded using @@ -1706,7 +1706,7 @@ use db42635; create table t1 (id int); create view db42635.v1 (c) as select * from db42635.t1; create view db42635.v2 (c) as select * from db42635.t1; ---exec $MYSQL_DUMP --skip-comments --ignore-table=db42635.v1 db42635 +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments --ignore-table=db42635.v1 db42635 use test; drop database db42635; @@ -1742,7 +1742,7 @@ CREATE TABLE t1(a int, b int); INSERT INTO t1 VALUES (1,1); INSERT INTO t1 VALUES (2,3); INSERT INTO t1 VALUES (3,4), (4,5); ---exec $MYSQL_DUMP --replace --skip-comments test t1 +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --replace --skip-comments test t1 DROP TABLE t1; # @@ -1757,7 +1757,7 @@ insert t2 values ("We the people", "in order to perform"); insert t2 values ("a more perfect", "union"); select * from t1; select * from t2; ---exec $MYSQL_DUMP --tab=$MYSQLTEST_VARDIR/tmp/ test +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --tab=$MYSQLTEST_VARDIR/tmp/ test --exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/t1.sql --exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/t2.sql # The first load tests the pausing code @@ -1799,7 +1799,7 @@ set time_zone = 'UTC'; create event ee1 on schedule at '2035-12-31 20:01:23' do set @a=5; show events; show create event ee1; ---exec $MYSQL_DUMP --events first > $MYSQLTEST_VARDIR/tmp/bug16853-1.sql +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --events first > $MYSQLTEST_VARDIR/tmp/bug16853-1.sql drop database first; create database second; @@ -1814,7 +1814,7 @@ show create event ee1; create event ee2 on schedule at '2030-12-31 21:01:22' do set @a=5; create event ee3 on schedule at '2030-12-31 22:01:23' do set @a=5; show events; ---exec $MYSQL_DUMP --events second > $MYSQLTEST_VARDIR/tmp/bug16853-2.sql +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --events second > $MYSQLTEST_VARDIR/tmp/bug16853-2.sql drop database second; create database third; @@ -1842,7 +1842,7 @@ insert into t1 values (1232131); insert into t1 values (4711); insert into t1 values (3231); insert into t1 values (0815); ---exec $MYSQL_DUMP --skip-comments --add-drop-database --databases mysqldump_test_db +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments --add-drop-database --databases mysqldump_test_db drop view v1; drop table t1; drop database mysqldump_test_db; @@ -1850,7 +1850,7 @@ drop database mysqldump_test_db; # # Bug#26121 mysqldump includes LOCK TABLES general_log WRITE # ---exec $MYSQL_DUMP --all-databases > $MYSQLTEST_VARDIR/tmp/bug26121.sql +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --all-databases > $MYSQLTEST_VARDIR/tmp/bug26121.sql --exec $MYSQL < $MYSQLTEST_VARDIR/tmp/bug26121.sql --remove_file $MYSQLTEST_VARDIR/tmp/bug26121.sql @@ -1922,14 +1922,13 @@ TRUNCATE mysql.event; USE test; CREATE event e29938 ON SCHEDULE AT '2035-12-31 20:01:23' DO SET @bug29938=29938; SHOW EVENTS; ---exec $MYSQL_DUMP --skip-events --all-databases > $MYSQLTEST_VARDIR/tmp/bug29938.sql +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-events --all-databases > $MYSQLTEST_VARDIR/tmp/bug29938.sql TRUNCATE mysql.event; --exec $MYSQL < $MYSQLTEST_VARDIR/tmp/bug29938.sql SHOW EVENTS; --remove_file $MYSQLTEST_VARDIR/tmp/bug29938.sql - --echo # --echo # Bug#31113 mysqldump 5.1 can't handle a dash ("-") in database names --echo # @@ -1968,7 +1967,7 @@ WHERE table_schema = 'mysqldump_test_db' AND table_name = 'v1'; --echo --echo ---> Dumping mysqldump_test_db to bug30217.sql ---exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --databases mysqldump_test_db > $MYSQLTEST_VARDIR/tmp/bug30217.sql +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --character-sets-dir=$MYSQL_SHAREDIR/charsets --databases mysqldump_test_db > $MYSQLTEST_VARDIR/tmp/bug30217.sql --echo @@ -2002,7 +2001,7 @@ DROP DATABASE mysqldump_test_db; create table t1 (a int); create view v1 as select a from t1; ---exec $MYSQL_DUMP --skip-comments --tab=$MYSQLTEST_VARDIR/tmp/ test t1 v1 +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments --tab=$MYSQLTEST_VARDIR/tmp/ test t1 v1 drop view v1; drop table t1; @@ -2122,17 +2121,17 @@ INSERT INTO t1 VALUES (1, 'ABC-ÐБВ', 'DEF-ÂÃÄ'), (2, NULL, NULL); --replace_result mysqldump.exe mysqldump --error 2 ---exec $MYSQL_DUMP --tab=$MYSQLTEST_VARDIR/tmp/ --fields-enclosed-by='12345' test t1 +--exec $MYSQL_DUMP --disable-default-character-set --tab=$MYSQLTEST_VARDIR/tmp/ --fields-enclosed-by='12345' test t1 --remove_file $file --replace_result mysqldump.exe mysqldump --error 2 ---exec $MYSQL_DUMP --tab=$MYSQLTEST_VARDIR/tmp/ --fields-escaped-by='12345' test t1 +--exec $MYSQL_DUMP --disable-default-character-set --tab=$MYSQLTEST_VARDIR/tmp/ --fields-escaped-by='12345' test t1 --remove_file $file --echo # default '--default-charset' (binary): ---exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --tab=$MYSQLTEST_VARDIR/tmp/ test t1 +--exec $MYSQL_DUMP --disable-default-character-set --character-sets-dir=$MYSQL_SHAREDIR/charsets --tab=$MYSQLTEST_VARDIR/tmp/ test t1 --echo ################################################## --cat_file $file --echo ################################################## @@ -2356,7 +2355,7 @@ CREATE FUNCTION `straße` ( c1 CHAR(20)) RETURNS CHAR(50) DETERMINISTIC RETURN CONCAT(']]>, ', s, '!'); ---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --skip-comments --default-character-set=utf8 --compatible=mysql323 -R -X BUG52792 +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --character-sets-dir=$CHARSETSDIR --skip-comments --default-character-set=utf8 --compatible=mysql323 -R -X BUG52792 DROP DATABASE BUG52792; @@ -2373,7 +2372,7 @@ USE test; --echo # CREATE TABLE t1 (a INT); # no_t = no_table_options; no_f = no_field_options ---exec $MYSQL_DUMP --compatible=no_t,no_f --skip-comments test +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --compatible=no_t,no_f --skip-comments test DROP TABLE t1; --echo # @@ -2404,7 +2403,7 @@ INSERT INTO b12809202_db.t2 VALUES (1), (2), (3); # mixing of normal (stdout) and --verbose (stderr) output will happen in random # order depending on stdio internal buffer size. --replace_regex /-- Server version.*// /-- MySQL dump .*// /-- Dump completed on .*/-- Dump completed/ ---exec $MYSQL_DUMP --verbose --single-transaction --flush-logs b12809202_db 2>&1 > $MYSQLTEST_VARDIR/tmp/bug61854.sql +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --verbose --single-transaction --flush-logs b12809202_db 2>&1 > $MYSQLTEST_VARDIR/tmp/bug61854.sql --echo --echo #### Dump ends here #### @@ -2429,7 +2428,7 @@ SET @old_general_log_state= @@global.general_log; SET @old_slow_query_log_state= @@global.slow_query_log; call mtr.add_suppression("Failed to write to mysql.general_log"); ---exec $MYSQL_DUMP -uroot --all-databases > $MYSQLTEST_VARDIR/tmp/bug45740.sql +--exec $MYSQL_DUMP --default-character-set=utf8mb4 -uroot --all-databases > $MYSQLTEST_VARDIR/tmp/bug45740.sql # Make log_output as table and disabling general_log and slow_log SET @@global.log_output="TABLE"; SET @@global.general_log='OFF'; @@ -2449,7 +2448,7 @@ SET @@global.general_log= @old_general_log_state; create table t1 (g GEOMETRY) CHARSET koi8r; create table t2 (g GEOMETRY) CHARSET koi8r; insert into t1 values (point(1,1)), (point(2,2)); ---exec $MYSQL_DUMP --hex-blob --character-sets-dir=$MYSQL_SHAREDIR/charsets --tab=$MYSQLTEST_VARDIR/tmp/ test t1 +--exec $MYSQL_DUMP --disable-default-character-set --hex-blob --character-sets-dir=$MYSQL_SHAREDIR/charsets --tab=$MYSQLTEST_VARDIR/tmp/ test t1 --echo ################################################## --cat_file $file --echo ################################################## @@ -2477,7 +2476,7 @@ INSERT INTO t2 VALUES (3), (4); SELECT * FROM t1; SELECT * FROM t2; ---exec $MYSQL_DUMP --tab=$MYSQLTEST_VARDIR/tmp/ db_20772273 +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --tab=$MYSQLTEST_VARDIR/tmp/ db_20772273 --exec $MYSQL db_20772273 < $MYSQLTEST_VARDIR/tmp/t1.sql --exec $MYSQL db_20772273 < $MYSQLTEST_VARDIR/tmp/t2.sql @@ -2532,7 +2531,7 @@ SELECT ROUTINE_NAME FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA='bug25717383' AND ROUTINE_TYPE= 'PROCEDURE' ORDER BY ROUTINE_NAME; ---exec $MYSQL_DUMP --triggers --events --routines --add-drop-database --databases bug25717383 > $MYSQLTEST_VARDIR/tmp/bug25717383.sql +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --triggers --events --routines --add-drop-database --databases bug25717383 > $MYSQLTEST_VARDIR/tmp/bug25717383.sql SHOW TABLES FROM bug25717383; --replace_column 6 # @@ -2550,14 +2549,14 @@ DROP DATABASE bug25717383; # MDEV-6091 mysqldump goes in a loop and segfaults if --dump-slave is specified and it cannot connect to the server # --error 2 ---exec $MYSQL_DUMP -hunknownhost --dump-slave nulldb +--exec $MYSQL_DUMP --default-character-set=utf8mb4 -hunknownhost --dump-slave nulldb # # MDEV-6056 [PATCH] mysqldump writes usage to stdout even when not explicitly requested # --replace_result mysqldump.exe mysqldump --error 1 ---exec $MYSQL_DUMP --user=foo 2>&1 > $MYSQLTEST_VARDIR/tmp/bug6056.out +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --user=foo 2>&1 > $MYSQLTEST_VARDIR/tmp/bug6056.out --exec $MYSQL_DUMP --help > $MYSQLTEST_VARDIR/tmp/bug6056.out --echo # @@ -2585,8 +2584,8 @@ use test; create table t1 (a int); insert into t1 values (1); ---exec $MYSQL_DUMP --hex-blob --character-sets-dir=$MYSQL_SHAREDIR/charsets --tab=$MYSQLTEST_VARDIR/tmp/ test t1 ---exec $MYSQL_DUMP --disable-log-queries --skip-comments test t1 >$MYSQLTEST_VARDIR/tmp/mysqldump-test.out +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --hex-blob --character-sets-dir=$MYSQL_SHAREDIR/charsets --tab=$MYSQLTEST_VARDIR/tmp/ test t1 +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --disable-log-queries --skip-comments test t1 >$MYSQLTEST_VARDIR/tmp/mysqldump-test.out drop table t1; --exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/mysqldump-test.out @@ -2647,7 +2646,7 @@ CREATE FUNCTION f() RETURNS INT RETURN 1; CREATE VIEW v1 AS SELECT f(); --echo # Running mysqldump -uroot test --routines --tables v1 > **vardir**/test.dmp ---exec $MYSQL_DUMP -uroot test --routines --tables v1 > $MYSQLTEST_VARDIR/test.dmp +--exec $MYSQL_DUMP --default-character-set=utf8mb4 -uroot test --routines --tables v1 > $MYSQLTEST_VARDIR/test.dmp DROP VIEW v1; DROP FUNCTION f; @@ -2698,5 +2697,5 @@ CREATE TRIGGER tt1_t1 BEFORE INSERT ON t1 FOR EACH ROW SET NEW.b=NEW.a + 10; INSERT INTO t1 (a) VALUES (1),(2),(3); ---exec $MYSQL_DUMP --triggers --no-data --no-create-info --add-drop-trigger --skip-comments --databases test +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --triggers --no-data --no-create-info --add-drop-trigger --skip-comments --databases test DROP TABLE t1; diff --git a/mysql-test/t/openssl_1.test b/mysql-test/t/openssl_1.test index e88b3c2c442..0f8e301dd01 100644 --- a/mysql-test/t/openssl_1.test +++ b/mysql-test/t/openssl_1.test @@ -163,17 +163,17 @@ CREATE TABLE t1(a int); INSERT INTO t1 VALUES (1), (2); # Run mysqldump ---exec $MYSQL_DUMP --skip-create-options --skip-comments --ssl-key=$MYSQL_TEST_DIR/std_data/client-key.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert.pem test t1 +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-create-options --skip-comments --ssl-key=$MYSQL_TEST_DIR/std_data/client-key.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert.pem test t1 ---exec $MYSQL_DUMP --skip-create-options --skip-comments --ssl-ca=$MYSQL_TEST_DIR/std_data/cacert.pem --ssl-key=$MYSQL_TEST_DIR/std_data/client-key.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert.pem test +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-create-options --skip-comments --ssl-ca=$MYSQL_TEST_DIR/std_data/cacert.pem --ssl-key=$MYSQL_TEST_DIR/std_data/client-key.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert.pem test ---exec $MYSQL_DUMP --skip-create-options --skip-comments --ssl --ssl-ca=$MYSQL_TEST_DIR/std_data/cacert.pem --ssl-key=$MYSQL_TEST_DIR/std_data/client-key.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert.pem test +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-create-options --skip-comments --ssl --ssl-ca=$MYSQL_TEST_DIR/std_data/cacert.pem --ssl-key=$MYSQL_TEST_DIR/std_data/client-key.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert.pem test # With wrong parameters --replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR mysqldump.exe mysqldump --replace_regex /SSL connection error.*/SSL connection error: xxxx/ --error 2 ---exec $MYSQL_DUMP --skip-create-options --skip-comments --ssl --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert.pem test 2>&1 +--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-create-options --skip-comments --ssl --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert.pem test 2>&1 --echo DROP TABLE t1; --remove_file $MYSQLTEST_VARDIR/tmp/test.sql diff --git a/mysql-test/t/partition_example.opt b/mysql-test/t/partition_example.opt new file mode 100644 index 00000000000..8374626febe --- /dev/null +++ b/mysql-test/t/partition_example.opt @@ -0,0 +1 @@ +--plugin-maturity=unknown diff --git a/mysql-test/t/partition_innodb.test b/mysql-test/t/partition_innodb.test index 8c644103046..b682162f7ea 100644 --- a/mysql-test/t/partition_innodb.test +++ b/mysql-test/t/partition_innodb.test @@ -5,6 +5,7 @@ if (`select plugin_auth_version < "5.6.25" from information_schema.plugins where --source include/not_embedded.inc --source include/have_partition.inc --source include/have_innodb.inc +--source include/default_optimizer_switch.inc call mtr.add_suppression("Deadlock found when trying to get lock; try restarting transaction"); diff --git a/mysql-test/t/partition_key_cache.test b/mysql-test/t/partition_key_cache.test index 067eb7fae59..365a571ae92 100644 --- a/mysql-test/t/partition_key_cache.test +++ b/mysql-test/t/partition_key_cache.test @@ -7,7 +7,7 @@ DROP TABLE IF EXISTS t1, t2, v, x; --echo # Actual test of key caches --echo # Verifing that reads/writes use the key cache correctly -SELECT @org_key_cache_buffer_size:= @@global.default.key_buffer_size; +SET @org_key_cache_buffer_size= @@global.default.key_buffer_size; --echo # Minimize default key cache (almost disabled). SET @@global.default.key_buffer_size = 4096; CREATE TABLE t1 ( diff --git a/mysql-test/t/partition_pruning.test b/mysql-test/t/partition_pruning.test index 9d72e9c0d01..a402359215f 100644 --- a/mysql-test/t/partition_pruning.test +++ b/mysql-test/t/partition_pruning.test @@ -3,6 +3,7 @@ # prune, so the test is EXPLAINs. # -- source include/have_partition.inc +--source include/default_optimizer_switch.inc --disable_warnings drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; diff --git a/mysql-test/t/plugin.opt b/mysql-test/t/plugin.opt new file mode 100644 index 00000000000..8374626febe --- /dev/null +++ b/mysql-test/t/plugin.opt @@ -0,0 +1 @@ +--plugin-maturity=unknown diff --git a/mysql-test/t/plugin_innodb.opt b/mysql-test/t/plugin_innodb.opt new file mode 100644 index 00000000000..8374626febe --- /dev/null +++ b/mysql-test/t/plugin_innodb.opt @@ -0,0 +1 @@ +--plugin-maturity=unknown diff --git a/mysql-test/t/plugin_load.opt b/mysql-test/t/plugin_load.opt index aeeb2e4eb7d..4e8881b1b32 100644 --- a/mysql-test/t/plugin_load.opt +++ b/mysql-test/t/plugin_load.opt @@ -1,3 +1,4 @@ +--plugin-maturity=unknown --plugin-load-add=$DIALOG_EXAMPLES_SO --plugin-load=$LIBDAEMON_EXAMPLE_SO --plugin-load-add=EXAMPLE=$HA_EXAMPLE_SO diff --git a/mysql-test/t/plugin_load_option.opt b/mysql-test/t/plugin_load_option.opt index be9bc9d5487..bd9843c7d11 100644 --- a/mysql-test/t/plugin_load_option.opt +++ b/mysql-test/t/plugin_load_option.opt @@ -1,2 +1,3 @@ +--plugin-maturity=unknown --plugin-load-add=EXAMPLE=$HA_EXAMPLE_SO --loose-plugin-example=FORCE_PLUS_PERMANENT diff --git a/mysql-test/t/plugin_not_embedded.opt b/mysql-test/t/plugin_not_embedded.opt new file mode 100644 index 00000000000..8374626febe --- /dev/null +++ b/mysql-test/t/plugin_not_embedded.opt @@ -0,0 +1 @@ +--plugin-maturity=unknown diff --git a/mysql-test/t/pool_of_threads.test b/mysql-test/t/pool_of_threads.test index f13a096985c..cb62a27faeb 100644 --- a/mysql-test/t/pool_of_threads.test +++ b/mysql-test/t/pool_of_threads.test @@ -2,13 +2,14 @@ # and run a number of tests -- source include/have_pool_of_threads.inc -SET @save_optimizer_switch=@@optimizer_switch; +-- 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 -- source include/common-tests.inc -SET optimizer_switch=@save_optimizer_switch; +SET optimizer_switch=default; # Test that we cannot have more simultaneous connections than # --thread-pool-size on the standard port, but _can_ have additional diff --git a/mysql-test/t/ps-master.opt b/mysql-test/t/ps-master.opt index 2ae67eedad8..0fa6f43b7ef 100644 --- a/mysql-test/t/ps-master.opt +++ b/mysql-test/t/ps-master.opt @@ -1 +1 @@ ---log-output=table,file --slow-query-log --log-queries-not-using-indexes --general-log +--log-output=table,file --slow-query-log --log-queries-not-using-indexes --general-log --character-set-server=latin1 --collation_server=latin1_swedish_ci --sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION diff --git a/mysql-test/t/ps.test b/mysql-test/t/ps.test index 49284e64961..b82394b56f6 100644 --- a/mysql-test/t/ps.test +++ b/mysql-test/t/ps.test @@ -1814,7 +1814,6 @@ drop database mysqltest_1; deallocate prepare stmt; set @@character_set_server= @old_character_set_server; - # # BUG#24491 "using alias from source table in insert ... on duplicate key" # diff --git a/mysql-test/t/query_cache.test b/mysql-test/t/query_cache.test index 1b1e24bc6f4..4091b8406fa 100644 --- a/mysql-test/t/query_cache.test +++ b/mysql-test/t/query_cache.test @@ -1,6 +1,7 @@ -- source include/have_query_cache.inc -- source include/long_test.inc +set @save_query_cache_size=@@query_cache_size; # # Tests with query cache # @@ -1236,7 +1237,7 @@ set session query_cache_type=on; drop database db1; show status like 'Qcache_queries_in_cache'; drop database db2; - set global query_cache_size=default; + set global query_cache_size=@save_query_cache_size; --disable_warnings drop database if exists db1; @@ -1266,7 +1267,7 @@ set session query_cache_type=on; set GLOBAL query_cache_type=default; set GLOBAL query_cache_limit=default; set GLOBAL query_cache_min_res_unit=default; -set GLOBAL query_cache_size=default; +set GLOBAL query_cache_size=@save_query_cache_size; set local query_cache_type=default; set GLOBAL query_cache_type=on; set local query_cache_type=on; @@ -1632,6 +1633,7 @@ select @@query_cache_size, @@global.query_cache_type, @@local.query_cache_type; --echo # USER_STATISTICS (and in HOST_STATISTICS) --echo # +set @save_userstat=@@global.userstat; SET GLOBAL userstat=1; set GLOBAL query_cache_size=1355776; FLUSH USER_STATISTICS; @@ -1716,7 +1718,7 @@ show status like "Qcache_hits"; drop procedure p1; drop table t1; set GLOBAL query_cache_size=1355776; -SET GLOBAL userstat=default; +SET GLOBAL userstat=@save_userstat; --echo End of 5.5 tests @@ -1784,5 +1786,4 @@ drop table t1; --echo restore defaults SET GLOBAL query_cache_type= default; -SET GLOBAL query_cache_size= default; -SET LOCAL query_cache_type= default; +SET GLOBAL query_cache_size=@save_query_cache_size; diff --git a/mysql-test/t/query_cache_debug.test b/mysql-test/t/query_cache_debug.test index 22ff1d45e63..90b76077cac 100644 --- a/mysql-test/t/query_cache_debug.test +++ b/mysql-test/t/query_cache_debug.test @@ -4,6 +4,9 @@ --source include/long_test.inc set global query_cache_type= ON; +set @save_query_cache_size=@@global.query_cache_size; +SET @save_concurrent_insert= @@GLOBAL.concurrent_insert; + # # Bug #30887 Server crashes on SET GLOBAL query_cache_size=0 # @@ -53,9 +56,6 @@ drop table t1; # Bug#41098: Query Cache returns wrong result with concurrent insert # -SET @old_concurrent_insert= @@GLOBAL.concurrent_insert; -SET @old_query_cache_size= @@GLOBAL.query_cache_size; - --disable_warnings DROP TABLE IF EXISTS t1, t2; --enable_warnings @@ -247,8 +247,6 @@ SET GLOBAL query_cache_type= DEFAULT; --echo # Bug#56822: Add a thread state for sessions waiting on the query cache lock --echo # -SET @old_query_cache_size= @@GLOBAL.query_cache_size; - --disable_warnings DROP TABLE IF EXISTS t1; --enable_warnings @@ -297,7 +295,7 @@ connection default; SET DEBUG_SYNC= 'RESET'; RESET QUERY CACHE; DROP TABLE t1; -SET GLOBAL query_cache_size= DEFAULT; +SET GLOBAL query_cache_size= @save_query_cache_size; SET GLOBAL query_cache_type= DEFAULT; --echo # @@ -322,16 +320,13 @@ SET GLOBAL query_cache_type= 1; --connect (con2,localhost,root,,test) --connect (con1,localhost,root,,test) set debug_sync="wait_in_query_cache_store_query SIGNAL parked WAIT_FOR go"; ---send - - SELECT DISTINCT id FROM t1 WHERE id BETWEEN 5603 AND 16218 ORDER BY k; +--send SELECT DISTINCT id FROM t1 WHERE id BETWEEN 5603 AND 16218 ORDER BY k --connection default set debug_sync="now WAIT_FOR parked"; --connection con2 ---send - SET GLOBAL query_cache_type= 0; +--send SET GLOBAL query_cache_type= 0; --connection default set debug_sync="now SIGNAL go"; @@ -347,7 +342,8 @@ set debug_sync="now SIGNAL go"; --connection default set debug_sync= 'RESET'; DROP TABLE t1; -SEt GLOBAL query_cache_size= DEFAULT; -SEt GLOBAL query_cache_type= DEFAULT; +SET GLOBAL query_cache_size=@save_query_cache_size; +SET GLOBAL query_cache_type= DEFAULT; +SET @@GLOBAL.concurrent_insert=@save_concurrent_insert; --echo # End of 5.5 tests diff --git a/mysql-test/t/query_cache_innodb.test b/mysql-test/t/query_cache_innodb.test index ba62ec36c16..72ae891e331 100644 --- a/mysql-test/t/query_cache_innodb.test +++ b/mysql-test/t/query_cache_innodb.test @@ -2,6 +2,8 @@ --source include/have_query_cache.inc --source include/not_embedded.inc +set @save_query_cache_size=@@query_cache_size; + --echo # --echo # MDEV-12485: foreign key on delete cascade stale entries with --echo # query cache enabled @@ -81,5 +83,5 @@ call mtr.add_suppression("\\[ERROR\\] Invalid \\(old\\?\\) table or database nam --source include/search_pattern_in_file.inc set global query_cache_type=DEFAULT; -set global query_cache_size=DEFAULT; +set global query_cache_size=@save_query_cache_size; --echo End of 10.2 tests diff --git a/mysql-test/t/query_cache_merge.test b/mysql-test/t/query_cache_merge.test index 3046c4ecbfe..6212ff624e0 100644 --- a/mysql-test/t/query_cache_merge.test +++ b/mysql-test/t/query_cache_merge.test @@ -1,5 +1,8 @@ # Test query cache with many tables +set @save_query_cache_size=@@global.query_cache_size; +set @save_query_cache_type=@@global.query_cache_type; + SET GLOBAL query_cache_type=ON; SET LOCAL query_cache_type=ON; @@ -105,8 +108,7 @@ while ($c) dec $c; } -SET @@global.query_cache_size = default; +SET @@global.query_cache_size = @save_query_cache_size; SET @@global.table_definition_cache = @save_table_definition_cache; - -SET GLOBAL query_cache_type=default; +SET @@global.query_cache_type = @save_query_cache_type; --echo End of 5.1 tests diff --git a/mysql-test/t/query_cache_notembedded.test b/mysql-test/t/query_cache_notembedded.test index dff6c2a139b..03c9d9e4cd4 100644 --- a/mysql-test/t/query_cache_notembedded.test +++ b/mysql-test/t/query_cache_notembedded.test @@ -4,7 +4,6 @@ # Save the initial number of concurrent sessions --source include/count_sessions.inc - # # Tests with query cache # @@ -277,9 +276,7 @@ DROP USER 'bug30269'@'localhost'; set GLOBAL query_cache_type=ON; set LOCAL query_cache_type=ON; -set GLOBAL query_cache_limit=default; -set GLOBAL query_cache_min_res_unit=default; -set GLOBAL query_cache_size=default; +set GLOBAL query_cache_size=@query_cache_size_save; # # Bug#3583 query cache doesn't work for stored procedures @@ -333,4 +330,3 @@ delimiter ;| SET GLOBAL query_cache_size=@query_cache_size_save; SET GLOBAL query_cache_type=@query_cache_type_save; set GLOBAL sql_mode=@sql_mode_save; - diff --git a/mysql-test/t/query_cache_ps_no_prot.test b/mysql-test/t/query_cache_ps_no_prot.test index 4b2bb842e34..61388b0f97a 100644 --- a/mysql-test/t/query_cache_ps_no_prot.test +++ b/mysql-test/t/query_cache_ps_no_prot.test @@ -12,6 +12,8 @@ # We cannot run on embedded server because we use multiple sessions. --source include/not_embedded.inc --source include/have_query_cache.inc +--source include/default_charset.inc + let collation=utf8_unicode_ci; --source include/have_collation.inc diff --git a/mysql-test/t/query_cache_with_views.test b/mysql-test/t/query_cache_with_views.test index 9b03d0e99d0..c55327e3d0a 100644 --- a/mysql-test/t/query_cache_with_views.test +++ b/mysql-test/t/query_cache_with_views.test @@ -6,6 +6,9 @@ drop table if exists t1,t2,v1,v2,v3; drop view if exists t1,t2,v1,v2,v3; --enable_warnings + +set @save_query_cache_size=@@global.query_cache_size; +set @save_query_cache_type=@@global.query_cache_type; set GLOBAL query_cache_type=ON; set LOCAL query_cache_type=ON; set GLOBAL query_cache_size=1355776; @@ -145,5 +148,5 @@ DROP VIEW t1_view; SET AUTOCOMMIT=DEFAULT; # Reset default environment. -set GLOBAL query_cache_size=default; -set GLOBAL query_cache_type=default; +set GLOBAL query_cache_size=@save_query_cache_size; +set GLOBAL query_cache_type=@save_query_cache_type; diff --git a/mysql-test/t/range.test b/mysql-test/t/range.test index ed68cfb9583..2558ae4e404 100644 --- a/mysql-test/t/range.test +++ b/mysql-test/t/range.test @@ -2,6 +2,7 @@ # Problem with range optimizer # --source include/have_innodb.inc +SET optimizer_use_condition_selectivity=1; --disable_warnings drop table if exists t1, t2, t3, t10, t100; diff --git a/mysql-test/t/range_interrupted-13751.test b/mysql-test/t/range_interrupted-13751.test index 000a46383e8..8b2c1834ee5 100644 --- a/mysql-test/t/range_interrupted-13751.test +++ b/mysql-test/t/range_interrupted-13751.test @@ -1,4 +1,6 @@ -source include/have_debug.inc; +-- source include/have_debug.inc +--source include/default_optimizer_switch.inc + # # MDEV-13751 Interrupted SELECT fails with 1030: 'Got error 1 "Operation not permitted" from storage engine MyISAM' # diff --git a/mysql-test/t/range_mrr_icp.test b/mysql-test/t/range_mrr_icp.test index 724da8aea3b..4a8f16ac419 100644 --- a/mysql-test/t/range_mrr_icp.test +++ b/mysql-test/t/range_mrr_icp.test @@ -1,3 +1,5 @@ +--source include/default_optimizer_switch.inc + set @mrr_icp_extra_tmp=@@optimizer_switch; set optimizer_switch='mrr=on,mrr_sort_keys=on,index_condition_pushdown=on'; diff --git a/mysql-test/t/range_vs_index_merge.test b/mysql-test/t/range_vs_index_merge.test index 84b87579e85..60c912e9c3e 100644 --- a/mysql-test/t/range_vs_index_merge.test +++ b/mysql-test/t/range_vs_index_merge.test @@ -1,3 +1,6 @@ +--source include/default_optimizer_switch.inc +--source include/default_charset.inc + --disable_warnings DROP TABLE IF EXISTS t1,t2,t3,t4; DROP DATABASE IF EXISTS world; diff --git a/mysql-test/t/repair.test b/mysql-test/t/repair.test index 5494e370133..75978ac482b 100644 --- a/mysql-test/t/repair.test +++ b/mysql-test/t/repair.test @@ -1,6 +1,9 @@ # # Test of repair table # +--source include/default_charset.inc + +call mtr.add_suppression("character set is multi-byte"); --disable_warnings drop table if exists t1; @@ -199,6 +202,9 @@ drop tables t1, t2; --echo # Test with a saved table from 3.23 let $MYSQLD_DATADIR= `select @@datadir`; + +SET @save_global_character_set_server= @@global.character_set_server; +set @@global.character_set_server=@@character_set_server; --copy_file std_data/host_old.frm $MYSQLD_DATADIR/test/t1.frm --copy_file std_data/host_old.MYD $MYSQLD_DATADIR/test/t1.MYD --copy_file std_data/host_old.MYI $MYSQLD_DATADIR/test/t1.MYI @@ -212,6 +218,8 @@ select count(*) from t1; check table t1; drop table t1; +set @@global.character_set_server=@save_global_character_set_server; + # # MDEV-8115 mysql_upgrade crashes the server with REPAIR VIEW # diff --git a/mysql-test/t/schema.test b/mysql-test/t/schema.test index 8f9047e2e3f..e8ab4e406c0 100644 --- a/mysql-test/t/schema.test +++ b/mysql-test/t/schema.test @@ -6,6 +6,7 @@ # Save the initial number of concurrent sessions. --source include/count_sessions.inc +--source include/default_charset.inc --disable_warnings drop database if exists mysqltest1; diff --git a/mysql-test/t/select.test b/mysql-test/t/select.test index a0caf4992bf..2567d189465 100644 --- a/mysql-test/t/select.test +++ b/mysql-test/t/select.test @@ -13,7 +13,8 @@ drop table if exists t1_1,t1_2,t9_1,t9_2,t1aa,t2aa; drop view if exists v1; --enable_warnings -SET @save_optimizer_switch=@@optimizer_switch; +--source include/default_optimizer_switch.inc + SET optimizer_switch=ifnull(@optimizer_switch_for_select_test,'outer_join_with_cache=off'); if (`select @join_cache_level_for_select_test is null`) { @@ -4174,13 +4175,13 @@ INSERT INTO t5 VALUES (20),(5); CREATE TABLE t6(f1 int); INSERT INTO t6 VALUES (9),(7); -SET SESSION join_buffer_size = 2176; +SET @save_join_buffer_size=@@join_buffer_size,@@join_buffer_size = 2176; EXPLAIN SELECT STRAIGHT_JOIN * FROM t2, (t1 LEFT JOIN (t3,t4) ON t1.f1 = t4.f1), t5, t6; SELECT STRAIGHT_JOIN * FROM t2, (t1 LEFT JOIN (t3,t4) ON t1.f1 = t4.f1), t5, t6; -SET SESSION join_buffer_size = DEFAULT; +SET SESSION join_buffer_size = @save_join_buffer_size; DROP TABLE t1,t2,t3,t4,t5,t6; @@ -4478,7 +4479,7 @@ CREATE TABLE t1 (a TINYBLOB NOT NULL); SELECT a, COUNT(*) FROM t1 WHERE 0; DROP TABLE t1; -SET optimizer_switch=@save_optimizer_switch; +SET @@optimizer_switch=@save_optimizer_switch; --echo # --echo # LP bug#994275 Assertion `real->type() == Item::FIELD_ITEM' failed diff --git a/mysql-test/t/select_jcl6.test b/mysql-test/t/select_jcl6.test index f7c1aa988c7..5ee2f906c89 100644 --- a/mysql-test/t/select_jcl6.test +++ b/mysql-test/t/select_jcl6.test @@ -17,7 +17,6 @@ set @join_cache_level_for_select_test=@@join_cache_level; --source t/select.test set join_cache_level=default; -show variables like 'join_cache_level'; set @@optimizer_switch=@save_optimizer_switch_jcl6; set @optimizer_switch_for_select_test=NULL; diff --git a/mysql-test/t/selectivity.test b/mysql-test/t/selectivity.test index f1c9d6b31b8..b517b26bc1b 100644 --- a/mysql-test/t/selectivity.test +++ b/mysql-test/t/selectivity.test @@ -1,5 +1,6 @@ --source include/have_stat_tables.inc --source include/have_sequence.inc +--source include/default_charset.inc --disable_warnings drop table if exists t0,t1,t2,t3; @@ -9,12 +10,14 @@ select @@global.use_stat_tables; select @@session.use_stat_tables; set @save_use_stat_tables=@@use_stat_tables; - set use_stat_tables='preferably'; +--source include/default_optimizer_switch.inc set @save_optimizer_use_condition_selectivity=@@optimizer_use_condition_selectivity; set @save_histogram_size=@@histogram_size; set @save_histogram_type=@@histogram_type; +set join_cache_level=2; +set @@global.histogram_size=0,@@local.histogram_size=0; # check that statistics on nulls is used @@ -1108,6 +1111,8 @@ drop function f1; --echo # set @@optimizer_use_condition_selectivity=4; set @@use_stat_tables='preferably'; +set @save_histogram_size=@@histogram_size; +set @@histogram_size=0; create table t1 (a int, b int, key (b), key (a)); insert into t1 select (rand(1)*1000)/10, (rand(1001)*1000)/50 from seq_1_to_1000; @@ -1123,6 +1128,12 @@ explain extended select * from t1 where a in (17,51,5) and b=2; drop table t1; set use_stat_tables= @save_use_stat_tables; +set @@histogram_size=@save_histogram_size; set optimizer_use_condition_selectivity=@save_optimizer_use_condition_selectivity; --echo # End of 10.1 tests +# +# Clean up +# +--source include/restore_charset.inc +set @@global.histogram_size=@save_histogram_size; diff --git a/mysql-test/t/selectivity_innodb.test b/mysql-test/t/selectivity_innodb.test index f407eb052fe..6c457e2848b 100644 --- a/mysql-test/t/selectivity_innodb.test +++ b/mysql-test/t/selectivity_innodb.test @@ -1,6 +1,7 @@ --source include/have_innodb.inc # This test is slow on buildbot. --source include/big_test.inc +--source include/default_optimizer_switch.inc SET SESSION STORAGE_ENGINE='InnoDB'; @@ -175,4 +176,5 @@ drop view v1; set use_stat_tables= @tmp_ust; set optimizer_use_condition_selectivity= @tmp_oucs; +set @@global.histogram_size=@save_histogram_size; SET SESSION STORAGE_ENGINE=DEFAULT; diff --git a/mysql-test/t/selectivity_no_engine.test b/mysql-test/t/selectivity_no_engine.test index 2a31c01ed97..345b7bd1e8a 100644 --- a/mysql-test/t/selectivity_no_engine.test +++ b/mysql-test/t/selectivity_no_engine.test @@ -1,4 +1,5 @@ --source include/have_stat_tables.inc +--source include/default_optimizer_switch.inc --echo # --echo # Engine-agnostic tests for statistics-based selectivity calculations. diff --git a/mysql-test/t/set_statement.test b/mysql-test/t/set_statement.test index 32f56e498df..1c70ed6281a 100644 --- a/mysql-test/t/set_statement.test +++ b/mysql-test/t/set_statement.test @@ -991,11 +991,17 @@ set @save_long_query_time= @@long_query_time; set @save_slow_query_log= @@slow_query_log; set @save_log_output= @@log_output; +let $long_query_time=`select @@long_query_time`; +--replace_result $long_query_time DEFAULT set statement long_query_time=default for select @@long_query_time; + +# Disable result log as the results depends on the values of the variables +--disable_result_log set statement log_slow_filter=default for select @@log_slow_filter; set statement log_slow_verbosity=default for select @@log_slow_verbosity; set statement log_slow_rate_limit=default for select @@log_slow_rate_limit; set statement slow_query_log=default for select @@slow_query_log; +--enable_result_log truncate table mysql.slow_log; set slow_query_log= 1; diff --git a/mysql-test/t/show_bad_definer-5553.test b/mysql-test/t/show_bad_definer-5553.test index c5b6f1b3d10..fd200e3f2bc 100644 --- a/mysql-test/t/show_bad_definer-5553.test +++ b/mysql-test/t/show_bad_definer-5553.test @@ -1,4 +1,6 @@ --source include/not_embedded.inc +--source include/default_charset.inc + # # MDEV-5553 A view or procedure with a non existing definer can block "SHOW TABLE STATUS" with an unclear error message # diff --git a/mysql-test/t/show_check.test b/mysql-test/t/show_check.test index 526182f100f..3231b64bc4f 100644 --- a/mysql-test/t/show_check.test +++ b/mysql-test/t/show_check.test @@ -17,6 +17,11 @@ # depends on the presence of the log tables (which are CSV-based). --source include/have_csv.inc +# Test results assumes we are using latin1 +--source include/default_charset.inc +SET @@global.character_set_server= @@session.character_set_server; +set @@sql_mode="STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"; + # # Test of some show commands # @@ -261,7 +266,7 @@ SET sql_mode= @old_sql_mode; # Test for Bug#2719 Heap tables status shows wrong or missing data. # -select @@max_heap_table_size; +set @@max_heap_table_size=1048576; CREATE TABLE t1 ( a int(11) default NULL, @@ -1406,3 +1411,5 @@ SHOW WARNINGS; SHOW CONTRIBUTORS; --enable_result_log SHOW WARNINGS; + +SET @@global.character_set_server=@save_character_set_server; diff --git a/mysql-test/t/sp-error.test b/mysql-test/t/sp-error.test index aa537d3596b..4dd3c51e4b0 100644 --- a/mysql-test/t/sp-error.test +++ b/mysql-test/t/sp-error.test @@ -2,6 +2,8 @@ # Stored PROCEDURE error tests # +--source include/default_charset.inc + --disable_warnings drop table if exists t1, t2; --enable_warnings diff --git a/mysql-test/t/sp-security.test b/mysql-test/t/sp-security.test index 4f645ce2cd3..30d7e4cf895 100644 --- a/mysql-test/t/sp-security.test +++ b/mysql-test/t/sp-security.test @@ -3,7 +3,9 @@ # # Can't test with embedded server that doesn't support grants --- source include/not_embedded.inc +--source include/not_embedded.inc +--source include/default_charset.inc +set @@global.character_set_server=@@session.character_set_server; # Save the initial number of concurrent sessions --source include/count_sessions.inc @@ -1080,3 +1082,5 @@ disconnect u1; connection default; DROP DATABASE u1; DROP USER u1@localhost; + +set @@global.character_set_server=@save_character_set_server; diff --git a/mysql-test/t/sp.test b/mysql-test/t/sp.test index 2d91cecd98b..466a9bd5204 100644 --- a/mysql-test/t/sp.test +++ b/mysql-test/t/sp.test @@ -14,6 +14,11 @@ # Tests that require --with-geometry go into sp_gis.test # Tests that require multibyte character sets, which are not always available, # go into separate files (e.g. sp-ucs2.test) + +--source include/default_charset.inc +set @save_character_set_client=@@character_set_client; +set @save_userstat=@@global.userstat, @@global.userstat= 0; + use test; # Test tables @@ -4087,7 +4092,8 @@ call bug6063()| call bug7088_1()| call bug7088_2()| -set character set default| +set @@character_set_client=@save_character_set_client| +set @@character_set_results=@save_character_set_client| show create procedure bug6063| show create procedure bug7088_1| @@ -7362,7 +7368,8 @@ DELIMITER ;| CALL p1(); -SET NAMES default; +set @@character_set_client=@save_character_set_client; +set @@character_set_results=@save_character_set_client; DROP PROCEDURE p1; # @@ -8238,6 +8245,7 @@ drop procedure p; # # Bug#43962 "Packets out of order" calling a SHOW TABLE STATUS # + DELIMITER //; CREATE DEFINER = 'root'@'localhost' PROCEDURE p1() NOT DETERMINISTIC @@ -9067,6 +9075,7 @@ DROP PROCEDURE p1; --echo # End of 5.5 test #MDEV-17610 +FLUSH USER_STATISTICS; CREATE PROCEDURE sp() ALTER TABLE non_existing_table OPTIMIZE PARTITION p0; CALL sp; SELECT 1; diff --git a/mysql-test/t/ssl.test b/mysql-test/t/ssl.test index 67db668a1c2..45c903d43d2 100644 --- a/mysql-test/t/ssl.test +++ b/mysql-test/t/ssl.test @@ -8,6 +8,8 @@ # Save the initial number of concurrent sessions --source include/count_sessions.inc +--source include/default_charset.inc + connect (ssl_con,localhost,root,,,,,SSL); # Check ssl turned on diff --git a/mysql-test/t/ssl_compress.test b/mysql-test/t/ssl_compress.test index 588d4555db8..4e17beb0fba 100644 --- a/mysql-test/t/ssl_compress.test +++ b/mysql-test/t/ssl_compress.test @@ -4,6 +4,7 @@ -- source include/have_ssl_communication.inc -- source include/have_compress.inc -- source include/not_staging.inc +--source include/default_optimizer_switch.inc # Save the initial number of concurrent sessions --source include/count_sessions.inc diff --git a/mysql-test/t/stat_tables-enospc.test b/mysql-test/t/stat_tables-enospc.test index 12e42f6adc0..932b2bde302 100644 --- a/mysql-test/t/stat_tables-enospc.test +++ b/mysql-test/t/stat_tables-enospc.test @@ -3,6 +3,7 @@ # # test that ANALYZE TABLE is immediately aborted when going out of disk space --source include/have_debug.inc + call mtr.add_suppression("No space left on device"); create table t1 (a varchar(255), b varchar(255), c varchar(255)); --disable_query_log @@ -16,8 +17,8 @@ while ($i) { --enable_query_log set use_stat_tables=PREFERABLY, optimizer_use_condition_selectivity=3; set debug_dbug='+d,simulate_file_write_error'; +set @@max_heap_table_size=128*1024; --replace_regex /'.*'/'tmp-file'/ analyze table t1; set debug_dbug=''; drop table t1; - diff --git a/mysql-test/t/stat_tables.test b/mysql-test/t/stat_tables.test index 79a7a17550b..4c49df82ca6 100644 --- a/mysql-test/t/stat_tables.test +++ b/mysql-test/t/stat_tables.test @@ -4,6 +4,9 @@ select @@global.use_stat_tables; select @@session.use_stat_tables; set @save_use_stat_tables=@@use_stat_tables; +set @save_histogram_size=@@global.histogram_size; +set @@global.histogram_size=0,@@local.histogram_size=0; +set optimizer_use_condition_selectivity=1; set use_stat_tables='preferably'; @@ -511,7 +514,6 @@ set names utf8; set @save_optimizer_use_condition_selectivity=@@optimizer_use_condition_selectivity; set optimizer_use_condition_selectivity=4; set use_stat_tables=preferably; -set @save_histogram_size= @@histogram_size; set histogram_size=255; create table t1 ( a varchar(255) character set utf8); @@ -544,3 +546,4 @@ set @@sql_mode= @save_sql_mode; set use_stat_tables=@save_use_stat_tables; set @@histogram_size= @save_histogram_size; set @@optimizer_use_condition_selectivity=@save_optimizer_use_condition_selectivity; +set @@global.histogram_size=@save_histogram_size; diff --git a/mysql-test/t/statistics.test b/mysql-test/t/statistics.test index 4c45b4f38b8..0ed63ac8bf2 100644 --- a/mysql-test/t/statistics.test +++ b/mysql-test/t/statistics.test @@ -5,6 +5,8 @@ drop table if exists t1,t2; --enable_warnings set @save_use_stat_tables=@@use_stat_tables; +set @save_histogram_size=@@global.histogram_size; +set @@global.histogram_size=0,@@local.histogram_size=0; DELETE FROM mysql.table_stats; --sorted_result @@ -913,3 +915,5 @@ DROP TABLE t1; --echo # --echo # End of 10.2 tests --echo # + +set @@global.histogram_size=@save_histogram_size; diff --git a/mysql-test/t/subselect.test b/mysql-test/t/subselect.test index e0778a8954d..7e16321dac1 100644 --- a/mysql-test/t/subselect.test +++ b/mysql-test/t/subselect.test @@ -26,7 +26,8 @@ if (`select @join_cache_level_for_subselect_test is not null`) { set join_cache_level=@join_cache_level_for_subselect_test; } - set optimizer_switch='mrr=on,mrr_sort_keys=on,index_condition_pushdown=on'; +SET optimizer_switch='mrr=on,mrr_sort_keys=on,index_condition_pushdown=on'; +SET optimizer_use_condition_selectivity=1; select (select 2); explain extended select (select 2); diff --git a/mysql-test/t/subselect2.test b/mysql-test/t/subselect2.test index 5f7e5f80626..3b982b8b7d0 100644 --- a/mysql-test/t/subselect2.test +++ b/mysql-test/t/subselect2.test @@ -7,6 +7,7 @@ --disable_warnings drop table if exists t1, t2, t3, t4; --enable_warnings +--source include/default_optimizer_switch.inc set @subselect2_test_tmp=@@optimizer_switch; set optimizer_switch='semijoin=on,firstmatch=on,mrr=on,mrr_sort_keys=on,index_condition_pushdown=on'; @@ -396,7 +397,7 @@ DEALLOCATE PREPARE stmt; DROP VIEW v1; DROP TABLE t1,t2,t3; -set optimizer_switch=@subselect2_test_tmp; +set optimizer_switch=@save_optimizer_switch; # # Bug #23303485 : HANDLE_FATAL_SIGNAL (SIG=11) IN SUBSELECT_UNION_ENGINE::NO_ROWS diff --git a/mysql-test/t/subselect3.inc b/mysql-test/t/subselect3.inc new file mode 100644 index 00000000000..8ed1c9ee210 --- /dev/null +++ b/mysql-test/t/subselect3.inc @@ -0,0 +1,1306 @@ +--disable_warnings +drop table if exists t0, t1, t2, t3, t4, t5, t11, t12, t21, t22; +--enable_warnings + +set optimizer_switch='semijoin=on,firstmatch=on,loosescan=on,semijoin_with_cache=on'; + +# +# 1. Subquery with GROUP/HAVING +# +create table t1 (oref int, grp int, ie int) ; +insert into t1 (oref, grp, ie) values + (1, 1, 1), + (1, 1, 1), + (1, 2, NULL), + + (2, 1, 3), + + (3, 1, 4), + (3, 2, NULL); + +# Ok, for +# select max(ie) from t1 where oref=PARAM group by grp +# we'll have: +# PARAM subquery result +# 1 -> {(1), (NULL)} matching + NULL +# 2 -> {(3)} non-matching +# 3 -> {(3), (NULL)} non-matching + NULL +# 4 -> {} empty set + +create table t2 (oref int, a int); +insert into t2 values + (1, 1), + (2, 2), + (3, 3), + (4, NULL), + (2, NULL); + +# true, false, null, false, null +select a, oref, a in (select max(ie) + from t1 where oref=t2.oref group by grp) Z from t2; + +# This must have a trigcond +explain extended +select a, oref, a in (select max(ie) + from t1 where oref=t2.oref group by grp) Z from t2; + +# This must not have a trigcond: +explain extended +select a, oref from t2 +where a in (select max(ie) from t1 where oref=t2.oref group by grp); +select a, oref, a in ( + select max(ie) from t1 where oref=t2.oref group by grp union + select max(ie) from t1 where oref=t2.oref group by grp + ) Z from t2; + +# Non-correlated subquery, 2 NULL evaluations +create table t3 (a int); +insert into t3 values (NULL), (NULL); +flush status; +select a in (select max(ie) from t1 where oref=4 group by grp) from t3; +show status like 'Handler_read_rnd_next'; +select ' ^ This must show 11' Z; + +set @save_optimizer_switch=@@optimizer_switch; +set @@optimizer_switch="partial_match_rowid_merge=off,partial_match_table_scan=off"; + +# This must show trigcond: +explain extended select a in (select max(ie) from t1 where oref=4 group by grp) from t3; + +set @@optimizer_switch=@save_optimizer_switch; +drop table t1, t2, t3; + +# +# 2. Subquery handled with 'index_subquery': +# +create table t1 (a int, oref int, key(a)); +insert into t1 values + (1, 1), + (1, NULL), + (2, 3), + (2, NULL), + (3, NULL); +insert into t1 values (5, 7), (8, 9), (4, 1); + +create table t2 (a int, oref int); +insert into t2 values (1, 1), (2,2), (NULL, 3), (NULL, 4); + +select oref, a, a in (select a from t1 where oref=t2.oref) Z from t2; + +# The next explain shows "using index" but that is just incorrect display +# (there is a bug filed about this). +explain extended +select oref, a, a in (select a from t1 where oref=t2.oref) Z from t2; + +flush status; +select oref, a from t2 where a in (select a from t1 where oref=t2.oref); +# This will only show access to t2: +show status like '%Handler_read_rnd_next'; + +# Check that repeated NULL-scans are not cached (subq. is not correlated): +delete from t2; +insert into t2 values (NULL, 0),(NULL, 0), (NULL, 0), (NULL, 0); + +set optimizer_switch='subquery_cache=off'; +flush status; +select oref, a, a in (select a from t1 where oref=t2.oref) Z from t2; +show status like '%Handler_read%'; +select 'No key lookups, seq reads: 29= 5 reads from t2 + 4 * 6 reads from t1.' Z; +set @@optimizer_switch=@save_optimizer_switch; + +drop table t1, t2; + +# +# 3. Subquery handled with 'unique_index_subquery': +# +create table t1 (a int, b int, primary key (a)); +insert into t1 values (1,1), (3,1),(100,1); + +create table t2 (a int, b int); +insert into t2 values (1,1),(2,1),(NULL,1),(NULL,0); + +select a,b, a in (select a from t1 where t1.b = t2.b) Z from t2 ; + +drop table t1, t2; + +# +# 4. Subquery that is a join, with ref access +# +create table t1 (a int, b int, key(a)); +insert into t1 values + (0,0),(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9); + +create table t2 like t1; +insert into t2 select * from t1; +update t2 set b=1; + +create table t3 (a int, oref int); +insert into t3 values (1, 1), (NULL,1), (NULL,0); +select a, oref, + t3.a in (select t1.a from t1, t2 where t1.b=t2.a and t2.b=t3.oref) Z +from t3; + +# This must have trigcond in WHERE and HAVING: +explain extended +select a, oref, + t3.a in (select t1.a from t1, t2 where t1.b=t2.a and t2.b=t3.oref) Z +from t3; + +drop table t1, t2, t3; + + +# +# BUG#24085: Wrong query result for "NULL IN (SELECT ... UNION SELECT ...)" +# + +# case 1: NULL IN (SELECT not_null_val FROM ...) w/o HAVING/GROUP-BY/etc +create table t1 (a int NOT NULL, b int NOT NULL, key(a)); +insert into t1 values + (0,0),(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9); + +create table t2 like t1; +insert into t2 select * from t1; +update t2 set b=1; + +create table t3 (a int, oref int); +insert into t3 values (1, 1), (NULL,1), (NULL,0); +select a, oref, + t3.a in (select t1.a from t1, t2 where t1.b=t2.a and t2.b=t3.oref) Z +from t3; + +--echo This must show a trig_cond: +explain extended +select a, oref, + t3.a in (select t1.a from t1, t2 where t1.b=t2.a and t2.b=t3.oref) Z +from t3; +drop table t1,t2,t3; + + +# case 2: NULL IN (SELECT not_null_val FROM) where SELECT has GROUP BY +create table t1 (oref int, grp int); +insert into t1 (oref, grp) values + (1, 1), + (1, 1); + +# Ok, for +# select count(*) from t1 group by grp having grp=PARAM +# we'll have: +# PARAM subuqery result +# 1 -> {(2)} +# 2 -> {} - empty set +create table t2 (oref int, a int); +insert into t2 values + (1, NULL), + (2, NULL); + +select a, oref, + a in (select count(*) from t1 group by grp having grp=t2.oref) Z from t2; + +--echo This must show a trig_cond: +explain extended +select a, oref, + a in (select count(*) from t1 group by grp having grp=t2.oref) Z from t2; + +drop table t1, t2; + +create table t1 (a int, b int, primary key (a)); +insert into t1 values (1,1), (3,1),(100,1); +create table t2 (a int, b int); +insert into t2 values (1,1),(2,1),(NULL,1),(NULL,0); + +select a,b, a in (select a from t1 where t1.b = t2.b union select a from +t1 where t1.b = t2.b) Z from t2 ; +select a,b, a in (select a from t1 where t1.b = t2.b) Z from t2 ; +drop table t1, t2; + + +# +# BUG#24127: Incorrect results of row-based subqueries with NULLs on the left side. +# +create table t3 (a int); +insert into t3 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); +create table t2 (a int, b int, oref int); +insert into t2 values (NULL,1, 100), (NULL,2, 100); + +create table t1 (a int, b int, c int, key(a,b)); +insert into t1 select 2*A, 2*A, 100 from t3; + +# First test index subquery engine +explain extended select a,b, oref, (a,b) in (select a,b from t1 where c=t2.oref) Z from t2; +select a,b, oref, (a,b) in (select a,b from t1 where c=t2.oref) Z from t2; + +# Then check that we do turn off 'ref' scans in the subquery +create table t4 (x int); +insert into t4 select A.a + 10*B.a from t1 A, t1 B; +explain extended + select a,b, oref, + (a,b) in (select a,b from t1,t4 where c=t2.oref) Z + from t2; +select a,b, oref, + (a,b) in (select a,b from t1,t4 where c=t2.oref) Z +from t2; + +drop table t1,t2,t3,t4; + +# More tests for tricky multi-column cases, where some of pushed-down +# equalities are used for index lookups and some arent. +create table t1 (oref char(4), grp int, ie1 int, ie2 int); +insert into t1 (oref, grp, ie1, ie2) values + ('aa', 10, 2, 1), + ('aa', 10, 1, 1), + ('aa', 20, 2, 1), + ('bb', 10, 3, 1), + ('cc', 10, 4, 2), + ('cc', 20, 3, 2), + + ('ee', 10, 2, 1), + ('ee', 10, 1, 2), + + ('ff', 20, 2, 2), + ('ff', 20, 1, 2); +create table t2 (oref char(4), a int, b int); +insert into t2 values + ('ee', NULL, 1), + ('bb', 2, 1), + ('ff', 2, 2), + ('cc', 3, NULL), + ('bb', NULL, NULL), + ('aa', 1, 1), + ('dd', 1, NULL); +alter table t1 add index idx(ie1,ie2); + +# cc 3 NULL NULL +select oref, a, b, (a,b) in (select ie1,ie2 from t1 where oref=t2.oref) Z from t2 where a=3 and b is null ; +insert into t2 values ('new1', 10,10); +insert into t1 values ('new1', 1234, 10, NULL); +# new1, 10, 10, NULL, +select oref, a, b, (a,b) in (select ie1,ie2 from t1 where oref=t2.oref) Z from t2 where a=10 and b=10; +explain extended +select oref, a, b, (a,b) in (select ie1,ie2 from t1 where oref=t2.oref) Z from t2 where a=10 and b=10; +drop table t1, t2; + +# Now test different column types: +create table t1 (oref char(4), grp int, ie int); +insert into t1 (oref, grp, ie) values + ('aa', 10, 2), + ('aa', 10, 1), + ('aa', 20, NULL), + + ('bb', 10, 3), + + ('cc', 10, 4), + ('cc', 20, NULL), + + ('ee', 10, NULL), + ('ee', 10, NULL), + + ('ff', 20, 2), + ('ff', 20, 1); + +create table t2 (oref char(4), a int); +insert into t2 values + ('ee', NULL), + ('bb', 2), + ('ff', 2), + ('cc', 3), + ('aa', 1), + ('dd', NULL), + ('bb', NULL); + +select oref, a, a in (select ie from t1 where oref=t2.oref) Z from t2; + +select oref, a from t2 where a in (select ie from t1 where oref=t2.oref); + +select oref, a from t2 where a not in (select ie from t1 where oref=t2.oref); + + +select oref, a, a in (select min(ie) from t1 where oref=t2.oref group by grp) Z from t2; + +select oref, a from t2 where + a in (select min(ie) from t1 where oref=t2.oref group by grp); + +select oref, a from t2 where + a not in (select min(ie) from t1 where oref=t2.oref group by grp); + +# +update t1 set ie=3 where oref='ff' and ie=1; + +select oref, a, a in (select min(ie) from t1 where oref=t2.oref group by +grp) Z from t2; + + +select oref, a from t2 where a in (select min(ie) from t1 where +oref=t2.oref group by grp); + +select oref, a from t2 where a not in (select min(ie) from t1 where +oref=t2.oref group by grp); + +select oref, a, a in (select min(ie) from t1 where oref=t2.oref group by +grp having min(ie) > 1) Z from t2; + +select oref, a from t2 where a in (select min(ie) from t1 where +oref=t2.oref group by grp having min(ie) > 1); + +select oref, a from t2 where a not in (select min(ie) from t1 where +oref=t2.oref group by grp having min(ie) > 1); + +# +alter table t1 add index idx(ie); + +explain select oref, a, a in (select ie from t1 where oref=t2.oref) Z from t2; + +select oref, a, a in (select ie from t1 where oref=t2.oref) Z from t2; + +select oref, a from t2 where a in (select ie from t1 where oref=t2.oref); + +select oref, a from t2 where a not in (select ie from t1 where oref=t2.oref); + + +alter table t1 drop index idx; +alter table t1 add index idx(oref,ie); + +explain select oref, a, a in (select ie from t1 where oref=t2.oref) Z from t2; + +select oref, a, a in (select ie from t1 where oref=t2.oref) Z from t2; + +select oref, a from t2 where a in (select ie from t1 where oref=t2.oref); + +select oref, a from t2 where a not in (select ie from t1 where oref=t2.oref); + +explain +select oref, a, + a in (select min(ie) from t1 where oref=t2.oref + group by grp having min(ie) > 1) Z +from t2; + +select oref, a, + a in (select min(ie) from t1 where oref=t2.oref + group by grp having min(ie) > 1) Z +from t2; + +select oref, a from t2 where a in (select min(ie) from t1 where oref=t2.oref + group by grp having min(ie) > 1); + +select oref, a from t2 where a not in (select min(ie) from t1 where oref=t2.oref + group by grp having min(ie) > 1); + +drop table t1,t2; + +create table t1 (oref char(4), grp int, ie1 int, ie2 int); +insert into t1 (oref, grp, ie1, ie2) values + ('aa', 10, 2, 1), + ('aa', 10, 1, 1), + ('aa', 20, 2, 1), + + ('bb', 10, 3, 1), + + ('cc', 10, 4, 2), + ('cc', 20, 3, 2), + + ('ee', 10, 2, 1), + ('ee', 10, 1, 2), + + ('ff', 20, 2, 2), + ('ff', 20, 1, 2); + +create table t2 (oref char(4), a int, b int); +insert into t2 values + ('ee', NULL, 1), + ('bb', 2, 1), + ('ff', 2, 2), + ('cc', 3, NULL), + ('bb', NULL, NULL), + ('aa', 1, 1), + ('dd', 1, NULL); + +select oref, a, b, (a,b) in (select ie1,ie2 from t1 where oref=t2.oref) Z from t2; + +select oref, a, b from t2 where (a,b) in (select ie1,ie2 from t1 where oref=t2.oref); + +select oref, a, b from t2 where (a,b) not in (select ie1,ie2 from t1 where oref=t2.oref); + +select oref, a, b, + (a,b) in (select min(ie1),max(ie2) from t1 + where oref=t2.oref group by grp) Z +from t2; + +select oref, a, b from t2 where + (a,b) in (select min(ie1), max(ie2) from t1 where oref=t2.oref group by grp); + +select oref, a, b from t2 where + (a,b) not in (select min(ie1), max(ie2) from t1 where oref=t2.oref group by grp); + +alter table t1 add index idx(ie1,ie2); + +explain select oref, a, b, (a,b) in (select ie1,ie2 from t1 where oref=t2.oref) Z from t2; + +select oref, a, b, (a,b) in (select ie1,ie2 from t1 where oref=t2.oref) Z from t2; + +select oref, a, b from t2 where (a,b) in (select ie1,ie2 from t1 where oref=t2.oref); + +select oref, a, b from t2 where (a,b) not in (select ie1,ie2 from t1 where oref=t2.oref); + +explain extended +select oref, a, b, (a,b) in (select ie1,ie2 from t1 where oref=t2.oref) Z from t2; + +drop table t1,t2; + +create table t1 (oref char(4), grp int, ie int primary key); +insert into t1 (oref, grp, ie) values + ('aa', 10, 2), + ('aa', 10, 1), + + ('bb', 10, 3), + + ('cc', 10, 4), + ('cc', 20, 5), + ('cc', 10, 6); + +create table t2 (oref char(4), a int); +insert into t2 values + ('ee', NULL), + ('bb', 2), + ('cc', 5), + ('cc', 2), + ('cc', NULL), + ('aa', 1), + ('bb', NULL); + +explain select oref, a, a in (select ie from t1 where oref=t2.oref) Z from t2; + +select oref, a, a in (select ie from t1 where oref=t2.oref) Z from t2; + +select oref, a from t2 where a in (select ie from t1 where oref=t2.oref); + +select oref, a from t2 where a not in (select ie from t1 where oref=t2.oref); + +explain +select oref, a, a in (select min(ie) from t1 where oref=t2.oref group by grp) Z from t2; + +select oref, a, a in (select min(ie) from t1 where oref=t2.oref group by grp) Z from t2; + +drop table t1,t2; + +# +# BUG#24420: row-based IN suqueries with aggregation when the left operand +# of the subquery predicate may contain NULL values +# + +create table t1 (a int, b int); +insert into t1 values (0,0), (2,2), (3,3); +create table t2 (a int, b int); +insert into t2 values (1,1), (3,3); + +select a, b, (a,b) in (select a, min(b) from t2 group by a) Z from t1; + +insert into t2 values (NULL,4); +select a, b, (a,b) in (select a, min(b) from t2 group by a) Z from t1; + +drop table t1,t2; + +# +# Bug #24484: Aggregate function used in column list subquery gives erroneous +# error +# +CREATE TABLE t1 (a int, b INT, c CHAR(10) NOT NULL, PRIMARY KEY (a, b)); +INSERT INTO t1 VALUES (1,1,'a'), (1,2,'b'), (1,3,'c'), (1,4,'d'), (1,5,'e'), + (2,1,'f'), (2,2,'g'), (2,3,'h'), (3,4,'i'),(3,3,'j'), (3,2,'k'), (3,1,'l'), + (1,9,'m'); +CREATE TABLE t2 (a int, b INT, c CHAR(10) NOT NULL, PRIMARY KEY (a, b)); +INSERT INTO t2 SELECT * FROM t1; + +# Gives error, but should work since it is (a, b) is the PK so only one +# given match possible +SELECT a, MAX(b), (SELECT t.c FROM t1 AS t WHERE t1.a=t.a AND t.b=MAX(t1.b)) + as test FROM t1 GROUP BY a; +SELECT * FROM t1 GROUP by t1.a + HAVING (MAX(t1.b) > (SELECT MAX(t2.b) FROM t2 WHERE t2.c < t1.c + HAVING MAX(t2.b+t1.a) < 10)); + +SELECT a,b,c FROM t1 WHERE b in (9,3,4) ORDER BY b,c; + +SELECT a, MAX(b), + (SELECT COUNT(DISTINCT t.c) FROM t1 AS t WHERE t1.a=t.a AND t.b=MAX(t1.b) + LIMIT 1) + as cnt, + (SELECT t.b FROM t1 AS t WHERE t1.a=t.a AND t.b=MAX(t1.b) LIMIT 1) + as t_b, + (SELECT t.c FROM t1 AS t WHERE t1.a=t.a AND t.b=MAX(t1.b) LIMIT 1) + as t_b, + (SELECT t.c FROM t1 AS t WHERE t1.a=t.a AND t.b=MAX(t1.b) ORDER BY t.c LIMIT 1) + as t_b + FROM t1 GROUP BY a; + +SELECT a, MAX(b), + (SELECT t.c FROM t1 AS t WHERE t1.a=t.a AND t.b=MAX(t1.b) LIMIT 1) as test + FROM t1 GROUP BY a; + + +DROP TABLE t1, t2; + +# The next three test cases must be executed with the IN=>EXISTS strategy +set @@optimizer_switch="partial_match_rowid_merge=off,partial_match_table_scan=off"; + +# +# Bug #27870: crash of an equijoin query with WHERE condition containing +# a subquery predicate of the form <join attr> NOT IN (SELECT ...) +# + +CREATE TABLE t1 (a int); +CREATE TABLE t2 (b int, PRIMARY KEY(b)); +INSERT INTO t1 VALUES (1), (NULL), (4); +INSERT INTO t2 VALUES (3), (1),(2), (5), (4), (7), (6); + +EXPLAIN EXTENDED +SELECT a FROM t1, t2 WHERE a=b AND (b NOT IN (SELECT a FROM t1)); +SELECT a FROM t1, t2 WHERE a=b AND (b NOT IN (SELECT a FROM t1)); +SELECT a FROM t1, t2 WHERE a=b AND (b NOT IN (SELECT a FROM t1 WHERE a > 4)); + +DROP TABLE t1,t2; + +# +# Bug #28375: crash for NOT IN subquery predicate when left operand becomes NULL +# + +CREATE TABLE t1 (id int); +CREATE TABLE t2 (id int PRIMARY KEY); +CREATE TABLE t3 (id int PRIMARY KEY, name varchar(10)); +INSERT INTO t1 VALUES (2), (NULL), (3), (1); +INSERT INTO t2 VALUES (234), (345), (457); +INSERT INTO t3 VALUES (222,'bbb'), (333,'ccc'), (111,'aaa'); + +EXPLAIN +SELECT * FROM t1 + WHERE t1.id NOT IN (SELECT t2.id FROM t2,t3 + WHERE t3.name='xxx' AND t2.id=t3.id); +SELECT * FROM t1 + WHERE t1.id NOT IN (SELECT t2.id FROM t2,t3 + WHERE t3.name='xxx' AND t2.id=t3.id); + +SELECT (t1.id IN (SELECT t2.id FROM t2,t3 + WHERE t3.name='xxx' AND t2.id=t3.id)) AS x + FROM t1; + +DROP TABLE t1,t2,t3; + +# +# Bug #22855: Optimizer doesn't rewrite NOT IN subselects to a correlated +# subquery +# +CREATE TABLE t1 (a INT NOT NULL); +INSERT INTO t1 VALUES (1),(-1), (65),(66); + +CREATE TABLE t2 (a INT UNSIGNED NOT NULL PRIMARY KEY); +INSERT INTO t2 VALUES (65),(66); + +SELECT a FROM t1 WHERE a NOT IN (65,66); +SELECT a FROM t1 WHERE a NOT IN (SELECT a FROM t2); +EXPLAIN SELECT a FROM t1 WHERE a NOT IN (SELECT a FROM t2); + +DROP TABLE t1, t2; + +set @@optimizer_switch=@save_optimizer_switch; + +# +# Bug #34763: item_subselect.cc:1235:Item_in_subselect::row_value_transformer: +# Assertion failed, unexpected error message: +# ERROR 1247 (42S22): Reference '<list ref>' not supported (forward +# reference in item list) +# +CREATE TABLE t1 (a INT); +INSERT INTO t1 VALUES(1); + +CREATE TABLE t2 (placeholder CHAR(11)); +INSERT INTO t2 VALUES("placeholder"); + +SELECT ROW(1, 2) IN (SELECT t1.a, 2) FROM t1 GROUP BY t1.a; +SELECT ROW(1, 2) IN (SELECT t1.a, 2 FROM t2) FROM t1 GROUP BY t1.a; + +DROP TABLE t1, t2; + +# +# Bug #36005: crash in subselect with single row +# (subselect_single_select_engine::exec) +# + +CREATE TABLE t1 (a INT); +INSERT INTO t1 VALUES (1),(2),(3); +CREATE TABLE t2 SELECT * FROM t1; + +SELECT 1 FROM t1 WHERE t1.a NOT IN (SELECT 1 FROM t1, t2 WHERE 0); + +DROP TABLE t1, t2; + +# +# Bug 2198 +# + +create table t1 (a int, b decimal(13, 3)); +insert into t1 values (1, 0.123); +select a, (select max(b) from t1) into outfile "subselect.out.file.1" from t1; +delete from t1; +load data infile "subselect.out.file.1" into table t1; +select * from t1; +drop table t1; +let $datadir=`select @@datadir`; +--remove_file $datadir/test/subselect.out.file.1 + +# +# Bug #37894: Assertion in init_read_record_seq in handler.h line 1444 +# + +CREATE TABLE t1 ( + pk INT PRIMARY KEY, + int_key INT, + varchar_key VARCHAR(5) UNIQUE, + varchar_nokey VARCHAR(5) +); +INSERT INTO t1 VALUES (9, 7,NULL,NULL), (10,8,'p' ,'p'); + +SELECT varchar_nokey +FROM t1 +WHERE NULL NOT IN ( + SELECT INNR.pk FROM t1 AS INNR2 + LEFT JOIN t1 AS INNR ON ( INNR2.int_key = INNR.int_key ) + WHERE INNR.varchar_key > 'n{' +); + +DROP TABLE t1; + +# +# Bug #39069: <row constructor> IN <table-subquery> seriously messed up +# + +CREATE TABLE t1 (a INT); +INSERT INTO t1 VALUES (1), (2), (11); + +--echo # 2nd and 3rd columns should be same +SELECT a, ROW(11, 12) = (SELECT a, 22), ROW(11, 12) IN (SELECT a, 22) FROM t1 GROUP BY t1.a; +SELECT a, ROW(11, 12) = (SELECT a, 12), ROW(11, 12) IN (SELECT a, 12) FROM t1 GROUP BY t1.a; +SELECT a, ROW(11, 12) = (SELECT a, 22), ROW(11, 12) IN (SELECT a, 22) FROM t1; +SELECT a, ROW(11, 12) = (SELECT a, 12), ROW(11, 12) IN (SELECT a, 12) FROM t1; + +# The x alias is used below to workaround bug #40674. +# Regression tests for sum function on outer column in subselect from dual: +SELECT a AS x, ROW(11, 12) = (SELECT MAX(x), 22), ROW(11, 12) IN (SELECT MAX(x), 22) FROM t1; +--echo # 2nd and 3rd columns should be same +EXPLAIN SELECT a AS x, ROW(11, 12) = (SELECT MAX(x), 12), ROW(11, 12) IN (SELECT MAX(x), 12) FROM t1; +SELECT a AS x, ROW(11, 12) = (SELECT MAX(x), 12), ROW(11, 12) IN (SELECT MAX(x), 12) FROM t1; + +DROP TABLE t1; + +--echo # both columns should be same +SELECT ROW(1,2) = (SELECT NULL, NULL), ROW(1,2) IN (SELECT NULL, NULL); +SELECT ROW(1,2) = (SELECT 1, NULL), ROW(1,2) IN (SELECT 1, NULL); +SELECT ROW(1,2) = (SELECT NULL, 2), ROW(1,2) IN (SELECT NULL, 2); +SELECT ROW(1,2) = (SELECT NULL, 1), ROW(1,2) IN (SELECT NULL, 1); +SELECT ROW(1,2) = (SELECT 1, 1), ROW(1,2) IN (SELECT 1, 1); +SELECT ROW(1,2) = (SELECT 1, 2), ROW(1,2) IN (SELECT 1, 2); + +# +# Bug #37362 Crash in do_field_eq +# +# Note that currently this test produces wrong output, see MBug#430669. +# +CREATE TABLE t1 (a INT, b INT, c INT); +INSERT INTO t1 VALUES (1,1,1), (1,1,1); + +--error 1054 +EXPLAIN EXTENDED + SELECT c FROM + ( SELECT + (SELECT COUNT(a) FROM + (SELECT COUNT(b) FROM t1) AS x GROUP BY c + ) FROM t1 GROUP BY b + ) AS y; +SHOW WARNINGS; + +DROP TABLE t1; + + +--echo End of 5.0 tests + +--echo # +--echo # BUG#36896: Server crash on SELECT FROM DUAL +--echo # +create table t1 (a int); +select 1 as res from dual where (1) in (select * from t1); +drop table t1; + +# +# BUG#36135 "void Diagnostics_area::set_eof_status(THD*): Assertion `!is_set()' failed." +# +create table t0 (a int); +insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); + +create table t1 ( + a int(11) default null, + b int(11) default null, + key (a) +); +# produce numbers 0..999 +insert into t1 select A.a+10*(B.a+10*C.a),A.a+10*(B.a+10*C.a) from t0 A, t0 B, t0 C; + +create table t2 (a int(11) default null); +insert into t2 values (0),(1); + +create table t3 (a int(11) default null); +insert into t3 values (0),(1); + +create table t4 (a int(11) default null); +insert into t4 values (0),(1); + +create table t5 (a int(11) default null); +insert into t5 values (0),(1),(0),(1); + +# this must not fail assertion +--error 1242 +select * from t2, t3 +where + t2.a < 10 and + t3.a+1 = 2 and + t3.a in (select t1.b from t1 + where t1.a+1=t1.a+1 and + t1.a < (select t4.a+10 + from t4, t5 limit 2)); + +drop table t0, t1, t2, t3, t4, t5; + +--echo # +--echo # BUG#48177 - SELECTs with NOT IN subqueries containing NULL +--echo # values return too many records +--echo # + +CREATE TABLE t1 ( + i1 int DEFAULT NULL, + i2 int DEFAULT NULL +) ; + +INSERT INTO t1 VALUES (1, NULL); +INSERT INTO t1 VALUES (2, 3); +INSERT INTO t1 VALUES (4, NULL); +INSERT INTO t1 VALUES (4, 0); +INSERT INTO t1 VALUES (NULL, NULL); + +CREATE TABLE t2 ( + i1 int DEFAULT NULL, + i2 int DEFAULT NULL +) ; + +INSERT INTO t2 VALUES (4, NULL); +INSERT INTO t2 VALUES (5, 0); + +--echo +--echo Data in t1 +SELECT i1, i2 FROM t1; + +--echo +--echo Data in subquery (should be filtered out) +SELECT i1, i2 FROM t2 ORDER BY i1; + +FLUSH STATUS; +set @save_optimizer_switch2=@@optimizer_switch; +set optimizer_switch='subquery_cache=off'; + +--echo +SELECT i1, i2 +FROM t1 +WHERE (i1, i2) + NOT IN (SELECT i1, i2 FROM t2); + +--echo +--echo # Check that the subquery only has to be evaluated once +--echo # for all-NULL values even though there are two (NULL,NULL) records +--echo # Baseline: +SHOW STATUS LIKE '%Handler_read_rnd_next'; + +--echo +INSERT INTO t1 VALUES (NULL, NULL); +FLUSH STATUS; + +--echo +SELECT i1, i2 +FROM t1 +WHERE (i1, i2) + NOT IN (SELECT i1, i2 FROM t2); + +--echo +--echo # Handler_read_rnd_next should be one more than baseline +--echo # (read record from t1, but do not read from t2) +SHOW STATUS LIKE '%Handler_read_rnd_next'; + +set @@optimizer_switch=@save_optimizer_switch2; +DROP TABLE t1,t2; + +--echo End of 5.1 tests + +# +# Test for the problem with using sj-materialization when subquery's select +# list element SCOL is covered by equality propagation and has preceding equal +# column PCOL which belongs to a table within the the semi-join nest: SJM-Scan +# process should unpack column value not to SCOL but rather to PCOL, as +# substitute_best_equal has made all conditions to refer to PCOL. +# +CREATE TABLE t1 ( + a int(11) NOT NULL, + b int(11) NOT NULL, + c datetime default NULL, + PRIMARY KEY (a), + KEY idx_bc (b,c) +); + +INSERT INTO t1 VALUES +(406989,67,'2006-02-23 17:08:46'), (150078,67,'2005-10-26 11:17:45'), +(406993,67,'2006-02-27 11:20:57'), (245655,67,'2005-12-08 15:59:08'), +(406994,67,'2006-02-27 11:26:46'), (256,67,NULL), +(398341,67,'2006-02-20 04:48:44'), (254,67,NULL),(1120,67,NULL), +(406988,67,'2006-02-23 17:07:22'), (255,67,NULL), +(398340,67,'2006-02-20 04:38:53'),(406631,67,'2006-02-23 10:49:42'), +(245653,67,'2005-12-08 15:59:07'),(406992,67,'2006-02-24 16:47:18'), +(245654,67,'2005-12-08 15:59:08'),(406995,67,'2006-02-28 11:55:00'), +(127261,67,'2005-10-13 12:17:58'),(406991,67,'2006-02-24 16:42:32'), +(245652,67,'2005-12-08 15:58:27'),(398545,67,'2006-02-20 04:53:13'), +(154504,67,'2005-10-28 11:53:01'),(9199,67,NULL),(1,67,'2006-02-23 15:01:35'), +(223456,67,NULL),(4101,67,NULL),(1133,67,NULL), +(406990,67,'2006-02-23 18:01:45'),(148815,67,'2005-10-25 15:34:17'), +(148812,67,'2005-10-25 15:30:01'),(245651,67,'2005-12-08 15:58:27'), +(154503,67,'2005-10-28 11:52:38'); + +create table t11 select * from t1 where b = 67 AND (c IS NULL OR c > NOW()) order by 3 asc; +create table t12 select * from t1 where b = 67 AND (c IS NULL OR c > NOW()) order by 3 desc; +create table t21 select * from t1 where b = 67 AND (c IS NULL OR c > '2005-12-08') order by 3 asc; +create table t22 select * from t1 where b = 67 AND (c IS NULL OR c > '2005-12-08') order by 3 desc; + +set @@optimizer_switch=@save_optimizer_switch; +set @@optimizer_switch='materialization=off'; + +update t22 set c = '2005-12-08 15:58:27' where a = 255; +explain select t21.* from t21,t22 where t21.a = t22.a and +t22.a in (select t12.a from t11, t12 where t11.a in(255,256) and t11.a = t12.a and t11.c is null) and t22.c is null order by t21.a; +select t21.* from t21,t22 where t21.a = t22.a and +t22.a in (select t12.a from t11, t12 where t11.a in(255,256) and t11.a = t12.a and t11.c is null) and t22.c is null order by t21.a; + +set @@optimizer_switch=@save_optimizer_switch; + +drop table t1, t11, t12, t21, t22; + +# +# Test sj-materialization re-execution. The test isn't meaningful (materialized +# table stays the same across all executions) because it's hard to create a +# dataset that would verify correct re-execution without hitting BUG#31480 +# +create table t1(a int); +insert into t1 values (0),(1); + +set @@optimizer_switch='firstmatch=off,materialization=off'; +explain +select (select max(Y.a) from t1 Y where a in (select a from t1 Z) and a < X.a) as subq from t1 X; +select (select max(Y.a) from t1 Y where a in (select a from t1 Z) and a < X.a) as subq from t1 X; +set @@optimizer_switch=@save_optimizer_switch; + +drop table t1; + +# +# Test confluent duplicate weedout +# +create table t0 (a int); +insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); +create table t1 as select * from t0; +insert into t1 select a+10 from t0; +set @@optimizer_switch='firstmatch=off,materialization=off'; +insert into t0 values(2); +explain select * from t1 where 2 in (select a from t0); +select * from t1 where 2 in (select a from t0); +set @@optimizer_switch=@save_optimizer_switch; +set @@optimizer_switch='materialization=off'; +explain select * from t1 where 2 in (select a from t0); +select * from t1 where 2 in (select a from t0); +set @@optimizer_switch=@save_optimizer_switch; + + +set @@optimizer_switch=@save_optimizer_switch; +set @@optimizer_switch='materialization=off'; + +# +# FirstMatch referring to a derived table +# +set @tmp_optimizer_switch=@@optimizer_switch; +set optimizer_switch='derived_merge=off,derived_with_keys=off'; +explain select * from (select a from t0) X where a in (select a from t1); +drop table t0, t1; +set optimizer_switch=@tmp_optimizer_switch; + +# +# LooseScan: Check if we can pick it together with range access +# +create table t0 (a int); +insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); + +create table t1 (kp1 int, kp2 int, c int, filler char(100), key(kp1, kp2)); +insert into t1 select A.a+10*(B.a+10*C.a), 0, 0, 'filler' from t0 A, t0 B, t0 C; +insert into t1 select * from t1 where kp1 < 20; + +create table t3 (a int); +insert into t3 select A.a + 10*B.a from t0 A, t0 B; + +explain select * from t3 where a in (select kp1 from t1 where kp1<20); + +create table t4 (pk int primary key); +insert into t4 select a from t3; + +explain select * from t3 where a in (select t1.kp1 from t1,t4 where kp1<20 +and t4.pk=t1.c); + +drop table t1, t3, t4; + +set @@optimizer_switch=@save_optimizer_switch; + +# +# Test if we handle duplicate elimination temptable overflowing to disk +# +create table t1 (a int) as select * from t0 where a < 5; + +set @save_max_heap_table_size=@@max_heap_table_size; +set @@optimizer_switch='firstmatch=off,materialization=off'; +set @@max_heap_table_size= 16384; + +explain select count(*) from t0 A, t0 B, t0 C, t0 D where D.a in (select a from t1 E where a+1 < 10000 + A.a + B.a +C.a+D.a); +flush status; +select count(*) from t0 A, t0 B, t0 C, t0 D where D.a in (select a from t1 E where a+1 < 10000 + A.a + B.a +C.a+D.a); +show status like 'Created_tmp_disk_tables'; +set @save_max_heap_table_size=@@max_heap_table_size; +set @@optimizer_switch=@save_optimizer_switch; +drop table t0, t1; + +# +# Materialize + Scan + ref access to the subsequent table based on scanned +# value +# +create table t0 (a int); +insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); +create table t2(a int); +insert into t2 values (1),(2); +create table t3 ( a int , filler char(100), key(a)); +insert into t3 select A.a + 10*B.a, 'filler' from t0 A, t0 B; +explain select * from t3 where a in (select a from t2) and (a > 5 or a < 10); +select * from t3 where a in (select a from t2); + +drop table t0, t2, t3; + +# +# DATETIME type checks +# +set @@optimizer_switch='firstmatch=off,materialization=off'; +create table t1 (a date); +insert into t1 values ('2008-01-01'),('2008-01-01'),('2008-02-01'),('2008-02-01'); +create table t2 (a int); +insert into t2 values (1),(2); +create table t3 (a char(10)); +insert into t3 select * from t1; +insert into t3 values (1),(2); +explain select * from t2 where a in (select a from t1); +explain select * from t2 where a in (select a from t2); +explain select * from t2 where a in (select a from t3); +explain select * from t1 where a in (select a from t3); +drop table t1, t2, t3; +create table t1 (a decimal); +insert into t1 values (1),(2); +explain select * from t1 where a in (select a from t1); +drop table t1; +set @@optimizer_switch=@save_optimizer_switch; + +set @@optimizer_switch=@save_optimizer_switch; +set @@optimizer_switch='materialization=off'; + +# +# SJ-Materialization-scan for non-first table +# +create table t1 (a int); +insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); +create table t2 as select * from t1; +create table t3 (a int, b int, filler char(100), key(a)); +insert into t3 select A.a + 10*B.a, A.a + 10*B.a, 'filler' from t1 A, t1 B, t1 C; +explain select * from t1, t3 where t3.a in (select a from t2) and (t3.a < 10 or t3.a >30) and t1.a =3; + +# +# Verify that straight_join modifier in parent or child prevents flattening +# +explain select straight_join * from t1 A, t1 B where A.a in (select a from t2); +explain select * from t2 where a in (select straight_join A.a from t1 A, t1 B); +explain select * from t2 where a in (select straight_join A.a from t1 A, t1 B); +explain select straight_join * from t2 X, t2 Y +where X.a in (select straight_join A.a from t1 A, t1 B); + +# +# SJ-Materialization scan + first table being system const table +# +create table t0 (a int, b int); +insert into t0 values(1,1); +explain select * from t0, t3 where t3.a in (select a from t2) and (t3.a < 10 or t3.a >30); +create table t4 as select a as x, a as y from t1; +explain select * from t0, t3 where (t3.a, t3.b) in (select x,y from t4) and (t3.a < 10 or t3.a >30); +drop table t0,t1,t2,t3,t4; + +# +# LooseScan with ref access +# +create table t0 (a int); +insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); +create table t1 (a int, b int, filler char(100), key(a,b)); +insert into t1 select A.a, B.a, 'filler' from t0 A, t0 B; +create table t2 as select * from t1; + +explain select * from t2 where a in (select b from t1 where a=3); +explain select * from t2 where (b,a) in (select a,b from t1 where a=3); + +drop table t1,t2; + +set @@optimizer_switch=@save_optimizer_switch; + +# +# Multi-column sj-materialization with lookups +# +create table t1 (a int, b int); +insert into t1 select a,a from t0; +create table t2 (a int, b int); +insert into t2 select A.a + 10*B.a, A.a + 10*B.a from t0 A, t0 B; + +set @@optimizer_switch='firstmatch=off,materialization=off'; +explain select * from t1 where (a,b) in (select a,b from t2); + +# A smallish test if find_best() still works for semi-join optimization: +set @save_optimizer_search_depth=@@optimizer_search_depth; +set @@optimizer_search_depth=63; +explain select * from t1 where (a,b) in (select a,b from t2); +set @@optimizer_search_depth=@save_optimizer_search_depth; +set @@optimizer_switch=@save_optimizer_switch; + +drop table t0, t1, t2; + +set @@optimizer_switch='materialization=off'; + +# +# Primitive SJ-Materialization tests for DECIMAL and DATE +# +create table t0 (a decimal(4,2)); +insert into t0 values (10.24), (22.11); +create table t1 as select * from t0; +insert into t1 select * from t0; +explain select * from t0 where a in (select a from t1); +select * from t0 where a in (select a from t1); +drop table t0, t1; + +create table t0(a date); +insert into t0 values ('2008-01-01'),('2008-02-02'); +create table t1 as select * from t0; +insert into t1 select * from t0; +explain select * from t0 where a in (select a from t1); +select * from t0 where a in (select a from t1); +drop table t0, t1; + +# +# Fix a trivial crash with SJ-Materialization lookup, multiple tables in the +# subquery, and a condition on some of inner tables but not others +# +create table t0(a int); +insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); +create table t1 as select a as a, a as b, a as c from t0 where a < 3; +create table t2 as select a as a, a as b from t0 where a < 3; +insert into t2 select * from t2; + +explain select * from t1 where (a,b,c) in (select X.a, Y.a, Z.a from t2 X, t2 Y, t2 Z where X.b=33); + +drop table t0,t1,t2; + +set @@optimizer_switch=@save_optimizer_switch; + +--echo +--echo BUG#37842: Assertion in DsMrr_impl::dsmrr_init, at handler.cc:4307 +--echo +CREATE TABLE t1 ( + `pk` int(11) NOT NULL AUTO_INCREMENT, + `int_key` int(11) DEFAULT NULL, + PRIMARY KEY (`pk`), + KEY `int_key` (`int_key`) +) ENGINE=MyISAM; +INSERT INTO t1 VALUES (1,9),(2,3),(3,8),(4,6),(5,9),(6,5),(7,5),(8,9),(9,1),(10,10); +SELECT `pk` FROM t1 AS OUTR WHERE `int_key` = ALL ( + SELECT `int_key` FROM t1 AS INNR WHERE INNR . `pk` >= 9 +); +DROP TABLE t1; + +--echo +--echo BUG#40118 Crash when running Batched Key Access and requiring one match for each key +--echo +create table t0(a int); +insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); +create table t1 (a int, key(a)); +insert into t1 select * from t0; +alter table t1 add b int not null, add filler char(200); +insert into t1 select * from t1; +insert into t1 select * from t1; + +set @save_join_cache_level=@@join_cache_level; +set join_cache_level=6; +select * from t0 where t0.a in (select t1.a from t1 where t1.b=0); +set join_cache_level=@save_join_cache_level; +drop table t0, t1; + +--echo # +--echo # BUG#32665 Query with dependent subquery is too slow +--echo # +create table t1 ( + idIndividual int primary key +); +insert into t1 values (1),(2); + +create table t2 ( + idContact int primary key, + contactType int, + idObj int +); +insert into t2 values (1,1,1),(2,2,2),(3,3,3); + +create table t3 ( + idAddress int primary key, + idContact int, + postalStripped varchar(100) +); + +insert into t3 values (1,1, 'foo'), (2,2,'bar'); + +--echo The following must be converted to a semi-join: +set @save_optimizer_switch=@@optimizer_switch; +set @@optimizer_switch='materialization=off'; +explain extended SELECT a.idIndividual FROM t1 a +WHERE a.idIndividual IN + ( SELECT c.idObj FROM t3 cona + INNER JOIN t2 c ON c.idContact=cona.idContact + WHERE cona.postalStripped='T2H3B2' + ); +set @@optimizer_switch=@save_optimizer_switch; +drop table t1,t2,t3; + +--echo # +--echo # BUG#47367 Crash in Name_resolution_context::process_error +--echo # + +SET SESSION optimizer_switch = 'semijoin=off'; +CREATE TABLE t1 (f1 INTEGER); +CREATE TABLE t2 LIKE t1; +delimiter |; +CREATE PROCEDURE p1 () BEGIN SELECT f1 FROM t1 WHERE f1 IN (SELECT f1 FROM t2); END| +delimiter ;| +CALL p1; +ALTER TABLE t2 CHANGE COLUMN f1 my_column INT; +CALL p1; +DROP PROCEDURE p1; +--echo # Restore the original column list of table t2: +ALTER TABLE t2 CHANGE COLUMN my_column f1 INT; + +SET SESSION optimizer_switch = 'semijoin=on'; +delimiter |; +--echo # Recreate procedure so that we eliminate any caching effects +CREATE PROCEDURE p1 () BEGIN SELECT f1 FROM t1 WHERE f1 IN (SELECT f1 FROM t2); END| +delimiter ;| +CALL p1; +ALTER TABLE t2 CHANGE COLUMN f1 my_column INT; +--error ER_BAD_FIELD_ERROR +CALL p1; +DROP PROCEDURE p1; +DROP TABLE t1, t2; + +--echo # +--echo # fix of lp:824425 (prohibiting subqueries in row in +--echo # left part of IN/ALL/ANY) +--echo # + +CREATE TABLE t1 ( a int) ; +INSERT INTO t1 VALUES (20),(30); + +CREATE TABLE t2 (a int) ; +INSERT INTO t2 VALUES (3),(9); + +CREATE TABLE t3 ( a int, b int) ; +INSERT INTO t3 VALUES (20,5),(30,6); + +set @optimizer_switch_save=@@optimizer_switch; +SET SESSION optimizer_switch='semijoin=OFF,in_to_exists=OFF,materialization=ON,partial_match_rowid_merge=ON,partial_match_table_scan=OFF'; + +SELECT * FROM t1 +WHERE ( + ( SELECT a FROM t2 WHERE a = 9 ) +) NOT IN ( + SELECT b + FROM t3 +); +explain extended +SELECT * FROM t1 +WHERE ( + ( SELECT a FROM t2 WHERE a = 9 ) +) NOT IN ( + SELECT b + FROM t3 +); + +--error ER_NOT_SUPPORTED_YET +SELECT * FROM t1 +WHERE ( + ( SELECT a FROM t2 WHERE a = 9 ), + ( SELECT a FROM t2 WHERE a = 3 ) +) NOT IN ( + SELECT b , a + FROM t3 +); +set optimizer_switch=@optimizer_switch_save; + +drop table t1,t2,t3; + +--echo End of 5.3 tests + +--echo # +--echo # BUG#48920: COUNT DISTINCT returns 1 for NULL values when in a subquery +--echo # in the select list +--echo # + +--echo +CREATE TABLE t1 ( + i int(11) DEFAULT NULL, + v varchar(1) DEFAULT NULL +); + +--echo +INSERT INTO t1 VALUES (8,'v'); +INSERT INTO t1 VALUES (9,'r'); +INSERT INTO t1 VALUES (NULL,'y'); + +--echo +CREATE TABLE t2 ( + i int(11) DEFAULT NULL, + v varchar(1) DEFAULT NULL, + KEY i_key (i) +); + +--echo +INSERT INTO t2 VALUES (NULL,'r'); +INSERT INTO t2 VALUES (0,'c'); +INSERT INTO t2 VALUES (0,'o'); +INSERT INTO t2 VALUES (2,'v'); +INSERT INTO t2 VALUES (7,'c'); + +--echo +SELECT i, v, (SELECT COUNT(DISTINCT i) + FROM t1 + WHERE v = t2.v) as subsel +FROM t2; + +--echo +EXPLAIN EXTENDED +SELECT i, v, (SELECT COUNT(DISTINCT i) + FROM t1 + WHERE v = t2.v) as subsel +FROM t2; + +DROP TABLE t1,t2; + +--echo End of 5.6 tests diff --git a/mysql-test/t/subselect3.test b/mysql-test/t/subselect3.test index 0221315eb35..79034f976a8 100644 --- a/mysql-test/t/subselect3.test +++ b/mysql-test/t/subselect3.test @@ -1,1318 +1,10 @@ --disable_warnings drop table if exists t0, t1, t2, t3, t4, t5, t11, t12, t21, t22; --enable_warnings +--source include/default_optimizer_switch.inc -set @subselect3_tmp= @@optimizer_switch; -set optimizer_switch='semijoin=on,firstmatch=on,loosescan=on,semijoin_with_cache=on'; -if (`select @join_cache_level_for_subselect3_test is null`) -{ - set join_cache_level=1; -} -if (`select @join_cache_level_for_subselect3_test is not null`) -{ - set join_cache_level=@join_cache_level_for_subselect3_test; -} +set join_cache_level=1; -# -# 1. Subquery with GROUP/HAVING -# -create table t1 (oref int, grp int, ie int) ; -insert into t1 (oref, grp, ie) values - (1, 1, 1), - (1, 1, 1), - (1, 2, NULL), +--source subselect3.inc - (2, 1, 3), - - (3, 1, 4), - (3, 2, NULL); - -# Ok, for -# select max(ie) from t1 where oref=PARAM group by grp -# we'll have: -# PARAM subquery result -# 1 -> {(1), (NULL)} matching + NULL -# 2 -> {(3)} non-matching -# 3 -> {(3), (NULL)} non-matching + NULL -# 4 -> {} empty set - -create table t2 (oref int, a int); -insert into t2 values - (1, 1), - (2, 2), - (3, 3), - (4, NULL), - (2, NULL); - -# true, false, null, false, null -select a, oref, a in (select max(ie) - from t1 where oref=t2.oref group by grp) Z from t2; - -# This must have a trigcond -explain extended -select a, oref, a in (select max(ie) - from t1 where oref=t2.oref group by grp) Z from t2; - -# This must not have a trigcond: -explain extended -select a, oref from t2 -where a in (select max(ie) from t1 where oref=t2.oref group by grp); -select a, oref, a in ( - select max(ie) from t1 where oref=t2.oref group by grp union - select max(ie) from t1 where oref=t2.oref group by grp - ) Z from t2; - -# Non-correlated subquery, 2 NULL evaluations -create table t3 (a int); -insert into t3 values (NULL), (NULL); -flush status; -select a in (select max(ie) from t1 where oref=4 group by grp) from t3; -show status like 'Handler_read_rnd_next'; -select ' ^ This must show 11' Z; - -set @save_optimizer_switch=@@optimizer_switch; -set @@optimizer_switch="partial_match_rowid_merge=off,partial_match_table_scan=off"; - -# This must show trigcond: -explain extended select a in (select max(ie) from t1 where oref=4 group by grp) from t3; - -set @@optimizer_switch=@save_optimizer_switch; -drop table t1, t2, t3; - -# -# 2. Subquery handled with 'index_subquery': -# -create table t1 (a int, oref int, key(a)); -insert into t1 values - (1, 1), - (1, NULL), - (2, 3), - (2, NULL), - (3, NULL); -insert into t1 values (5, 7), (8, 9), (4, 1); - -create table t2 (a int, oref int); -insert into t2 values (1, 1), (2,2), (NULL, 3), (NULL, 4); - -select oref, a, a in (select a from t1 where oref=t2.oref) Z from t2; - -# The next explain shows "using index" but that is just incorrect display -# (there is a bug filed about this). -explain extended -select oref, a, a in (select a from t1 where oref=t2.oref) Z from t2; - -flush status; -select oref, a from t2 where a in (select a from t1 where oref=t2.oref); -# This will only show access to t2: -show status like '%Handler_read_rnd_next'; - -# Check that repeated NULL-scans are not cached (subq. is not correlated): -delete from t2; -insert into t2 values (NULL, 0),(NULL, 0), (NULL, 0), (NULL, 0); - -set optimizer_switch='subquery_cache=off'; -flush status; -select oref, a, a in (select a from t1 where oref=t2.oref) Z from t2; -show status like '%Handler_read%'; -select 'No key lookups, seq reads: 29= 5 reads from t2 + 4 * 6 reads from t1.' Z; -set @@optimizer_switch=@save_optimizer_switch; - -drop table t1, t2; - -# -# 3. Subquery handled with 'unique_index_subquery': -# -create table t1 (a int, b int, primary key (a)); -insert into t1 values (1,1), (3,1),(100,1); - -create table t2 (a int, b int); -insert into t2 values (1,1),(2,1),(NULL,1),(NULL,0); - -select a,b, a in (select a from t1 where t1.b = t2.b) Z from t2 ; - -drop table t1, t2; - -# -# 4. Subquery that is a join, with ref access -# -create table t1 (a int, b int, key(a)); -insert into t1 values - (0,0),(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9); - -create table t2 like t1; -insert into t2 select * from t1; -update t2 set b=1; - -create table t3 (a int, oref int); -insert into t3 values (1, 1), (NULL,1), (NULL,0); -select a, oref, - t3.a in (select t1.a from t1, t2 where t1.b=t2.a and t2.b=t3.oref) Z -from t3; - -# This must have trigcond in WHERE and HAVING: -explain extended -select a, oref, - t3.a in (select t1.a from t1, t2 where t1.b=t2.a and t2.b=t3.oref) Z -from t3; - -drop table t1, t2, t3; - - -# -# BUG#24085: Wrong query result for "NULL IN (SELECT ... UNION SELECT ...)" -# - -# case 1: NULL IN (SELECT not_null_val FROM ...) w/o HAVING/GROUP-BY/etc -create table t1 (a int NOT NULL, b int NOT NULL, key(a)); -insert into t1 values - (0,0),(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9); - -create table t2 like t1; -insert into t2 select * from t1; -update t2 set b=1; - -create table t3 (a int, oref int); -insert into t3 values (1, 1), (NULL,1), (NULL,0); -select a, oref, - t3.a in (select t1.a from t1, t2 where t1.b=t2.a and t2.b=t3.oref) Z -from t3; - ---echo This must show a trig_cond: -explain extended -select a, oref, - t3.a in (select t1.a from t1, t2 where t1.b=t2.a and t2.b=t3.oref) Z -from t3; -drop table t1,t2,t3; - - -# case 2: NULL IN (SELECT not_null_val FROM) where SELECT has GROUP BY -create table t1 (oref int, grp int); -insert into t1 (oref, grp) values - (1, 1), - (1, 1); - -# Ok, for -# select count(*) from t1 group by grp having grp=PARAM -# we'll have: -# PARAM subuqery result -# 1 -> {(2)} -# 2 -> {} - empty set -create table t2 (oref int, a int); -insert into t2 values - (1, NULL), - (2, NULL); - -select a, oref, - a in (select count(*) from t1 group by grp having grp=t2.oref) Z from t2; - ---echo This must show a trig_cond: -explain extended -select a, oref, - a in (select count(*) from t1 group by grp having grp=t2.oref) Z from t2; - -drop table t1, t2; - -create table t1 (a int, b int, primary key (a)); -insert into t1 values (1,1), (3,1),(100,1); -create table t2 (a int, b int); -insert into t2 values (1,1),(2,1),(NULL,1),(NULL,0); - -select a,b, a in (select a from t1 where t1.b = t2.b union select a from -t1 where t1.b = t2.b) Z from t2 ; -select a,b, a in (select a from t1 where t1.b = t2.b) Z from t2 ; -drop table t1, t2; - - -# -# BUG#24127: Incorrect results of row-based subqueries with NULLs on the left side. -# -create table t3 (a int); -insert into t3 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); -create table t2 (a int, b int, oref int); -insert into t2 values (NULL,1, 100), (NULL,2, 100); - -create table t1 (a int, b int, c int, key(a,b)); -insert into t1 select 2*A, 2*A, 100 from t3; - -# First test index subquery engine -explain extended select a,b, oref, (a,b) in (select a,b from t1 where c=t2.oref) Z from t2; -select a,b, oref, (a,b) in (select a,b from t1 where c=t2.oref) Z from t2; - -# Then check that we do turn off 'ref' scans in the subquery -create table t4 (x int); -insert into t4 select A.a + 10*B.a from t1 A, t1 B; -explain extended - select a,b, oref, - (a,b) in (select a,b from t1,t4 where c=t2.oref) Z - from t2; -select a,b, oref, - (a,b) in (select a,b from t1,t4 where c=t2.oref) Z -from t2; - -drop table t1,t2,t3,t4; - -# More tests for tricky multi-column cases, where some of pushed-down -# equalities are used for index lookups and some arent. -create table t1 (oref char(4), grp int, ie1 int, ie2 int); -insert into t1 (oref, grp, ie1, ie2) values - ('aa', 10, 2, 1), - ('aa', 10, 1, 1), - ('aa', 20, 2, 1), - ('bb', 10, 3, 1), - ('cc', 10, 4, 2), - ('cc', 20, 3, 2), - - ('ee', 10, 2, 1), - ('ee', 10, 1, 2), - - ('ff', 20, 2, 2), - ('ff', 20, 1, 2); -create table t2 (oref char(4), a int, b int); -insert into t2 values - ('ee', NULL, 1), - ('bb', 2, 1), - ('ff', 2, 2), - ('cc', 3, NULL), - ('bb', NULL, NULL), - ('aa', 1, 1), - ('dd', 1, NULL); -alter table t1 add index idx(ie1,ie2); - -# cc 3 NULL NULL -select oref, a, b, (a,b) in (select ie1,ie2 from t1 where oref=t2.oref) Z from t2 where a=3 and b is null ; -insert into t2 values ('new1', 10,10); -insert into t1 values ('new1', 1234, 10, NULL); -# new1, 10, 10, NULL, -select oref, a, b, (a,b) in (select ie1,ie2 from t1 where oref=t2.oref) Z from t2 where a=10 and b=10; -explain extended -select oref, a, b, (a,b) in (select ie1,ie2 from t1 where oref=t2.oref) Z from t2 where a=10 and b=10; -drop table t1, t2; - -# Now test different column types: -create table t1 (oref char(4), grp int, ie int); -insert into t1 (oref, grp, ie) values - ('aa', 10, 2), - ('aa', 10, 1), - ('aa', 20, NULL), - - ('bb', 10, 3), - - ('cc', 10, 4), - ('cc', 20, NULL), - - ('ee', 10, NULL), - ('ee', 10, NULL), - - ('ff', 20, 2), - ('ff', 20, 1); - -create table t2 (oref char(4), a int); -insert into t2 values - ('ee', NULL), - ('bb', 2), - ('ff', 2), - ('cc', 3), - ('aa', 1), - ('dd', NULL), - ('bb', NULL); - -select oref, a, a in (select ie from t1 where oref=t2.oref) Z from t2; - -select oref, a from t2 where a in (select ie from t1 where oref=t2.oref); - -select oref, a from t2 where a not in (select ie from t1 where oref=t2.oref); - - -select oref, a, a in (select min(ie) from t1 where oref=t2.oref group by grp) Z from t2; - -select oref, a from t2 where - a in (select min(ie) from t1 where oref=t2.oref group by grp); - -select oref, a from t2 where - a not in (select min(ie) from t1 where oref=t2.oref group by grp); - -# -update t1 set ie=3 where oref='ff' and ie=1; - -select oref, a, a in (select min(ie) from t1 where oref=t2.oref group by -grp) Z from t2; - - -select oref, a from t2 where a in (select min(ie) from t1 where -oref=t2.oref group by grp); - -select oref, a from t2 where a not in (select min(ie) from t1 where -oref=t2.oref group by grp); - -select oref, a, a in (select min(ie) from t1 where oref=t2.oref group by -grp having min(ie) > 1) Z from t2; - -select oref, a from t2 where a in (select min(ie) from t1 where -oref=t2.oref group by grp having min(ie) > 1); - -select oref, a from t2 where a not in (select min(ie) from t1 where -oref=t2.oref group by grp having min(ie) > 1); - -# -alter table t1 add index idx(ie); - -explain select oref, a, a in (select ie from t1 where oref=t2.oref) Z from t2; - -select oref, a, a in (select ie from t1 where oref=t2.oref) Z from t2; - -select oref, a from t2 where a in (select ie from t1 where oref=t2.oref); - -select oref, a from t2 where a not in (select ie from t1 where oref=t2.oref); - - -alter table t1 drop index idx; -alter table t1 add index idx(oref,ie); - -explain select oref, a, a in (select ie from t1 where oref=t2.oref) Z from t2; - -select oref, a, a in (select ie from t1 where oref=t2.oref) Z from t2; - -select oref, a from t2 where a in (select ie from t1 where oref=t2.oref); - -select oref, a from t2 where a not in (select ie from t1 where oref=t2.oref); - -explain -select oref, a, - a in (select min(ie) from t1 where oref=t2.oref - group by grp having min(ie) > 1) Z -from t2; - -select oref, a, - a in (select min(ie) from t1 where oref=t2.oref - group by grp having min(ie) > 1) Z -from t2; - -select oref, a from t2 where a in (select min(ie) from t1 where oref=t2.oref - group by grp having min(ie) > 1); - -select oref, a from t2 where a not in (select min(ie) from t1 where oref=t2.oref - group by grp having min(ie) > 1); - -drop table t1,t2; - -create table t1 (oref char(4), grp int, ie1 int, ie2 int); -insert into t1 (oref, grp, ie1, ie2) values - ('aa', 10, 2, 1), - ('aa', 10, 1, 1), - ('aa', 20, 2, 1), - - ('bb', 10, 3, 1), - - ('cc', 10, 4, 2), - ('cc', 20, 3, 2), - - ('ee', 10, 2, 1), - ('ee', 10, 1, 2), - - ('ff', 20, 2, 2), - ('ff', 20, 1, 2); - -create table t2 (oref char(4), a int, b int); -insert into t2 values - ('ee', NULL, 1), - ('bb', 2, 1), - ('ff', 2, 2), - ('cc', 3, NULL), - ('bb', NULL, NULL), - ('aa', 1, 1), - ('dd', 1, NULL); - -select oref, a, b, (a,b) in (select ie1,ie2 from t1 where oref=t2.oref) Z from t2; - -select oref, a, b from t2 where (a,b) in (select ie1,ie2 from t1 where oref=t2.oref); - -select oref, a, b from t2 where (a,b) not in (select ie1,ie2 from t1 where oref=t2.oref); - -select oref, a, b, - (a,b) in (select min(ie1),max(ie2) from t1 - where oref=t2.oref group by grp) Z -from t2; - -select oref, a, b from t2 where - (a,b) in (select min(ie1), max(ie2) from t1 where oref=t2.oref group by grp); - -select oref, a, b from t2 where - (a,b) not in (select min(ie1), max(ie2) from t1 where oref=t2.oref group by grp); - -alter table t1 add index idx(ie1,ie2); - -explain select oref, a, b, (a,b) in (select ie1,ie2 from t1 where oref=t2.oref) Z from t2; - -select oref, a, b, (a,b) in (select ie1,ie2 from t1 where oref=t2.oref) Z from t2; - -select oref, a, b from t2 where (a,b) in (select ie1,ie2 from t1 where oref=t2.oref); - -select oref, a, b from t2 where (a,b) not in (select ie1,ie2 from t1 where oref=t2.oref); - -explain extended -select oref, a, b, (a,b) in (select ie1,ie2 from t1 where oref=t2.oref) Z from t2; - -drop table t1,t2; - -create table t1 (oref char(4), grp int, ie int primary key); -insert into t1 (oref, grp, ie) values - ('aa', 10, 2), - ('aa', 10, 1), - - ('bb', 10, 3), - - ('cc', 10, 4), - ('cc', 20, 5), - ('cc', 10, 6); - -create table t2 (oref char(4), a int); -insert into t2 values - ('ee', NULL), - ('bb', 2), - ('cc', 5), - ('cc', 2), - ('cc', NULL), - ('aa', 1), - ('bb', NULL); - -explain select oref, a, a in (select ie from t1 where oref=t2.oref) Z from t2; - -select oref, a, a in (select ie from t1 where oref=t2.oref) Z from t2; - -select oref, a from t2 where a in (select ie from t1 where oref=t2.oref); - -select oref, a from t2 where a not in (select ie from t1 where oref=t2.oref); - -explain -select oref, a, a in (select min(ie) from t1 where oref=t2.oref group by grp) Z from t2; - -select oref, a, a in (select min(ie) from t1 where oref=t2.oref group by grp) Z from t2; - -drop table t1,t2; - -# -# BUG#24420: row-based IN suqueries with aggregation when the left operand -# of the subquery predicate may contain NULL values -# - -create table t1 (a int, b int); -insert into t1 values (0,0), (2,2), (3,3); -create table t2 (a int, b int); -insert into t2 values (1,1), (3,3); - -select a, b, (a,b) in (select a, min(b) from t2 group by a) Z from t1; - -insert into t2 values (NULL,4); -select a, b, (a,b) in (select a, min(b) from t2 group by a) Z from t1; - -drop table t1,t2; - -# -# Bug #24484: Aggregate function used in column list subquery gives erroneous -# error -# -CREATE TABLE t1 (a int, b INT, c CHAR(10) NOT NULL, PRIMARY KEY (a, b)); -INSERT INTO t1 VALUES (1,1,'a'), (1,2,'b'), (1,3,'c'), (1,4,'d'), (1,5,'e'), - (2,1,'f'), (2,2,'g'), (2,3,'h'), (3,4,'i'),(3,3,'j'), (3,2,'k'), (3,1,'l'), - (1,9,'m'); -CREATE TABLE t2 (a int, b INT, c CHAR(10) NOT NULL, PRIMARY KEY (a, b)); -INSERT INTO t2 SELECT * FROM t1; - -# Gives error, but should work since it is (a, b) is the PK so only one -# given match possible -SELECT a, MAX(b), (SELECT t.c FROM t1 AS t WHERE t1.a=t.a AND t.b=MAX(t1.b)) - as test FROM t1 GROUP BY a; -SELECT * FROM t1 GROUP by t1.a - HAVING (MAX(t1.b) > (SELECT MAX(t2.b) FROM t2 WHERE t2.c < t1.c - HAVING MAX(t2.b+t1.a) < 10)); - -SELECT a,b,c FROM t1 WHERE b in (9,3,4) ORDER BY b,c; - -SELECT a, MAX(b), - (SELECT COUNT(DISTINCT t.c) FROM t1 AS t WHERE t1.a=t.a AND t.b=MAX(t1.b) - LIMIT 1) - as cnt, - (SELECT t.b FROM t1 AS t WHERE t1.a=t.a AND t.b=MAX(t1.b) LIMIT 1) - as t_b, - (SELECT t.c FROM t1 AS t WHERE t1.a=t.a AND t.b=MAX(t1.b) LIMIT 1) - as t_b, - (SELECT t.c FROM t1 AS t WHERE t1.a=t.a AND t.b=MAX(t1.b) ORDER BY t.c LIMIT 1) - as t_b - FROM t1 GROUP BY a; - -SELECT a, MAX(b), - (SELECT t.c FROM t1 AS t WHERE t1.a=t.a AND t.b=MAX(t1.b) LIMIT 1) as test - FROM t1 GROUP BY a; - - -DROP TABLE t1, t2; - -# The next three test cases must be executed with the IN=>EXISTS strategy -set @@optimizer_switch="partial_match_rowid_merge=off,partial_match_table_scan=off"; - -# -# Bug #27870: crash of an equijoin query with WHERE condition containing -# a subquery predicate of the form <join attr> NOT IN (SELECT ...) -# - -CREATE TABLE t1 (a int); -CREATE TABLE t2 (b int, PRIMARY KEY(b)); -INSERT INTO t1 VALUES (1), (NULL), (4); -INSERT INTO t2 VALUES (3), (1),(2), (5), (4), (7), (6); - -EXPLAIN EXTENDED -SELECT a FROM t1, t2 WHERE a=b AND (b NOT IN (SELECT a FROM t1)); -SELECT a FROM t1, t2 WHERE a=b AND (b NOT IN (SELECT a FROM t1)); -SELECT a FROM t1, t2 WHERE a=b AND (b NOT IN (SELECT a FROM t1 WHERE a > 4)); - -DROP TABLE t1,t2; - -# -# Bug #28375: crash for NOT IN subquery predicate when left operand becomes NULL -# - -CREATE TABLE t1 (id int); -CREATE TABLE t2 (id int PRIMARY KEY); -CREATE TABLE t3 (id int PRIMARY KEY, name varchar(10)); -INSERT INTO t1 VALUES (2), (NULL), (3), (1); -INSERT INTO t2 VALUES (234), (345), (457); -INSERT INTO t3 VALUES (222,'bbb'), (333,'ccc'), (111,'aaa'); - -EXPLAIN -SELECT * FROM t1 - WHERE t1.id NOT IN (SELECT t2.id FROM t2,t3 - WHERE t3.name='xxx' AND t2.id=t3.id); -SELECT * FROM t1 - WHERE t1.id NOT IN (SELECT t2.id FROM t2,t3 - WHERE t3.name='xxx' AND t2.id=t3.id); - -SELECT (t1.id IN (SELECT t2.id FROM t2,t3 - WHERE t3.name='xxx' AND t2.id=t3.id)) AS x - FROM t1; - -DROP TABLE t1,t2,t3; - -# -# Bug #22855: Optimizer doesn't rewrite NOT IN subselects to a correlated -# subquery -# -CREATE TABLE t1 (a INT NOT NULL); -INSERT INTO t1 VALUES (1),(-1), (65),(66); - -CREATE TABLE t2 (a INT UNSIGNED NOT NULL PRIMARY KEY); -INSERT INTO t2 VALUES (65),(66); - -SELECT a FROM t1 WHERE a NOT IN (65,66); -SELECT a FROM t1 WHERE a NOT IN (SELECT a FROM t2); -EXPLAIN SELECT a FROM t1 WHERE a NOT IN (SELECT a FROM t2); - -DROP TABLE t1, t2; - -set @@optimizer_switch=@save_optimizer_switch; - -# -# Bug #34763: item_subselect.cc:1235:Item_in_subselect::row_value_transformer: -# Assertion failed, unexpected error message: -# ERROR 1247 (42S22): Reference '<list ref>' not supported (forward -# reference in item list) -# -CREATE TABLE t1 (a INT); -INSERT INTO t1 VALUES(1); - -CREATE TABLE t2 (placeholder CHAR(11)); -INSERT INTO t2 VALUES("placeholder"); - -SELECT ROW(1, 2) IN (SELECT t1.a, 2) FROM t1 GROUP BY t1.a; -SELECT ROW(1, 2) IN (SELECT t1.a, 2 FROM t2) FROM t1 GROUP BY t1.a; - -DROP TABLE t1, t2; - -# -# Bug #36005: crash in subselect with single row -# (subselect_single_select_engine::exec) -# - -CREATE TABLE t1 (a INT); -INSERT INTO t1 VALUES (1),(2),(3); -CREATE TABLE t2 SELECT * FROM t1; - -SELECT 1 FROM t1 WHERE t1.a NOT IN (SELECT 1 FROM t1, t2 WHERE 0); - -DROP TABLE t1, t2; - -# -# Bug 2198 -# - -create table t1 (a int, b decimal(13, 3)); -insert into t1 values (1, 0.123); -select a, (select max(b) from t1) into outfile "subselect.out.file.1" from t1; -delete from t1; -load data infile "subselect.out.file.1" into table t1; -select * from t1; -drop table t1; -let $datadir=`select @@datadir`; ---remove_file $datadir/test/subselect.out.file.1 - -# -# Bug #37894: Assertion in init_read_record_seq in handler.h line 1444 -# - -CREATE TABLE t1 ( - pk INT PRIMARY KEY, - int_key INT, - varchar_key VARCHAR(5) UNIQUE, - varchar_nokey VARCHAR(5) -); -INSERT INTO t1 VALUES (9, 7,NULL,NULL), (10,8,'p' ,'p'); - -SELECT varchar_nokey -FROM t1 -WHERE NULL NOT IN ( - SELECT INNR.pk FROM t1 AS INNR2 - LEFT JOIN t1 AS INNR ON ( INNR2.int_key = INNR.int_key ) - WHERE INNR.varchar_key > 'n{' -); - -DROP TABLE t1; - -# -# Bug #39069: <row constructor> IN <table-subquery> seriously messed up -# - -CREATE TABLE t1 (a INT); -INSERT INTO t1 VALUES (1), (2), (11); - ---echo # 2nd and 3rd columns should be same -SELECT a, ROW(11, 12) = (SELECT a, 22), ROW(11, 12) IN (SELECT a, 22) FROM t1 GROUP BY t1.a; -SELECT a, ROW(11, 12) = (SELECT a, 12), ROW(11, 12) IN (SELECT a, 12) FROM t1 GROUP BY t1.a; -SELECT a, ROW(11, 12) = (SELECT a, 22), ROW(11, 12) IN (SELECT a, 22) FROM t1; -SELECT a, ROW(11, 12) = (SELECT a, 12), ROW(11, 12) IN (SELECT a, 12) FROM t1; - -# The x alias is used below to workaround bug #40674. -# Regression tests for sum function on outer column in subselect from dual: -SELECT a AS x, ROW(11, 12) = (SELECT MAX(x), 22), ROW(11, 12) IN (SELECT MAX(x), 22) FROM t1; ---echo # 2nd and 3rd columns should be same -EXPLAIN SELECT a AS x, ROW(11, 12) = (SELECT MAX(x), 12), ROW(11, 12) IN (SELECT MAX(x), 12) FROM t1; -SELECT a AS x, ROW(11, 12) = (SELECT MAX(x), 12), ROW(11, 12) IN (SELECT MAX(x), 12) FROM t1; - -DROP TABLE t1; - ---echo # both columns should be same -SELECT ROW(1,2) = (SELECT NULL, NULL), ROW(1,2) IN (SELECT NULL, NULL); -SELECT ROW(1,2) = (SELECT 1, NULL), ROW(1,2) IN (SELECT 1, NULL); -SELECT ROW(1,2) = (SELECT NULL, 2), ROW(1,2) IN (SELECT NULL, 2); -SELECT ROW(1,2) = (SELECT NULL, 1), ROW(1,2) IN (SELECT NULL, 1); -SELECT ROW(1,2) = (SELECT 1, 1), ROW(1,2) IN (SELECT 1, 1); -SELECT ROW(1,2) = (SELECT 1, 2), ROW(1,2) IN (SELECT 1, 2); - -# -# Bug #37362 Crash in do_field_eq -# -# Note that currently this test produces wrong output, see MBug#430669. -# -CREATE TABLE t1 (a INT, b INT, c INT); -INSERT INTO t1 VALUES (1,1,1), (1,1,1); - ---error 1054 -EXPLAIN EXTENDED - SELECT c FROM - ( SELECT - (SELECT COUNT(a) FROM - (SELECT COUNT(b) FROM t1) AS x GROUP BY c - ) FROM t1 GROUP BY b - ) AS y; -SHOW WARNINGS; - -DROP TABLE t1; - - ---echo End of 5.0 tests - ---echo # ---echo # BUG#36896: Server crash on SELECT FROM DUAL ---echo # -create table t1 (a int); -select 1 as res from dual where (1) in (select * from t1); -drop table t1; - -# -# BUG#36135 "void Diagnostics_area::set_eof_status(THD*): Assertion `!is_set()' failed." -# -create table t0 (a int); -insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); - -create table t1 ( - a int(11) default null, - b int(11) default null, - key (a) -); -# produce numbers 0..999 -insert into t1 select A.a+10*(B.a+10*C.a),A.a+10*(B.a+10*C.a) from t0 A, t0 B, t0 C; - -create table t2 (a int(11) default null); -insert into t2 values (0),(1); - -create table t3 (a int(11) default null); -insert into t3 values (0),(1); - -create table t4 (a int(11) default null); -insert into t4 values (0),(1); - -create table t5 (a int(11) default null); -insert into t5 values (0),(1),(0),(1); - -# this must not fail assertion ---error 1242 -select * from t2, t3 -where - t2.a < 10 and - t3.a+1 = 2 and - t3.a in (select t1.b from t1 - where t1.a+1=t1.a+1 and - t1.a < (select t4.a+10 - from t4, t5 limit 2)); - -drop table t0, t1, t2, t3, t4, t5; - ---echo # ---echo # BUG#48177 - SELECTs with NOT IN subqueries containing NULL ---echo # values return too many records ---echo # - -CREATE TABLE t1 ( - i1 int DEFAULT NULL, - i2 int DEFAULT NULL -) ; - -INSERT INTO t1 VALUES (1, NULL); -INSERT INTO t1 VALUES (2, 3); -INSERT INTO t1 VALUES (4, NULL); -INSERT INTO t1 VALUES (4, 0); -INSERT INTO t1 VALUES (NULL, NULL); - -CREATE TABLE t2 ( - i1 int DEFAULT NULL, - i2 int DEFAULT NULL -) ; - -INSERT INTO t2 VALUES (4, NULL); -INSERT INTO t2 VALUES (5, 0); - ---echo ---echo Data in t1 -SELECT i1, i2 FROM t1; - ---echo ---echo Data in subquery (should be filtered out) -SELECT i1, i2 FROM t2 ORDER BY i1; - -FLUSH STATUS; -set @save_optimizer_switch2=@@optimizer_switch; -set optimizer_switch='subquery_cache=off'; - ---echo -SELECT i1, i2 -FROM t1 -WHERE (i1, i2) - NOT IN (SELECT i1, i2 FROM t2); - ---echo ---echo # Check that the subquery only has to be evaluated once ---echo # for all-NULL values even though there are two (NULL,NULL) records ---echo # Baseline: -SHOW STATUS LIKE '%Handler_read_rnd_next'; - ---echo -INSERT INTO t1 VALUES (NULL, NULL); -FLUSH STATUS; - ---echo -SELECT i1, i2 -FROM t1 -WHERE (i1, i2) - NOT IN (SELECT i1, i2 FROM t2); - ---echo ---echo # Handler_read_rnd_next should be one more than baseline ---echo # (read record from t1, but do not read from t2) -SHOW STATUS LIKE '%Handler_read_rnd_next'; - -set @@optimizer_switch=@save_optimizer_switch2; -DROP TABLE t1,t2; - ---echo End of 5.1 tests - -# -# Test for the problem with using sj-materialization when subquery's select -# list element SCOL is covered by equality propagation and has preceding equal -# column PCOL which belongs to a table within the the semi-join nest: SJM-Scan -# process should unpack column value not to SCOL but rather to PCOL, as -# substitute_best_equal has made all conditions to refer to PCOL. -# -CREATE TABLE t1 ( - a int(11) NOT NULL, - b int(11) NOT NULL, - c datetime default NULL, - PRIMARY KEY (a), - KEY idx_bc (b,c) -); - -INSERT INTO t1 VALUES -(406989,67,'2006-02-23 17:08:46'), (150078,67,'2005-10-26 11:17:45'), -(406993,67,'2006-02-27 11:20:57'), (245655,67,'2005-12-08 15:59:08'), -(406994,67,'2006-02-27 11:26:46'), (256,67,NULL), -(398341,67,'2006-02-20 04:48:44'), (254,67,NULL),(1120,67,NULL), -(406988,67,'2006-02-23 17:07:22'), (255,67,NULL), -(398340,67,'2006-02-20 04:38:53'),(406631,67,'2006-02-23 10:49:42'), -(245653,67,'2005-12-08 15:59:07'),(406992,67,'2006-02-24 16:47:18'), -(245654,67,'2005-12-08 15:59:08'),(406995,67,'2006-02-28 11:55:00'), -(127261,67,'2005-10-13 12:17:58'),(406991,67,'2006-02-24 16:42:32'), -(245652,67,'2005-12-08 15:58:27'),(398545,67,'2006-02-20 04:53:13'), -(154504,67,'2005-10-28 11:53:01'),(9199,67,NULL),(1,67,'2006-02-23 15:01:35'), -(223456,67,NULL),(4101,67,NULL),(1133,67,NULL), -(406990,67,'2006-02-23 18:01:45'),(148815,67,'2005-10-25 15:34:17'), -(148812,67,'2005-10-25 15:30:01'),(245651,67,'2005-12-08 15:58:27'), -(154503,67,'2005-10-28 11:52:38'); - -create table t11 select * from t1 where b = 67 AND (c IS NULL OR c > NOW()) order by 3 asc; -create table t12 select * from t1 where b = 67 AND (c IS NULL OR c > NOW()) order by 3 desc; -create table t21 select * from t1 where b = 67 AND (c IS NULL OR c > '2005-12-08') order by 3 asc; -create table t22 select * from t1 where b = 67 AND (c IS NULL OR c > '2005-12-08') order by 3 desc; - -set @@optimizer_switch=@save_optimizer_switch; -set @@optimizer_switch='materialization=off'; - -update t22 set c = '2005-12-08 15:58:27' where a = 255; -explain select t21.* from t21,t22 where t21.a = t22.a and -t22.a in (select t12.a from t11, t12 where t11.a in(255,256) and t11.a = t12.a and t11.c is null) and t22.c is null order by t21.a; -select t21.* from t21,t22 where t21.a = t22.a and -t22.a in (select t12.a from t11, t12 where t11.a in(255,256) and t11.a = t12.a and t11.c is null) and t22.c is null order by t21.a; - -set @@optimizer_switch=@save_optimizer_switch; - -drop table t1, t11, t12, t21, t22; - -# -# Test sj-materialization re-execution. The test isn't meaningful (materialized -# table stays the same across all executions) because it's hard to create a -# dataset that would verify correct re-execution without hitting BUG#31480 -# -create table t1(a int); -insert into t1 values (0),(1); - -set @@optimizer_switch='firstmatch=off,materialization=off'; -explain -select (select max(Y.a) from t1 Y where a in (select a from t1 Z) and a < X.a) as subq from t1 X; -select (select max(Y.a) from t1 Y where a in (select a from t1 Z) and a < X.a) as subq from t1 X; -set @@optimizer_switch=@save_optimizer_switch; - -drop table t1; - -# -# Test confluent duplicate weedout -# -create table t0 (a int); -insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); -create table t1 as select * from t0; -insert into t1 select a+10 from t0; -set @@optimizer_switch='firstmatch=off,materialization=off'; -insert into t0 values(2); -explain select * from t1 where 2 in (select a from t0); -select * from t1 where 2 in (select a from t0); -set @@optimizer_switch=@save_optimizer_switch; -set @@optimizer_switch='materialization=off'; -explain select * from t1 where 2 in (select a from t0); -select * from t1 where 2 in (select a from t0); -set @@optimizer_switch=@save_optimizer_switch; - - -set @@optimizer_switch=@save_optimizer_switch; -set @@optimizer_switch='materialization=off'; - -# -# FirstMatch referring to a derived table -# -set @tmp_optimizer_switch=@@optimizer_switch; -set optimizer_switch='derived_merge=off,derived_with_keys=off'; -explain select * from (select a from t0) X where a in (select a from t1); -drop table t0, t1; -set optimizer_switch=@tmp_optimizer_switch; - -# -# LooseScan: Check if we can pick it together with range access -# -create table t0 (a int); -insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); - -create table t1 (kp1 int, kp2 int, c int, filler char(100), key(kp1, kp2)); -insert into t1 select A.a+10*(B.a+10*C.a), 0, 0, 'filler' from t0 A, t0 B, t0 C; -insert into t1 select * from t1 where kp1 < 20; - -create table t3 (a int); -insert into t3 select A.a + 10*B.a from t0 A, t0 B; - -explain select * from t3 where a in (select kp1 from t1 where kp1<20); - -create table t4 (pk int primary key); -insert into t4 select a from t3; - -explain select * from t3 where a in (select t1.kp1 from t1,t4 where kp1<20 -and t4.pk=t1.c); - -drop table t1, t3, t4; - -set @@optimizer_switch=@save_optimizer_switch; - -# -# Test if we handle duplicate elimination temptable overflowing to disk -# -create table t1 (a int) as select * from t0 where a < 5; - -set @save_max_heap_table_size=@@max_heap_table_size; -set @@optimizer_switch='firstmatch=off,materialization=off'; -set @@max_heap_table_size= 16384; - -explain select count(*) from t0 A, t0 B, t0 C, t0 D where D.a in (select a from t1 E where a+1 < 10000 + A.a + B.a +C.a+D.a); -flush status; -select count(*) from t0 A, t0 B, t0 C, t0 D where D.a in (select a from t1 E where a+1 < 10000 + A.a + B.a +C.a+D.a); -show status like 'Created_tmp_disk_tables'; -set @save_max_heap_table_size=@@max_heap_table_size; -set @@optimizer_switch=@save_optimizer_switch; -drop table t0, t1; - -# -# Materialize + Scan + ref access to the subsequent table based on scanned -# value -# -create table t0 (a int); -insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); -create table t2(a int); -insert into t2 values (1),(2); -create table t3 ( a int , filler char(100), key(a)); -insert into t3 select A.a + 10*B.a, 'filler' from t0 A, t0 B; -explain select * from t3 where a in (select a from t2) and (a > 5 or a < 10); -select * from t3 where a in (select a from t2); - -drop table t0, t2, t3; - -# -# DATETIME type checks -# -set @@optimizer_switch='firstmatch=off,materialization=off'; -create table t1 (a date); -insert into t1 values ('2008-01-01'),('2008-01-01'),('2008-02-01'),('2008-02-01'); -create table t2 (a int); -insert into t2 values (1),(2); -create table t3 (a char(10)); -insert into t3 select * from t1; -insert into t3 values (1),(2); -explain select * from t2 where a in (select a from t1); -explain select * from t2 where a in (select a from t2); -explain select * from t2 where a in (select a from t3); -explain select * from t1 where a in (select a from t3); -drop table t1, t2, t3; -create table t1 (a decimal); -insert into t1 values (1),(2); -explain select * from t1 where a in (select a from t1); -drop table t1; -set @@optimizer_switch=@save_optimizer_switch; - -set @@optimizer_switch=@save_optimizer_switch; -set @@optimizer_switch='materialization=off'; - -# -# SJ-Materialization-scan for non-first table -# -create table t1 (a int); -insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); -create table t2 as select * from t1; -create table t3 (a int, b int, filler char(100), key(a)); -insert into t3 select A.a + 10*B.a, A.a + 10*B.a, 'filler' from t1 A, t1 B, t1 C; -explain select * from t1, t3 where t3.a in (select a from t2) and (t3.a < 10 or t3.a >30) and t1.a =3; - -# -# Verify that straight_join modifier in parent or child prevents flattening -# -explain select straight_join * from t1 A, t1 B where A.a in (select a from t2); -explain select * from t2 where a in (select straight_join A.a from t1 A, t1 B); -explain select * from t2 where a in (select straight_join A.a from t1 A, t1 B); -explain select straight_join * from t2 X, t2 Y -where X.a in (select straight_join A.a from t1 A, t1 B); - -# -# SJ-Materialization scan + first table being system const table -# -create table t0 (a int, b int); -insert into t0 values(1,1); -explain select * from t0, t3 where t3.a in (select a from t2) and (t3.a < 10 or t3.a >30); -create table t4 as select a as x, a as y from t1; -explain select * from t0, t3 where (t3.a, t3.b) in (select x,y from t4) and (t3.a < 10 or t3.a >30); -drop table t0,t1,t2,t3,t4; - -# -# LooseScan with ref access -# -create table t0 (a int); -insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); -create table t1 (a int, b int, filler char(100), key(a,b)); -insert into t1 select A.a, B.a, 'filler' from t0 A, t0 B; -create table t2 as select * from t1; - -explain select * from t2 where a in (select b from t1 where a=3); -explain select * from t2 where (b,a) in (select a,b from t1 where a=3); - -drop table t1,t2; - -set @@optimizer_switch=@save_optimizer_switch; - -# -# Multi-column sj-materialization with lookups -# -create table t1 (a int, b int); -insert into t1 select a,a from t0; -create table t2 (a int, b int); -insert into t2 select A.a + 10*B.a, A.a + 10*B.a from t0 A, t0 B; - -set @@optimizer_switch='firstmatch=off,materialization=off'; -explain select * from t1 where (a,b) in (select a,b from t2); - -# A smallish test if find_best() still works for semi-join optimization: -set @save_optimizer_search_depth=@@optimizer_search_depth; -set @@optimizer_search_depth=63; -explain select * from t1 where (a,b) in (select a,b from t2); -set @@optimizer_search_depth=@save_optimizer_search_depth; -set @@optimizer_switch=@save_optimizer_switch; - -drop table t0, t1, t2; - -set @@optimizer_switch='materialization=off'; - -# -# Primitive SJ-Materialization tests for DECIMAL and DATE -# -create table t0 (a decimal(4,2)); -insert into t0 values (10.24), (22.11); -create table t1 as select * from t0; -insert into t1 select * from t0; -explain select * from t0 where a in (select a from t1); -select * from t0 where a in (select a from t1); -drop table t0, t1; - -create table t0(a date); -insert into t0 values ('2008-01-01'),('2008-02-02'); -create table t1 as select * from t0; -insert into t1 select * from t0; -explain select * from t0 where a in (select a from t1); -select * from t0 where a in (select a from t1); -drop table t0, t1; - -# -# Fix a trivial crash with SJ-Materialization lookup, multiple tables in the -# subquery, and a condition on some of inner tables but not others -# -create table t0(a int); -insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); -create table t1 as select a as a, a as b, a as c from t0 where a < 3; -create table t2 as select a as a, a as b from t0 where a < 3; -insert into t2 select * from t2; - -explain select * from t1 where (a,b,c) in (select X.a, Y.a, Z.a from t2 X, t2 Y, t2 Z where X.b=33); - -drop table t0,t1,t2; - -set @@optimizer_switch=@save_optimizer_switch; - ---echo ---echo BUG#37842: Assertion in DsMrr_impl::dsmrr_init, at handler.cc:4307 ---echo -CREATE TABLE t1 ( - `pk` int(11) NOT NULL AUTO_INCREMENT, - `int_key` int(11) DEFAULT NULL, - PRIMARY KEY (`pk`), - KEY `int_key` (`int_key`) -) ENGINE=MyISAM; -INSERT INTO t1 VALUES (1,9),(2,3),(3,8),(4,6),(5,9),(6,5),(7,5),(8,9),(9,1),(10,10); -SELECT `pk` FROM t1 AS OUTR WHERE `int_key` = ALL ( - SELECT `int_key` FROM t1 AS INNR WHERE INNR . `pk` >= 9 -); -DROP TABLE t1; - ---echo ---echo BUG#40118 Crash when running Batched Key Access and requiring one match for each key ---echo -create table t0(a int); -insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); -create table t1 (a int, key(a)); -insert into t1 select * from t0; -alter table t1 add b int not null, add filler char(200); -insert into t1 select * from t1; -insert into t1 select * from t1; - -set @save_join_cache_level=@@join_cache_level; -set join_cache_level=6; -select * from t0 where t0.a in (select t1.a from t1 where t1.b=0); -set join_cache_level=@save_join_cache_level; -drop table t0, t1; - ---echo # ---echo # BUG#32665 Query with dependent subquery is too slow ---echo # -create table t1 ( - idIndividual int primary key -); -insert into t1 values (1),(2); - -create table t2 ( - idContact int primary key, - contactType int, - idObj int -); -insert into t2 values (1,1,1),(2,2,2),(3,3,3); - -create table t3 ( - idAddress int primary key, - idContact int, - postalStripped varchar(100) -); - -insert into t3 values (1,1, 'foo'), (2,2,'bar'); - ---echo The following must be converted to a semi-join: -set @save_optimizer_switch=@@optimizer_switch; -set @@optimizer_switch='materialization=off'; -explain extended SELECT a.idIndividual FROM t1 a -WHERE a.idIndividual IN - ( SELECT c.idObj FROM t3 cona - INNER JOIN t2 c ON c.idContact=cona.idContact - WHERE cona.postalStripped='T2H3B2' - ); -set @@optimizer_switch=@save_optimizer_switch; -drop table t1,t2,t3; - ---echo # ---echo # BUG#47367 Crash in Name_resolution_context::process_error ---echo # - -SET SESSION optimizer_switch = 'semijoin=off'; -CREATE TABLE t1 (f1 INTEGER); -CREATE TABLE t2 LIKE t1; -delimiter |; -CREATE PROCEDURE p1 () BEGIN SELECT f1 FROM t1 WHERE f1 IN (SELECT f1 FROM t2); END| -delimiter ;| -CALL p1; -ALTER TABLE t2 CHANGE COLUMN f1 my_column INT; -CALL p1; -DROP PROCEDURE p1; ---echo # Restore the original column list of table t2: -ALTER TABLE t2 CHANGE COLUMN my_column f1 INT; - -SET SESSION optimizer_switch = 'semijoin=on'; -delimiter |; ---echo # Recreate procedure so that we eliminate any caching effects -CREATE PROCEDURE p1 () BEGIN SELECT f1 FROM t1 WHERE f1 IN (SELECT f1 FROM t2); END| -delimiter ;| -CALL p1; -ALTER TABLE t2 CHANGE COLUMN f1 my_column INT; ---error ER_BAD_FIELD_ERROR -CALL p1; -DROP PROCEDURE p1; -DROP TABLE t1, t2; - ---echo # ---echo # fix of lp:824425 (prohibiting subqueries in row in ---echo # left part of IN/ALL/ANY) ---echo # - -CREATE TABLE t1 ( a int) ; -INSERT INTO t1 VALUES (20),(30); - -CREATE TABLE t2 (a int) ; -INSERT INTO t2 VALUES (3),(9); - -CREATE TABLE t3 ( a int, b int) ; -INSERT INTO t3 VALUES (20,5),(30,6); - -set @optimizer_switch_save=@@optimizer_switch; -SET SESSION optimizer_switch='semijoin=OFF,in_to_exists=OFF,materialization=ON,partial_match_rowid_merge=ON,partial_match_table_scan=OFF'; - -SELECT * FROM t1 -WHERE ( - ( SELECT a FROM t2 WHERE a = 9 ) -) NOT IN ( - SELECT b - FROM t3 -); -explain extended -SELECT * FROM t1 -WHERE ( - ( SELECT a FROM t2 WHERE a = 9 ) -) NOT IN ( - SELECT b - FROM t3 -); - ---error ER_NOT_SUPPORTED_YET -SELECT * FROM t1 -WHERE ( - ( SELECT a FROM t2 WHERE a = 9 ), - ( SELECT a FROM t2 WHERE a = 3 ) -) NOT IN ( - SELECT b , a - FROM t3 -); -set optimizer_switch=@optimizer_switch_save; - -drop table t1,t2,t3; - ---echo End of 5.3 tests - ---echo # ---echo # BUG#48920: COUNT DISTINCT returns 1 for NULL values when in a subquery ---echo # in the select list ---echo # - ---echo -CREATE TABLE t1 ( - i int(11) DEFAULT NULL, - v varchar(1) DEFAULT NULL -); - ---echo -INSERT INTO t1 VALUES (8,'v'); -INSERT INTO t1 VALUES (9,'r'); -INSERT INTO t1 VALUES (NULL,'y'); - ---echo -CREATE TABLE t2 ( - i int(11) DEFAULT NULL, - v varchar(1) DEFAULT NULL, - KEY i_key (i) -); - ---echo -INSERT INTO t2 VALUES (NULL,'r'); -INSERT INTO t2 VALUES (0,'c'); -INSERT INTO t2 VALUES (0,'o'); -INSERT INTO t2 VALUES (2,'v'); -INSERT INTO t2 VALUES (7,'c'); - ---echo -SELECT i, v, (SELECT COUNT(DISTINCT i) - FROM t1 - WHERE v = t2.v) as subsel -FROM t2; - ---echo -EXPLAIN EXTENDED -SELECT i, v, (SELECT COUNT(DISTINCT i) - FROM t1 - WHERE v = t2.v) as subsel -FROM t2; - -DROP TABLE t1,t2; - ---echo End of 5.6 tests - -# The following command must be the last one in the file -set @@optimizer_switch=@subselect3_tmp; +--echo # end of 10.2 test diff --git a/mysql-test/t/subselect3_jcl6.test b/mysql-test/t/subselect3_jcl6.test index e4b1c144b93..e367866733d 100644 --- a/mysql-test/t/subselect3_jcl6.test +++ b/mysql-test/t/subselect3_jcl6.test @@ -2,21 +2,14 @@ # Run subselect3.test with BKA enabled # -set @save_optimizer_switch=@@optimizer_switch; +--source include/default_optimizer_switch.inc + set @@optimizer_switch='optimize_join_buffer_size=on'; set @@optimizer_switch='semijoin_with_cache=on'; set @@optimizer_switch='outer_join_with_cache=on'; set optimizer_switch='mrr=on,mrr_sort_keys=on,index_condition_pushdown=on'; - set join_cache_level=6; -show variables like 'join_cache_level'; - -set @join_cache_level_for_subselect3_test=@@join_cache_level; - ---source t/subselect3.test -set join_cache_level=default; -show variables like 'join_cache_level'; +--source subselect3.inc -set @@optimizer_switch=@save_optimizer_switch; -set @join_cache_level_for_subselect3_test=NULL; +--echo # end of 10.2 test diff --git a/mysql-test/t/subselect4.test b/mysql-test/t/subselect4.test index d5a40419185..5012e9eb4d8 100644 --- a/mysql-test/t/subselect4.test +++ b/mysql-test/t/subselect4.test @@ -1,5 +1,7 @@ # General purpose bug fix tests go here : subselect.test too large +--source include/default_optimizer_switch.inc + --disable_warnings drop table if exists t0,t1,t2,t3,t4,t5,t6; drop view if exists v1, v2; diff --git a/mysql-test/t/subselect_exists2in.test b/mysql-test/t/subselect_exists2in.test index 5a8ddb3612f..1354953e972 100644 --- a/mysql-test/t/subselect_exists2in.test +++ b/mysql-test/t/subselect_exists2in.test @@ -1,3 +1,4 @@ +--source include/default_optimizer_switch.inc --disable_warnings drop table if exists t1,t2,t3; diff --git a/mysql-test/t/subselect_extra.test b/mysql-test/t/subselect_extra.test index b76f3f70516..3651aed9aab 100644 --- a/mysql-test/t/subselect_extra.test +++ b/mysql-test/t/subselect_extra.test @@ -6,6 +6,7 @@ # # and get as much subquery testing as possible. # +--source include/default_optimizer_switch.inc --disable_warnings drop table if exists t1,t2,t3,t4; diff --git a/mysql-test/t/subselect_mat_cost.test b/mysql-test/t/subselect_mat_cost.test index 5a1fb550ca4..b183e2496c6 100644 --- a/mysql-test/t/subselect_mat_cost.test +++ b/mysql-test/t/subselect_mat_cost.test @@ -13,7 +13,9 @@ # switches, data distribution, available indexes, and typical queries. # -set @subselect_mat_cost=@@optimizer_switch; +--source include/default_optimizer_switch.inc +--source include/default_charset.inc + set optimizer_switch='mrr=on,mrr_sort_keys=on,index_condition_pushdown=on'; # # Test logging to slow log (there was some errors in the log files about @@ -426,4 +428,4 @@ drop database world; # inner subqyery is materialized while the outer subquery is not ( #IN_EXIST transformation is applied to it) -set optimizer_switch=@subselect_mat_cost; +set optimizer_switch=default; diff --git a/mysql-test/t/subselect_mat_cost_bugs.test b/mysql-test/t/subselect_mat_cost_bugs.test index 67af6e3a54a..028cdced560 100644 --- a/mysql-test/t/subselect_mat_cost_bugs.test +++ b/mysql-test/t/subselect_mat_cost_bugs.test @@ -2,6 +2,7 @@ # Test cases for bugs related to the implementation of # MWL#89 cost-based choice between the materialization and in-to-exists # +--source include/default_optimizer_switch.inc --echo # --echo # LP BUG#643424 valgrind warning in choose_subquery_plan() diff --git a/mysql-test/t/subselect_sj.test b/mysql-test/t/subselect_sj.test index 33ac85f9cf2..e619a5df52c 100644 --- a/mysql-test/t/subselect_sj.test +++ b/mysql-test/t/subselect_sj.test @@ -22,7 +22,7 @@ if (`select @join_cache_level_for_subselect_sj_test is not null`) } # The 'default' value within the scope of this test: -set @save_optimizer_switch=@@optimizer_switch; +set @local_optimizer_switch=@@optimizer_switch; # # 1. Subqueries that are converted into semi-joins @@ -79,6 +79,7 @@ select * from t1 left join (t2 A, t2 B) on ( A.a= t1.a and B.a in (select pk fro explain extended select * from t1 left join t2 on (t2.a= t1.a and t2.a in (select pk from t10)); +set @save_join_buffer_size=@@join_buffer_size; set join_buffer_size=8*1024; --echo we shouldn't flatten if we're going to get a join of > MAX_TABLES. @@ -99,7 +100,7 @@ select * from t1 left join t2 on (t2.a= t1.a and t2.a in (select pk from t10)) where t1.a < 5; -set join_buffer_size=default; +set join_buffer_size=@save_join_buffer_size; # # Prepared statements @@ -247,7 +248,7 @@ INSERT INTO WORKS VALUES ('E4','P2',20); INSERT INTO WORKS VALUES ('E4','P4',40); INSERT INTO WORKS VALUES ('E4','P5',80); -set optimizer_switch=@save_optimizer_switch; +set optimizer_switch=@local_optimizer_switch; set optimizer_switch='materialization=off'; explain SELECT EMPNUM, EMPNAME @@ -264,7 +265,7 @@ WHERE EMPNUM IN WHERE PNUM IN (SELECT PNUM FROM PROJ)); -set optimizer_switch=@save_optimizer_switch; +set optimizer_switch=@local_optimizer_switch; drop table STAFF,WORKS,PROJ; @@ -383,7 +384,7 @@ drop table t1, t2; drop view v1; drop procedure p1; -set SESSION optimizer_switch=@save_optimizer_switch; +set SESSION optimizer_switch=@local_optimizer_switch; --echo # End of bug#46744 @@ -550,7 +551,7 @@ DROP TABLE t1,t2; DROP VIEW v1,v2; DROP PROCEDURE p1; -set SESSION optimizer_switch=@save_optimizer_switch; +set SESSION optimizer_switch=@local_optimizer_switch; --echo # End of BUG#48834 @@ -966,7 +967,7 @@ DROP TABLE t3; --echo # LPBUG#602574: RQG: sql_select.cc:5385: bool greedy_search(JOIN*, table_map, uint, --echo # uint): Assertion `join->best_read < --echo # -set @save_optimizer_switch=@@optimizer_switch; +set @tmp_optimizer_switch=@@optimizer_switch; set optimizer_switch='materialization=off'; CREATE TABLE t1 ( varchar_key varchar(1) DEFAULT NULL, @@ -1002,7 +1003,7 @@ WHERE (SELECT varchar_key FROM t3 FROM t1 RIGHT JOIN t2 ON t1.varchar_key ) ); -set optimizer_switch=@save_optimizer_switch; +set optimizer_switch=@tmp_optimizer_switch; DROP TABLE t1, t2, t3; --echo # @@ -1144,7 +1145,7 @@ DROP TABLE t1, t2, t3; --echo # BUG#53060: LooseScan semijoin strategy does not return all rows --echo # -set @save_optimizer_switch=@@optimizer_switch; +set @tmp_optimizer_switch=@@optimizer_switch; set optimizer_switch='semijoin=on,materialization=off'; set optimizer_switch='firstmatch=off,loosescan=on'; @@ -1159,7 +1160,7 @@ SELECT * FROM t1 WHERE (i) IN (SELECT i FROM t2 where j > 0); DROP TABLE t1, t2; -set optimizer_switch=@save_optimizer_switch; +set optimizer_switch=@tmp_optimizer_switch; --echo # --echo # BUG#49453: re-execution of prepared statement with view @@ -1202,7 +1203,7 @@ insert into t1 values(1),(1); insert into t2 values(1),(1),(1),(1); insert into t3 values(2),(2); -set @save_optimizer_switch=@@optimizer_switch; +set @tmp_optimizer_switch=@@optimizer_switch; set optimizer_switch='materialization=off'; @@ -1216,7 +1217,7 @@ explain select * from t1 where t1.a in (select t2.a from t2 left join t3 on t2.a=t3.a); select * from t1 where t1.a in (select t2.a from t2 left join t3 on t2.a=t3.a); -set optimizer_switch=@save_optimizer_switch; +set optimizer_switch=@tmp_optimizer_switch; drop table t1,t2,t3; @@ -1231,7 +1232,7 @@ INSERT INTO t1 VALUES(1),(1); INSERT INTO t2 VALUES(1),(1); INSERT INTO t3 VALUES(2),(2); -set @save_optimizer_switch=@@optimizer_switch; +set @tmp_optimzer_switch=@@optimizer_switch; set optimizer_switch='semijoin=off,materialization=off'; EXPLAIN @@ -1260,7 +1261,7 @@ SELECT * FROM t1 WHERE t1.a IN (SELECT t2.a FROM t2 LEFT JOIN (t2 AS t2inner, t3) ON t2.a=t3.a); -set optimizer_switch=@save_optimizer_switch; +set optimizer_switch=@tmp_optimzer_switch; DROP TABLE t1,t2,t3; @@ -1286,7 +1287,7 @@ INSERT INTO t2a VALUES ('1 - 11', '2 - 21'), INSERT INTO t2b SELECT * FROM t2a; INSERT INTO t2c SELECT * FROM t2a; -set @save_optimizer_switch=@@optimizer_switch; +set @tmp_optimzer_switch=@@optimizer_switch; set optimizer_switch='semijoin=off,materialization=on'; @@ -1308,7 +1309,7 @@ SELECT * FROM t1 WHERE (a1, a2) IN ( SELECT b1, b2 FROM t2c WHERE b1 > '0'); -set optimizer_switch=@save_optimizer_switch; +set optimizer_switch=@tmp_optimzer_switch; DROP TABLE t1,t2a,t2b,t2c; @@ -1333,7 +1334,7 @@ FROM ot1 (ot2 JOIN ot3 on ot2.a=ot3.a) ON ot1.a=ot2.a AND ot1.a IN (SELECT a from it1); -set @save_optimizer_switch=@@optimizer_switch; +set @tmp_optimzer_switch=@@optimizer_switch; set optimizer_switch='semijoin=on'; @@ -1353,7 +1354,7 @@ execute s; execute s; deallocate prepare s; -set optimizer_switch=@save_optimizer_switch; +set optimizer_switch=@tmp_optimzer_switch; DROP TABLE ot1, ot2, ot3, it1; @@ -1371,7 +1372,7 @@ INSERT INTO t3 VALUES (1,1), (2,1), (5,4), (7,3), (8,2), (8,1), (7,3), (9,5), (4,3), (7,2), (7,7), (3,1), (5,8), (9,7); -set @save_optimizer_switch=@@optimizer_switch; +set @tmp_optimzer_switch=@@optimizer_switch; set optimizer_switch='semijoin=off,materialization=on'; EXPLAIN @@ -1391,7 +1392,7 @@ SELECT * FROM t3 WHERE f2 IN (SELECT t1.f1 FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE); -set optimizer_switch=@save_optimizer_switch; +set optimizer_switch=@tmp_optimzer_switch; DROP TABLE t1, t2, t3 ; @@ -2673,7 +2674,7 @@ SET @tmp_mdev5059=@@join_cache_level; # Any value > 2 will do SET join_cache_level = 3; set @tmp_os_mdev5059= @@optimizer_switch; -set optimizer_switch=default; +set optimizer_switch=@local_optimizer_switch; CREATE TABLE t1 (pk1 INT PRIMARY KEY, i1 INT) ENGINE=MyISAM; INSERT INTO t1 VALUES (1,4),(2,5); diff --git a/mysql-test/t/subselect_sj2.test b/mysql-test/t/subselect_sj2.test index a948b086a85..f63de3cd35a 100644 --- a/mysql-test/t/subselect_sj2.test +++ b/mysql-test/t/subselect_sj2.test @@ -794,9 +794,9 @@ set join_buffer_size=1; --enable_warnings select * from t2 where filler1 in ( select a from t1); -set join_buffer_size=default; +set join_buffer_size=@save_join_buffer_size; -drop table t1, t2; +drop table t1, t2; # # BUG#33509: Server crashes with number of recursive subqueries=61 # (the query may or may not fail with an error so we're using it with SP diff --git a/mysql-test/t/subselect_sj2_jcl6.test b/mysql-test/t/subselect_sj2_jcl6.test index fbc474f7067..3d15afb436c 100644 --- a/mysql-test/t/subselect_sj2_jcl6.test +++ b/mysql-test/t/subselect_sj2_jcl6.test @@ -103,10 +103,6 @@ set join_cache_level=default; DROP TABLE t1,t2; - -set join_cache_level=default; -show variables like 'join_cache_level'; - set @@optimizer_switch=@save_optimizer_switch_jcl6; set @optimizer_switch_for_subselect_sj2_test=NULL; set @join_cache_level_subselect_sj2_test=NULL; diff --git a/mysql-test/t/subselect_sj2_mat.test b/mysql-test/t/subselect_sj2_mat.test index f54771856e7..1b15e88bdcc 100644 --- a/mysql-test/t/subselect_sj2_mat.test +++ b/mysql-test/t/subselect_sj2_mat.test @@ -1,6 +1,8 @@ # # Run subselect_sj2.test with subquery materialization. # +--source include/default_optimizer_switch.inc + set optimizer_switch='materialization=on'; set optimizer_switch='mrr=on,mrr_sort_keys=on,index_condition_pushdown=on'; diff --git a/mysql-test/t/subselect_sj_jcl6.test b/mysql-test/t/subselect_sj_jcl6.test index e86ed017951..c64ece7f5e3 100644 --- a/mysql-test/t/subselect_sj_jcl6.test +++ b/mysql-test/t/subselect_sj_jcl6.test @@ -1,6 +1,7 @@ # # Run subselect_sj.test with BKA enabled # +--source include/default_optimizer_switch.inc set @save_optimizer_switch_jcl6=@@optimizer_switch; set @@optimizer_switch='optimize_join_buffer_size=on'; @@ -9,9 +10,8 @@ set @@optimizer_switch='semijoin_with_cache=on'; set @@optimizer_switch='outer_join_with_cache=on'; set @@optimizer_switch='join_cache_hashed=off'; set optimizer_switch='mrr=on,mrr_sort_keys=on,index_condition_pushdown=on'; - +set @save_join_cache_level=@@join_cache_level; set join_cache_level=6; -show variables like 'join_cache_level'; set @optimizer_switch_for_subselect_sj_test=@@optimizer_switch; set @join_cache_level_for_subselect_sj_test=@@join_cache_level; @@ -208,9 +208,7 @@ DROP TABLE t1,t2; --echo # End -set join_cache_level=default; -show variables like 'join_cache_level'; - +set join_cache_level=@save_join_cache_level; set @@optimizer_switch=@save_optimizer_switch_jcl6; set @optimizer_switch_for_subselect_sj_test=NULL; set @join_cache_level_subselect_sj_test=NULL; diff --git a/mysql-test/t/subselect_sj_mat.test b/mysql-test/t/subselect_sj_mat.test index 12c32b53aa6..8583a6951b9 100644 --- a/mysql-test/t/subselect_sj_mat.test +++ b/mysql-test/t/subselect_sj_mat.test @@ -3,7 +3,8 @@ # (WL#1110: Subquery optimization: materialization) # -set @subselect_sj_mat_tmp= @@optimizer_switch; +--source include/default_optimizer_switch.inc + set optimizer_switch=ifnull(@subselect_mat_test_optimizer_switch_value, 'semijoin=on,firstmatch=on,loosescan=on,semijoin_with_cache=on'); set optimizer_switch='mrr=on,mrr_sort_keys=on,index_condition_pushdown=on'; set @optimizer_switch_local_default= @@optimizer_switch; @@ -127,7 +128,7 @@ select * from t1 where (a1, a2) in (select b1, min(b2) from t2i limit 1,1); # test re-optimization/re-execution with different execution methods # prepare once, exec with different modes -set @save_optimizer_switch=@@optimizer_switch; +set @local_optimizer_switch=@@optimizer_switch; set @@optimizer_switch=@optimizer_switch_local_default; set @@optimizer_switch='semijoin=off'; prepare st1 from @@ -149,7 +150,7 @@ execute st1; set @@optimizer_switch=@optimizer_switch_local_default; set @@optimizer_switch='materialization=off,in_to_exists=on'; execute st1; -set @@optimizer_switch=@save_optimizer_switch; +set @@optimizer_switch=@local_optimizer_switch; # materialize the result of ORDER BY # non-indexed fields @@ -838,7 +839,7 @@ insert into t1 values (5); explain select min(a1) from t1 where 7 in (select max(b1) from t2 group by b1); select min(a1) from t1 where 7 in (select max(b1) from t2 group by b1); # Query with group by, executed via IN=>EXISTS -set @save_optimizer_switch=@@optimizer_switch; +set @local_optimizer_switch=@@optimizer_switch; set @@optimizer_switch=@optimizer_switch_local_default; set @@optimizer_switch='materialization=off,in_to_exists=on'; explain select min(a1) from t1 where 7 in (select max(b1) from t2 group by b1); @@ -860,7 +861,7 @@ select min(a1) from t1 where 7 in (select b1 from t2); -- echo # but when we go around MWL#90 code, the problem still shows up: explain select min(a1) from t1 where 7 in (select b1 from t2) or 2> 4; select min(a1) from t1 where 7 in (select b1 from t2) or 2> 4; -set @@optimizer_switch= @save_optimizer_switch; +set @@optimizer_switch= @local_optimizer_switch; drop table t1,t2; # @@ -1146,12 +1147,12 @@ CREATE TABLE t2 LIKE t1; INSERT INTO t2 VALUES (1, 1.789); INSERT INTO t2 VALUES (13, 1.454); -set @save_optimizer_switch=@@optimizer_switch; +set @local_optimizer_switch=@@optimizer_switch; set @@optimizer_switch=@optimizer_switch_local_default; SET @@optimizer_switch='semijoin=on,materialization=on'; EXPLAIN SELECT COUNT(*) FROM t1 WHERE (f1,f2) IN (SELECT f1,f2 FROM t2); SELECT COUNT(*) FROM t1 WHERE (f1,f2) IN (SELECT f1,f2 FROM t2); -set @@optimizer_switch= @save_optimizer_switch; +set @@optimizer_switch= @local_optimizer_switch; DROP TABLE t1, t2; @@ -1171,14 +1172,14 @@ INSERT INTO t1 VALUES (1,'o','ffff','ffff','ffoo'),(2,'f','ffff','ffff','ffff'); CREATE TABLE t2 LIKE t1; INSERT INTO t2 VALUES (1,'i','iiii','iiii','iiii'),(2,'f','ffff','ffff','ffff'); -set @save_optimizer_switch=@@optimizer_switch; +set @local_optimizer_switch=@@optimizer_switch; set @@optimizer_switch=@optimizer_switch_local_default; SET @@optimizer_switch='semijoin=on,materialization=on'; EXPLAIN SELECT pk FROM t1 WHERE (a) IN (SELECT a FROM t2 WHERE pk > 0); SELECT pk FROM t1 WHERE (a) IN (SELECT a FROM t2 WHERE pk > 0); SELECT pk FROM t1 WHERE (b,c,d) IN (SELECT b,c,d FROM t2 WHERE pk > 0); DROP TABLE t1, t2; -set optimizer_switch=@save_optimizer_switch; +set optimizer_switch=@local_optimizer_switch; --echo # --echo # BUG#50019: Wrong result for IN-subquery with materialization @@ -1190,10 +1191,10 @@ insert into t2 values (1), (2), (3), (4), (5), (6), (7), (8), (9), (10); create table t3(i int); insert into t3 values (1), (2), (3), (4), (5), (6), (7), (8), (9), (10); select * from t1 where t1.i in (select t2.i from t2 join t3 where t2.i + t3.i = 5); -set @save_optimizer_switch=@@optimizer_switch; +set @local_optimizer_switch=@@optimizer_switch; set session optimizer_switch='materialization=off,in_to_exists=on'; select * from t1 where t1.i in (select t2.i from t2 join t3 where t2.i + t3.i = 5); -set session optimizer_switch=@save_optimizer_switch; +set session optimizer_switch=@local_optimizer_switch; drop table t1, t2, t3; # @@ -1579,7 +1580,7 @@ DROP TABLE t1,t2,t3; --echo # BUG#939009: Crash with aggregate function in IN subquery --echo # -SET @save_optimizer_switch=@@optimizer_switch; +SET @local_optimizer_switch=@@optimizer_switch; SET optimizer_switch='materialization=on,semijoin=on'; CREATE TABLE t1 (a int, b int); @@ -1600,7 +1601,7 @@ SELECT * FROM t1 SELECT * FROM t1 WHERE a IN (SELECT MAX(c) FROM t2 WHERE c < 4) AND b=7 AND (a IS NULL OR a=b); -SET optimizer_switch=@save_optimizer_switch; +SET optimizer_switch=@local_optimizer_switch; DROP TABLE t1,t2; @@ -1617,8 +1618,7 @@ INSERT INTO t2 VALUES (4,2,'v','v'), (6,1,'v','v'), (0,5,'x','x'), (7,1,'x','x'), (7,3,'i','i'), (7,1,'e','e'), (1,4,'p','p'), (1,2,'j','j'); -SET @save_optimizer_switch=@@optimizer_switch; -SET @save_join_cache_level=@@join_cache_level; +SET @local_optimizer_switch=@@optimizer_switch; SET join_cache_level=2; EXPLAIN @@ -1639,7 +1639,7 @@ SELECT a, c FROM t1, t2 WHERE (a, c) IN (SELECT s1.b, s1.c FROM t2 AS s1, t2 AS s2 WHERE s2.d = s1.e AND s1.e = (SELECT MAX(e) FROM t2)); -SET optimizer_switch=@save_optimizer_switch; +SET optimizer_switch=@local_optimizer_switch; SET join_cache_level=@save_join_cache_level; DROP TABLE t1,t2; @@ -1699,7 +1699,7 @@ delete t2 from t2 where a_id in (select * from (select t1.id from t1 limit 2) as drop table t1,t2; --echo # This must be at the end: -set optimizer_switch=@subselect_sj_mat_tmp; +set optimizer_switch=@save_optimizer_switch; set join_cache_level=@save_join_cache_level; --echo # @@ -1709,7 +1709,7 @@ set join_cache_level=@save_join_cache_level; --echo # -SET @save_optimizer_switch=@@optimizer_switch; +SET @local_optimizer_switch=@@optimizer_switch; SET optimizer_switch = 'materialization=on,semijoin=on'; CREATE TABLE t1 (pk INT, a INT, b INT, PRIMARY KEY(pk)) ENGINE=MyISAM; @@ -1717,7 +1717,7 @@ INSERT INTO t1 VALUES (1,3,5),(2,4,6); SELECT * FROM t1 WHERE 8 IN ( SELECT MIN(pk) FROM t1 ) AND ( pk = a OR pk = b ); drop table t1; -SET optimizer_switch=@save_optimizer_switch; +SET optimizer_switch=@local_optimizer_switch; --echo # --echo # MDEV-5011: ERROR Plugin 'MEMORY' has ref_count=1 after shutdown for SJM queries @@ -1871,7 +1871,7 @@ SELECT sq1.f2 FROM t1 AS sq1 WHERE EXISTS ( SELECT * FROM t1 AS sq2 WHERE sq1.`pk` IN ( SELECT f1 FROM t1 ) AND sq2.f1 = sq1.f1 ); -set @save_optimizer_switch= @@optimizer_switch; +set @local_optimizer_switch= @@optimizer_switch; set optimizer_switch='exists_to_in=off'; EXPLAIN @@ -1885,7 +1885,7 @@ SELECT sq1.f2 FROM t1 AS sq1 WHERE EXISTS ( SELECT * FROM t1 AS sq2 WHERE sq1.`pk` IN ( SELECT f1 FROM t1 ) AND sq2.f1 = sq1.f1 ); -set optimizer_switch= @save_optimizer_switch; +set optimizer_switch= @local_optimizer_switch; DROP TABLE t1; @@ -1902,7 +1902,7 @@ INSERT INTO t2 VALUES (8),(7),(1); CREATE TABLE t3 (f3 INT, i3 INT, KEY(i3)) ENGINE=MyISAM; INSERT INTO t3 VALUES (8,0),(6,3),(2,8),(3,8),(1,6),(0,0),(1,0),(1,5); -set @save_optimizer_switch= @@optimizer_switch; +set @local_optimizer_switch= @@optimizer_switch; set optimizer_switch='exists_to_in=off'; SELECT * FROM t1 @@ -1919,7 +1919,7 @@ SELECT * FROM t1 WHERE EXISTS ( SELECT * FROM t2, t3 WHERE i3 = i2 AND f1 IN ( SELECT f3 FROM t3 ) ); -set optimizer_switch= @save_optimizer_switch; +set optimizer_switch= @local_optimizer_switch; DROP TABLE t1,t2,t3; @@ -1944,11 +1944,11 @@ SELECT pk, f1, ( SELECT COUNT(*) FROM t2 WHERE t1.pk IN ( SELECT f2 FROM t2 ) ) AS sq FROM t1; --echo # this checks the result set above -set @save_optimizer_switch= @@optimizer_switch; +set @local_optimizer_switch= @@optimizer_switch; set optimizer_switch= 'materialization=off,semijoin=off'; SELECT pk, f1, ( SELECT COUNT(*) FROM t2 WHERE t1.pk IN ( SELECT f2 FROM t2 ) ) AS sq FROM t1; -set optimizer_switch= @save_optimizer_switch; +set optimizer_switch= @local_optimizer_switch; DROP TABLE t1,t2; @@ -1956,7 +1956,7 @@ DROP TABLE t1,t2; --echo # mdev-12838: scan of materialized of semi-join subquery in join --echo # -set @save_optimizer_switch=@@optimizer_switch; +set @local_optimizer_switch=@@optimizer_switch; CREATE TABLE t1 ( dispatch_group varchar(32), @@ -2157,7 +2157,7 @@ eval explain $q; eval $q; DROP TABLE t1,t2,t3; -set optimizer_switch=@save_optimizer_switch; +set optimizer_switch=@local_optimizer_switch; --echo # --echo # MDEV-16751: Server crashes in st_join_table::cleanup or @@ -2214,7 +2214,7 @@ CALL prepare_data(); SELECT t2.a FROM t2 WHERE t2.b IN (SELECT t3.b FROM t3 WHERE t3.c= 27); -set @save_optimizer_switch= @@optimizer_switch; +set @local_optimizer_switch= @@optimizer_switch; SET optimizer_switch='materialization=off'; SELECT t1.a FROM t1 @@ -2226,7 +2226,7 @@ SELECT t1.a FROM t1 WHERE t1.a IN (SELECT t2.a FROM t2 WHERE t2.b IN (SELECT t3.b FROM t3 WHERE t3.c= 27)) LIMIT 5; drop procedure prepare_data; -set @@optimizer_switch= @save_optimizer_switch; +set @@optimizer_switch= @local_optimizer_switch; drop table t1,t2,t3; CREATE TABLE t1 ( id int NOT NULL, key(id)); diff --git a/mysql-test/t/subselect_sj_nonmerged.test b/mysql-test/t/subselect_sj_nonmerged.test index e47e72ffe97..689e922ad24 100644 --- a/mysql-test/t/subselect_sj_nonmerged.test +++ b/mysql-test/t/subselect_sj_nonmerged.test @@ -1,6 +1,8 @@ # # Tests for non-merged semi-joins # +--source include/default_optimizer_switch.inc + --disable_warnings drop table if exists t0, t1, t2, t3, t4; --enable_warnings diff --git a/mysql-test/t/table_options-5867.opt b/mysql-test/t/table_options-5867.opt new file mode 100644 index 00000000000..8374626febe --- /dev/null +++ b/mysql-test/t/table_options-5867.opt @@ -0,0 +1 @@ +--plugin-maturity=unknown diff --git a/mysql-test/t/trigger-compat.test b/mysql-test/t/trigger-compat.test index 437df89b4b1..baf3cad11d6 100644 --- a/mysql-test/t/trigger-compat.test +++ b/mysql-test/t/trigger-compat.test @@ -2,7 +2,8 @@ # supported in embedded server. So, this test should not be run on embedded # server. --- source include/not_embedded.inc +--source include/not_embedded.inc +--source include/default_charset.inc ########################################################################### # diff --git a/mysql-test/t/trigger.test b/mysql-test/t/trigger.test index a4beeaf9161..78ee212d848 100644 --- a/mysql-test/t/trigger.test +++ b/mysql-test/t/trigger.test @@ -1,6 +1,6 @@ # This test uses chmod, can't be run with root permissions -- source include/not_as_root.inc - +--source include/default_charset.inc # # Basic triggers test diff --git a/mysql-test/t/trigger_notembedded.test b/mysql-test/t/trigger_notembedded.test index a31594826e7..1e9e31c0692 100644 --- a/mysql-test/t/trigger_notembedded.test +++ b/mysql-test/t/trigger_notembedded.test @@ -2,7 +2,8 @@ # supported in embedded server. So, this test should not be run on embedded # server. --- source include/not_embedded.inc +--source include/not_embedded.inc +--source include/default_charset.inc ########################################################################### # diff --git a/mysql-test/t/truncate-stale-6500.test b/mysql-test/t/truncate-stale-6500.test index 47dffb1966d..95dc293bff9 100644 --- a/mysql-test/t/truncate-stale-6500.test +++ b/mysql-test/t/truncate-stale-6500.test @@ -1,6 +1,7 @@ --source include/have_innodb.inc --source include/have_partition.inc +set @save_query_cache_size=@@query_cache_size; SET GLOBAL query_cache_size=1024*1024*8; CREATE TABLE `test` ( `uniqueId` INT NOT NULL, @@ -29,4 +30,4 @@ SELECT SQL_CACHE * FROM `test`; SELECT SQL_NO_CACHE * FROM `test`; DROP TABLE test; -SET GLOBAL query_cache_size=DEFAULT; +SET GLOBAL query_cache_size=@save_query_cache_size; diff --git a/mysql-test/t/truncate_badse.opt b/mysql-test/t/truncate_badse.opt new file mode 100644 index 00000000000..8374626febe --- /dev/null +++ b/mysql-test/t/truncate_badse.opt @@ -0,0 +1 @@ +--plugin-maturity=unknown diff --git a/mysql-test/t/type_time_6065.test b/mysql-test/t/type_time_6065.test index fc91c530760..274d5db50b9 100644 --- a/mysql-test/t/type_time_6065.test +++ b/mysql-test/t/type_time_6065.test @@ -1,3 +1,5 @@ +--source include/default_optimizer_switch.inc + # # MDEV-6065 MySQL Bug#13623473 "MISSING ROWS ON SELECT AND JOIN WITH TIME/DATETIME COMPARE" # diff --git a/mysql-test/t/type_varchar.opt b/mysql-test/t/type_varchar.opt new file mode 100644 index 00000000000..35db081c15b --- /dev/null +++ b/mysql-test/t/type_varchar.opt @@ -0,0 +1 @@ +--character-set-server=latin1 --collation_server=latin1_swedish_ci diff --git a/mysql-test/t/udf_query_cache.test b/mysql-test/t/udf_query_cache.test index b0037973631..99cbffb1aae 100644 --- a/mysql-test/t/udf_query_cache.test +++ b/mysql-test/t/udf_query_cache.test @@ -18,6 +18,7 @@ drop table if exists t1; eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_SO"; create table t1 (a char); +set @save_query_cache_size=@@query_cache_size; set GLOBAL query_cache_size=1355776; reset query cache; flush status; @@ -32,5 +33,6 @@ show status like "Qcache_queries_in_cache"; drop table t1; drop function metaphon; -set GLOBAL query_cache_size=default; +set GLOBAL query_cache_size=@save_query_cache_size; + diff --git a/mysql-test/t/union.test b/mysql-test/t/union.test index 0fd78bdf40d..707bda6d81b 100644 --- a/mysql-test/t/union.test +++ b/mysql-test/t/union.test @@ -339,7 +339,12 @@ explain extended (select * from t1 where a=1) union (select * from t2 where a=1) (select * from t1 where a=5 and a=6) union (select * from t2 where a=1); (select t1.a,t1.b from t1,t2 where t1.a=5) union (select * from t2 where a=1); (select * from t1 where a=1) union (select t1.a,t2.a from t1,t2 where t1.a=t2.a); + +set @save_optimizer_use_condition_selectivity=@@optimizer_use_condition_selectivity,@save_optimizer_switch=@@optimizer_switch; +SET optimizer_switch='outer_join_with_cache=off',@@optimizer_use_condition_selectivity=1; explain (select * from t1 where a=1 and b=10) union (select straight_join t1.a,t2.a from t1,t2 where t1.a=t2.a); +set @@optimizer_use_condition_selectivity=@save_optimizer_use_condition_selectivity,@@optimizer_switch=@save_optimizer_switch; + explain (select * from t1 where a=1) union (select * from t1 where b=1); drop table t1,t2; create table t1 ( id int not null auto_increment, primary key (id) ,user_name text ); @@ -840,7 +845,7 @@ drop tables t1,t2,t3; # exceeds mediumtext maximum length # -SELECT @tmp_max:= @@global.max_allowed_packet; +SET @tmp_max= @@global.max_allowed_packet; SET @@global.max_allowed_packet=25000000; # switching connection to allow the new max_allowed_packet take effect --connect (newconn, localhost, root,,) diff --git a/mysql-test/t/upgrade.opt b/mysql-test/t/upgrade.opt new file mode 100644 index 00000000000..35db081c15b --- /dev/null +++ b/mysql-test/t/upgrade.opt @@ -0,0 +1 @@ +--character-set-server=latin1 --collation_server=latin1_swedish_ci diff --git a/mysql-test/t/upgrade.test b/mysql-test/t/upgrade.test index ab9330176f8..e7a3e4d8abf 100644 --- a/mysql-test/t/upgrade.test +++ b/mysql-test/t/upgrade.test @@ -1,5 +1,5 @@ call mtr.add_suppression("Invalid .old.. table or database name"); --- source include/not_embedded.inc +--source include/not_embedded.inc --disable_warnings drop database if exists `mysqltest1`; diff --git a/mysql-test/t/user_var-binlog.test b/mysql-test/t/user_var-binlog.test index 0098f237de9..3f48ebbf570 100644 --- a/mysql-test/t/user_var-binlog.test +++ b/mysql-test/t/user_var-binlog.test @@ -18,6 +18,7 @@ source include/show_binlog_events.inc; # escaped). let $MYSQLD_DATADIR= `select @@datadir`; flush logs; +--replace_regex /collation_server=\d+/collation_server=#/ --exec $MYSQL_BINLOG --short-form $MYSQLD_DATADIR/master-bin.000001 drop table t1; diff --git a/mysql-test/t/userstat-badlogin-4824.test b/mysql-test/t/userstat-badlogin-4824.test index 97370c1d081..78f2150e446 100644 --- a/mysql-test/t/userstat-badlogin-4824.test +++ b/mysql-test/t/userstat-badlogin-4824.test @@ -2,6 +2,7 @@ # MDEV-4824 userstats - wrong user statistics # --source include/not_embedded.inc +set @save_userstat=@@global.userstat; create user foo@localhost identified by 'foo'; flush user_statistics; @@ -30,4 +31,4 @@ connection default; select user, bytes_received from information_schema.user_statistics where user = 'foo'; drop user foo@localhost; -set global userstat=0; +set global userstat=@save_userstat; diff --git a/mysql-test/t/userstat.opt b/mysql-test/t/userstat.opt new file mode 100644 index 00000000000..45c618ea22e --- /dev/null +++ b/mysql-test/t/userstat.opt @@ -0,0 +1 @@ +--disable-userstat diff --git a/mysql-test/t/variables-master.opt b/mysql-test/t/variables-master.opt index e4b213a0323..1049117752d 100644 --- a/mysql-test/t/variables-master.opt +++ b/mysql-test/t/variables-master.opt @@ -1 +1 @@ ---max-user-connections=1 +--max-user-connections=1 --myisam_recover_options=BACKUP,QUICK diff --git a/mysql-test/t/variables-notembedded.test b/mysql-test/t/variables-notembedded.test index 2aa77e1e254..7a1489cf392 100644 --- a/mysql-test/t/variables-notembedded.test +++ b/mysql-test/t/variables-notembedded.test @@ -48,9 +48,12 @@ SET @@session.log_slave_updates= true; SET @@global.log_slave_updates= true; # --echo # +let $relay_prefix=`select concat(substring_index(@@relay_log,"-",1),"-")`; +--replace_result $relay_prefix XXX- SHOW VARIABLES like 'relay_log'; --error ER_INCORRECT_GLOBAL_LOCAL_VAR SELECT @@session.relay_log; +--replace_result $relay_prefix XXX- SELECT @@global.relay_log; --error ER_INCORRECT_GLOBAL_LOCAL_VAR SET @@session.relay_log= 'x'; @@ -58,11 +61,11 @@ SET @@session.relay_log= 'x'; SET @@global.relay_log= 'x'; # --echo # ---replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR $relay_prefix XXX- SHOW VARIABLES like 'relay_log_basename'; --error ER_INCORRECT_GLOBAL_LOCAL_VAR SELECT @@session.relay_log_basename; ---replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR $relay_prefix XXX- SELECT @@global.relay_log_basename; --error ER_INCORRECT_GLOBAL_LOCAL_VAR SET @@session.relay_log_basename= 'x'; @@ -70,9 +73,11 @@ SET @@session.relay_log_basename= 'x'; SET @@global.relay_log_basename= 'x'; # --echo # +--replace_result $relay_prefix XXX- SHOW VARIABLES like 'log_bin_basename'; --error ER_INCORRECT_GLOBAL_LOCAL_VAR SELECT @@session.log_bin_basename; +--replace_result $relay_prefix XXX- SELECT @@global.log_bin_basename; --error ER_INCORRECT_GLOBAL_LOCAL_VAR SET @@session.log_bin_basename= 'x'; @@ -80,11 +85,11 @@ SET @@session.log_bin_basename= 'x'; SET @@global.log_bin_basename= 'x'; # --echo # ---replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR $relay_prefix XXX- SHOW VARIABLES like 'relay_log_index'; --error ER_INCORRECT_GLOBAL_LOCAL_VAR SELECT @@session.relay_log_index; ---replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR $relay_prefix XXX- SELECT @@global.relay_log_index; --error ER_INCORRECT_GLOBAL_LOCAL_VAR SET @@session.relay_log_index= 'x'; @@ -92,9 +97,11 @@ SET @@session.relay_log_index= 'x'; SET @@global.relay_log_index= 'x'; # --echo # +--replace_result $relay_prefix XXX- SHOW VARIABLES like 'log_bin_index'; --error ER_INCORRECT_GLOBAL_LOCAL_VAR SELECT @@session.log_bin_index; +--replace_result $relay_prefix XXX- SELECT @@global.log_bin_index; --error ER_INCORRECT_GLOBAL_LOCAL_VAR SET @@session.log_bin_index= 'x'; @@ -151,6 +158,7 @@ SET @@global.slave_skip_errors= 7; CREATE TABLE t1 (a MEDIUMTEXT); +set @save_max_allowed_packet=@@global.max_allowed_packet, @save_net_buffer_length=@@net_buffer_length; SET GLOBAL max_allowed_packet=2048; SET GLOBAL net_buffer_length=4096; CONNECT (con1,localhost,root,,test); @@ -170,8 +178,8 @@ CONNECTION default; DISCONNECT con1; SELECT LENGTH(a) FROM t1; -SET GLOBAL max_allowed_packet=default; -SET GLOBAL net_buffer_length=default; +SET GLOBAL max_allowed_packet=@save_max_allowed_packet; +SET GLOBAL net_buffer_length=@save_net_buffer_length; DROP TABLE t1; --echo End of 5.1 tests diff --git a/mysql-test/t/variables.test b/mysql-test/t/variables.test index fc8dc89373b..88f600f879d 100644 --- a/mysql-test/t/variables.test +++ b/mysql-test/t/variables.test @@ -36,7 +36,9 @@ set @my_thread_cache_size =@@global.thread_cache_size; set @my_max_allowed_packet =@@global.max_allowed_packet; set @my_delay_key_write =@@global.delay_key_write; set @my_join_buffer_size =@@global.join_buffer_size; -set @my_log_warnings =@@global.log_warnings; +set @my_log_warnings =@@global.log_warnings; +set @my_local_infile =@@global.local_infile; + # case insensitivity tests (new in 5.0) set @`test`=1; select @test, @`test`, @TEST, @`TEST`, @"teSt"; @@ -314,7 +316,6 @@ set max_heap_table_size=100; set max_join_size=100; set max_sort_length=100; set global max_user_connections=100; -select @@max_user_connections; set global max_write_lock_count=100; set myisam_sort_buffer_size=100; set global net_buffer_length=100; @@ -423,6 +424,10 @@ set global myisam_max_sort_file_size=default; # # swap # + +# set some variables to play with +set @@global.max_user_connections=10, @@local.max_join_size=1000; + select @@global.max_user_connections,@@local.max_join_size; set @svc=@@global.max_user_connections, @svj=@@local.max_join_size; select @@global.max_user_connections,@@local.max_join_size; @@ -435,6 +440,7 @@ select @@global.max_user_connections,@@local.max_join_size; set @a=1, @b=2; set @a=@b, @b=@a; select @a, @b; +set @@global.max_user_connections=@my_max_user_connections; # # Bug#2586:Disallow global/session/local as structured var. instance names @@ -814,12 +820,13 @@ set global net_write_timeout =@my_net_write_timeout; set global net_read_timeout =@my_net_read_timeout; set global server_id =@my_server_id; set global slow_launch_time =@my_slow_launch_time; -set global default_storage_engine =@my_storage_engine; +set global default_storage_engine =@my_storage_engine; set global thread_cache_size =@my_thread_cache_size; -set global max_allowed_packet = default; +set global max_allowed_packet =@my_max_allowed_packet; set global delay_key_write =@my_delay_key_write; set global join_buffer_size =@my_join_buffer_size; set global log_warnings =@my_log_warnings; +set global local_infile =@my_local_infile; # # Bug#28580 Repeatation of status variables @@ -891,10 +898,11 @@ SET @@global.ft_stopword_file= 'x'; # Additional variables fixed. # --echo # +--replace_column 2 # SHOW VARIABLES like 'back_log'; --error ER_INCORRECT_GLOBAL_LOCAL_VAR SELECT @@session.back_log; -SELECT @@global.back_log; +SELECT @@global.back_log > 0; --error ER_INCORRECT_GLOBAL_LOCAL_VAR SET @@session.back_log= 7; --error ER_INCORRECT_GLOBAL_LOCAL_VAR @@ -1208,7 +1216,8 @@ SET GLOBAL max_binlog_cache_size = @old_max_binlog_cache_size; --echo # Bug #37168 : Missing variable - skip_name_resolve --echo # -SELECT @@skip_name_resolve; +SELECT @@skip_name_resolve >= 0; +--replace_column 2 # SHOW VARIABLES LIKE 'skip_name_resolve'; --echo # @@ -1258,7 +1267,7 @@ SET @@global.key_cache_block_size=@kcbs; # # Bug#56976: added new start-up parameter # -select @@max_long_data_size; +select @@max_long_data_size > 0; --echo # --echo # Bug#11766424 59527: diff --git a/mysql-test/t/view.test b/mysql-test/t/view.test index 51c05ced40c..d4e5fdd7a46 100644 --- a/mysql-test/t/view.test +++ b/mysql-test/t/view.test @@ -1,8 +1,8 @@ --source include/have_partition.inc # Save the initial number of concurrent sessions. --source include/count_sessions.inc +--source include/default_optimizer_switch.inc -SET @save_optimizer_switch=@@optimizer_switch; SET optimizer_switch='outer_join_with_cache=off'; # @@ -3724,12 +3724,12 @@ SELECT * FROM v1; CREATE VIEW v2 AS SELECT t1.a FROM t1, v1 AS a; REPLACE INTO v2(a) SELECT 1 FROM t1,t1 AS c; -SELECT * FROM v2; +SELECT * FROM v2 order by 1; REPLACE INTO v2(a) SELECT 3 FROM t1,t1 AS c; -SELECT * FROM v2; +SELECT * FROM v2 order by 1; INSERT INTO v2(a) SELECT 1 FROM t1,t1 AS c ON DUPLICATE KEY UPDATE `v2`.`a`= 1; -SELECT * FROM v2; +SELECT * FROM v2 order by 1; DROP VIEW v1; DROP VIEW v2; diff --git a/mysql-test/t/xtradb_mrr.test b/mysql-test/t/xtradb_mrr.test index 3e84668955a..8dccd20796f 100644 --- a/mysql-test/t/xtradb_mrr.test +++ b/mysql-test/t/xtradb_mrr.test @@ -284,6 +284,7 @@ drop table t1; --echo # --echo # BUG#671340: Diverging results in with mrr_sort_keys=ON|OFF and join_cache_level=5 --echo # + CREATE TABLE t1 ( pk int(11) NOT NULL AUTO_INCREMENT, col_int_key int(11) NOT NULL, @@ -346,6 +347,7 @@ INSERT INTO t2 VALUES (19,5,'h','h'), (20,7,'w','w'); +--source include/default_optimizer_switch.inc SELECT count(*), sum(table1.col_int_key*table2.pk) FROM t2 AS table1, t1 AS table2, t2 AS table3 @@ -366,6 +368,7 @@ WHERE drop table t1,t2; set join_cache_level=@my_save_join_cache_level; set join_buffer_size=@my_save_join_buffer_size; +set optimizer_switch=@save_optimizer_switch; --echo # |