diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2019-04-25 16:05:20 +0300 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2019-04-25 16:05:20 +0300 |
commit | e6bdf77e4be48750c4808a09af197ed91fd69a61 (patch) | |
tree | 2ca921747b9ae7b01835efe9609799b27efb1387 /mysql-test | |
parent | 1599825ffc2c942f8b63274a9556b425229375c7 (diff) | |
parent | acf6f92aa936fbfe7524617ae57d011ab8f1f96d (diff) | |
download | mariadb-git-e6bdf77e4be48750c4808a09af197ed91fd69a61.tar.gz |
Merge 10.3 into 10.4
In is_eits_usable(), we disable an assertion that fails due to
MDEV-19334.
Diffstat (limited to 'mysql-test')
46 files changed, 1507 insertions, 38 deletions
diff --git a/mysql-test/main/ctype_utf8.result b/mysql-test/main/ctype_utf8.result index 6f336d2fcfb..5f66e60bc65 100644 --- a/mysql-test/main/ctype_utf8.result +++ b/mysql-test/main/ctype_utf8.result @@ -11300,5 +11300,73 @@ t1 CREATE TABLE `t1` ( DROP TABLE t1; SET sql_mode=DEFAULT; # +# MDEV-19239 ERROR 1300 (HY000): Invalid utf8 character string in 10.3.13-MariaDB +# +SET NAMES utf8; +SELECT +x.消息ID, +x.消息TITLE, +x.消息类型, +x.发送时间, +x.阅读时间,x.老师ID, +IF(x.四天内最近一次登录时间='2100-01-01 00:00:00','',x.四天内最近一次登录时间) 四天内最近一次登录时间 +FROM ( +SELECT +msg.*, +CASE +WHEN login.login_time BETWEEN msg.发送时间 AND DATE_ADD(msg.发送时间,INTERVAL 4 DAY) +THEN login.login_time +WHEN (login.login_time NOT BETWEEN msg.发送时间 AND DATE_ADD(msg.发送时间,INTERVAL 4 DAY)) AND login.login_time>0 +THEN '2100-01-01 00:00:00' ELSE '' + END 四天内最近一次登录时间 +FROM ( +SELECT +me.id 消息ID, +me.title 消息TITLE, +CASE +WHEN me.type=1 +THEN 'Interview Message' + WHEN me.type=2 +THEN 'Orientation Message' + WHEN me.type=3 +THEN 'Warning Message' + WHEN me.type=4 +THEN 'Fail Message' + WHEN me.type=5 +THEN 'FM Message' + WHEN me.type=6 +THEN 'Training Message' + WHEN me.type=7 +THEN 'TUrgent Message' + END 消息类型, +FROM_UNIXTIME(me.sending_time) 发送时间, +IF(tar.is_read=1,FROM_UNIXTIME(tar.read_time),'') 阅读时间, +tar.tid 老师ID +FROM ebk_message me +LEFT JOIN ebk_message_target tar +ON me.id=tar.msg_id +WHERE +FROM_UNIXTIME(me.sending_time,'%Y-%m-%d') BETWEEN 'start' AND 'end' AND me.status=1 AND tar.tid>0 +GROUP BY +tar.tid, +me.sending_time,me.id) msg +LEFT JOIN ( +SELECT tid,FROM_UNIXTIME(login_time) login_time +FROM ebk_teacher_login_log +WHERE FROM_UNIXTIME(login_time,'%Y-%m-%d') BETWEEN 'start' AND DATE_ADD('end',INTERVAL 4 DAY) +ORDER BY tid,FROM_UNIXTIME(login_time)) login +ON +msg.老师ID=login.tid +ORDER BY msg.消息ID,msg.发送时间,msg.老师ID,login_time) x +GROUP BY x.消息ID,x.发送时间,x.老师ID; +ERROR 42S02: Table 'test.ebk_message' doesn't exist +SET NAMES utf8; +CREATE TABLE t1 (x INT); +INSERT INTO t1 VALUES (1); +SELECT x AS 5天内最近一次登录时间 FROM t1; +5天内最近一次登录时间 +1 +DROP TABLE t1; +# # End of 10.3 tests # diff --git a/mysql-test/main/ctype_utf8.test b/mysql-test/main/ctype_utf8.test index 6f8657dacb5..ab26b69d765 100644 --- a/mysql-test/main/ctype_utf8.test +++ b/mysql-test/main/ctype_utf8.test @@ -2181,5 +2181,80 @@ SET sql_mode=DEFAULT; --echo # +--echo # MDEV-19239 ERROR 1300 (HY000): Invalid utf8 character string in 10.3.13-MariaDB +--echo # + +# +# Test that the following query does not fail on "Invalid utf8 character string" +# + +SET NAMES utf8; +--error ER_NO_SUCH_TABLE +SELECT + x.消息ID, + x.消息TITLE, + x.消息类型, + x.发送时间, + x.阅读时间,x.老师ID, + IF(x.四天内最近一次登录时间='2100-01-01 00:00:00','',x.四天内最近一次登录时间) 四天内最近一次登录时间 +FROM ( + SELECT + msg.*, + CASE + WHEN login.login_time BETWEEN msg.发送时间 AND DATE_ADD(msg.发送时间,INTERVAL 4 DAY) + THEN login.login_time + WHEN (login.login_time NOT BETWEEN msg.发送时间 AND DATE_ADD(msg.发送时间,INTERVAL 4 DAY)) AND login.login_time>0 + THEN '2100-01-01 00:00:00' ELSE '' + END 四天内最近一次登录时间 + FROM ( + SELECT + me.id 消息ID, + me.title 消息TITLE, + CASE + WHEN me.type=1 + THEN 'Interview Message' + WHEN me.type=2 + THEN 'Orientation Message' + WHEN me.type=3 + THEN 'Warning Message' + WHEN me.type=4 + THEN 'Fail Message' + WHEN me.type=5 + THEN 'FM Message' + WHEN me.type=6 + THEN 'Training Message' + WHEN me.type=7 + THEN 'TUrgent Message' + END 消息类型, + FROM_UNIXTIME(me.sending_time) 发送时间, + IF(tar.is_read=1,FROM_UNIXTIME(tar.read_time),'') 阅读时间, + tar.tid 老师ID + FROM ebk_message me + LEFT JOIN ebk_message_target tar + ON me.id=tar.msg_id + WHERE + FROM_UNIXTIME(me.sending_time,'%Y-%m-%d') BETWEEN 'start' AND 'end' AND me.status=1 AND tar.tid>0 + GROUP BY + tar.tid, + me.sending_time,me.id) msg + LEFT JOIN ( + SELECT tid,FROM_UNIXTIME(login_time) login_time + FROM ebk_teacher_login_log + WHERE FROM_UNIXTIME(login_time,'%Y-%m-%d') BETWEEN 'start' AND DATE_ADD('end',INTERVAL 4 DAY) + ORDER BY tid,FROM_UNIXTIME(login_time)) login + ON + msg.老师ID=login.tid + ORDER BY msg.消息ID,msg.发送时间,msg.老师ID,login_time) x + GROUP BY x.消息ID,x.发送时间,x.老师ID; + + +SET NAMES utf8; +CREATE TABLE t1 (x INT); +INSERT INTO t1 VALUES (1); +SELECT x AS 5天内最近一次登录时间 FROM t1; +DROP TABLE t1; + + +--echo # --echo # End of 10.3 tests --echo # diff --git a/mysql-test/main/func_hybrid_type.result b/mysql-test/main/func_hybrid_type.result index 129d49776a8..91f3949d456 100644 --- a/mysql-test/main/func_hybrid_type.result +++ b/mysql-test/main/func_hybrid_type.result @@ -3771,10 +3771,121 @@ t2 CREATE TABLE `t2` ( DROP TABLE t1, t2; SET sql_mode=DEFAULT; # -# End of 10.3 tests +# MDEV-17325 NULL-ability problems with LEAST() in combination with NO_ZERO_DATE and NO_ZERO_IN_DATE # +SET sql_mode='NO_ZERO_DATE,NO_ZERO_IN_DATE'; +SELECT +LEAST('0000-00-00',DATE'2001-01-01') AS s1, +LEAST('0001-00-01',DATE'2001-01-01') AS s2, +LEAST('0000-00-00',TIMESTAMP'2001-01-01 00:00:00') AS s3, +LEAST('0001-00-01',TIMESTAMP'2001-01-01 00:00:00') AS s4, +LEAST(0,DATE'2001-01-01') AS i1, +LEAST(20010001,DATE'2001-01-01') AS i2, +LEAST(0,TIMESTAMP'2001-01-01 00:00:00') AS i3, +LEAST(20010001,TIMESTAMP'2001-01-01 00:00:00') AS i4; +Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr +def s1 10 10 0 Y 128 0 63 +def s2 10 10 0 Y 128 0 63 +def s3 12 26 0 Y 128 0 63 +def s4 12 26 0 Y 128 0 63 +def i1 10 10 0 Y 128 0 63 +def i2 10 10 0 Y 128 0 63 +def i3 12 19 0 Y 128 0 63 +def i4 12 19 0 Y 128 0 63 +s1 s2 s3 s4 i1 i2 i3 i4 +NULL NULL NULL NULL NULL NULL NULL NULL +Warnings: +Warning 1292 Incorrect datetime value: '0000-00-00' +Warning 1292 Incorrect datetime value: '0001-00-01' +Warning 1292 Incorrect datetime value: '0000-00-00 00:00:00' +Warning 1292 Incorrect datetime value: '0001-00-01 00:00:00' +Warning 1292 Incorrect datetime value: '0000-00-00' +Warning 1292 Incorrect datetime value: '2001-00-01' +Warning 1292 Incorrect datetime value: '0000-00-00 00:00:00' +Warning 1292 Incorrect datetime value: '2001-00-01 00:00:00' +SET sql_mode='NO_ZERO_DATE,NO_ZERO_IN_DATE'; +CREATE TABLE t1 AS SELECT +LEAST('0000-00-00',DATE'2001-01-01') AS s1, +LEAST('0001-00-01',DATE'2001-01-01') AS s2, +LEAST('0000-00-00',TIMESTAMP'2001-01-01 00:00:00') AS s3, +LEAST('0001-00-01',TIMESTAMP'2001-01-01 00:00:00') AS s4, +LEAST(0,DATE'2001-01-01') AS i1, +LEAST(20010001,DATE'2001-01-01') AS i2, +LEAST(0,TIMESTAMP'2001-01-01 00:00:00') AS i3, +LEAST(20010001,TIMESTAMP'2001-01-01 00:00:00') AS i4; +Warnings: +Warning 1292 Incorrect datetime value: '0000-00-00' +Warning 1292 Incorrect datetime value: '0001-00-01' +Warning 1292 Incorrect datetime value: '0000-00-00 00:00:00' +Warning 1292 Incorrect datetime value: '0001-00-01 00:00:00' +Warning 1292 Incorrect datetime value: '0000-00-00' +Warning 1292 Incorrect datetime value: '2001-00-01' +Warning 1292 Incorrect datetime value: '0000-00-00 00:00:00' +Warning 1292 Incorrect datetime value: '2001-00-01 00:00:00' +SELECT * FROM t1; +s1 s2 s3 s4 i1 i2 i3 i4 +NULL NULL NULL NULL NULL NULL NULL NULL +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `s1` date DEFAULT NULL, + `s2` date DEFAULT NULL, + `s3` datetime DEFAULT NULL, + `s4` datetime DEFAULT NULL, + `i1` date DEFAULT NULL, + `i2` date DEFAULT NULL, + `i3` datetime DEFAULT NULL, + `i4` datetime DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +DROP TABLE t1; +SET timestamp=UNIX_TIMESTAMP('2001-01-01 10:20:30'); +CREATE TABLE t1 AS SELECT LEAST(CURRENT_DATE,CURRENT_TIME) AS c1; +SELECT * FROM t1; +c1 +2001-01-01 00:00:00 +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `c1` datetime NOT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +DROP TABLE t1; +SET old_mode=ZERO_DATE_TIME_CAST; +CREATE TABLE t1 AS SELECT LEAST(CURRENT_DATE,CURRENT_TIME) AS c1; +Warnings: +Warning 1292 Incorrect datetime value: '0000-00-00 10:20:30' +SELECT * FROM t1; +c1 +NULL +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `c1` datetime DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +DROP TABLE t1; +SET old_mode=DEFAULT; +SET timestamp=DEFAULT; +SET sql_mode=DEFAULT; +SET sql_mode=''; +SELECT LEAST(999,TIME'10:20:30') AS c1; +c1 +NULL +Warnings: +Warning 1292 Incorrect time value: '999' +CREATE TABLE t1 AS SELECT LEAST(999,TIME'10:20:30') AS c1; +Warnings: +Warning 1292 Incorrect time value: '999' +SELECT * FROM t1; +c1 +NULL +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `c1` time DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +DROP TABLE t1; +SET sql_mode=DEFAULT; # -# Start of 10.4 tests +# End of 10.3 tests # # # MDEV-17325 NULL-ability problems with LEAST() in combination with NO_ZERO_DATE and NO_ZERO_IN_DATE diff --git a/mysql-test/main/func_hybrid_type.test b/mysql-test/main/func_hybrid_type.test index 5281d846584..020f4ce93bd 100644 --- a/mysql-test/main/func_hybrid_type.test +++ b/mysql-test/main/func_hybrid_type.test @@ -628,11 +628,70 @@ SET sql_mode=DEFAULT; --echo # ---echo # End of 10.3 tests +--echo # MDEV-17325 NULL-ability problems with LEAST() in combination with NO_ZERO_DATE and NO_ZERO_IN_DATE --echo # +SET sql_mode='NO_ZERO_DATE,NO_ZERO_IN_DATE'; + +--disable_ps_protocol +--enable_metadata +SELECT + LEAST('0000-00-00',DATE'2001-01-01') AS s1, + LEAST('0001-00-01',DATE'2001-01-01') AS s2, + LEAST('0000-00-00',TIMESTAMP'2001-01-01 00:00:00') AS s3, + LEAST('0001-00-01',TIMESTAMP'2001-01-01 00:00:00') AS s4, + LEAST(0,DATE'2001-01-01') AS i1, + LEAST(20010001,DATE'2001-01-01') AS i2, + LEAST(0,TIMESTAMP'2001-01-01 00:00:00') AS i3, + LEAST(20010001,TIMESTAMP'2001-01-01 00:00:00') AS i4; +--disable_metadata +--enable_ps_protocol + +SET sql_mode='NO_ZERO_DATE,NO_ZERO_IN_DATE'; +CREATE TABLE t1 AS SELECT + LEAST('0000-00-00',DATE'2001-01-01') AS s1, + LEAST('0001-00-01',DATE'2001-01-01') AS s2, + LEAST('0000-00-00',TIMESTAMP'2001-01-01 00:00:00') AS s3, + LEAST('0001-00-01',TIMESTAMP'2001-01-01 00:00:00') AS s4, + LEAST(0,DATE'2001-01-01') AS i1, + LEAST(20010001,DATE'2001-01-01') AS i2, + LEAST(0,TIMESTAMP'2001-01-01 00:00:00') AS i3, + LEAST(20010001,TIMESTAMP'2001-01-01 00:00:00') AS i4; +SELECT * FROM t1; +SHOW CREATE TABLE t1; +DROP TABLE t1; + +SET timestamp=UNIX_TIMESTAMP('2001-01-01 10:20:30'); + +# A TIME always converts to a non-NULL DATETIME with the new CAST style +# Expect a NOT NULL column +CREATE TABLE t1 AS SELECT LEAST(CURRENT_DATE,CURRENT_TIME) AS c1; +SELECT * FROM t1; +SHOW CREATE TABLE t1; +DROP TABLE t1; + +# A TIME can convert to a NULL DATETIME with old CAST style +# Expect a NULL-able column +SET old_mode=ZERO_DATE_TIME_CAST; +CREATE TABLE t1 AS SELECT LEAST(CURRENT_DATE,CURRENT_TIME) AS c1; +SELECT * FROM t1; +SHOW CREATE TABLE t1; +DROP TABLE t1; +SET old_mode=DEFAULT; +SET timestamp=DEFAULT; + +SET sql_mode=DEFAULT; + +SET sql_mode=''; +SELECT LEAST(999,TIME'10:20:30') AS c1; +CREATE TABLE t1 AS SELECT LEAST(999,TIME'10:20:30') AS c1; +SELECT * FROM t1; +SHOW CREATE TABLE t1; +DROP TABLE t1; +SET sql_mode=DEFAULT; + --echo # ---echo # Start of 10.4 tests +--echo # End of 10.3 tests --echo # --echo # diff --git a/mysql-test/main/gis-precise.result b/mysql-test/main/gis-precise.result index 8382a94e358..4e4161c34ec 100644 --- a/mysql-test/main/gis-precise.result +++ b/mysql-test/main/gis-precise.result @@ -504,6 +504,10 @@ GEOMETRYFROMTEXT('POINT(4599 60359)'), ) as relate_res; relate_res 0 +prepare s from 'do st_convexhull(st_aswkb(multipoint(point(-11702,15179),point(-5031,27960),point(-30557,11158),point(-27804,30314))))'; +execute s; +execute s; +deallocate prepare s; with cte1 as( select (st_symdifference(point(1,1),point(1,1))) as a1 ), cte2 as(select 1 as a2) select 1 from cte1 where cte1.a1 < '1'; 1 1 diff --git a/mysql-test/main/gis-precise.test b/mysql-test/main/gis-precise.test index 0bb445924b8..24f4ac9113e 100644 --- a/mysql-test/main/gis-precise.test +++ b/mysql-test/main/gis-precise.test @@ -382,6 +382,12 @@ SELECT ST_RELATE( 'F*FFFF**F' ) as relate_res; +# MDEV-18920 Prepared statements with st_convexhull hang and eat 100% cpu. +prepare s from 'do st_convexhull(st_aswkb(multipoint(point(-11702,15179),point(-5031,27960),point(-30557,11158),point(-27804,30314))))'; +execute s; +execute s; +deallocate prepare s; + # MDEV- 16050 cte + geometry functions lead to crash. with cte1 as( select (st_symdifference(point(1,1),point(1,1))) as a1 ), cte2 as(select 1 as a2) select 1 from cte1 where cte1.a1 < '1'; diff --git a/mysql-test/main/myisam.result b/mysql-test/main/myisam.result index b4ad9121ea6..8c464f2f312 100644 --- a/mysql-test/main/myisam.result +++ b/mysql-test/main/myisam.result @@ -690,6 +690,8 @@ show index from t1; Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment t1 1 a 1 a A 10 NULL NULL YES BTREE set myisam_stats_method=nulls_equal; +set @save_use_stat_tables = @@use_stat_tables; +set @@use_stat_tables = COMPLEMENTARY; show variables like 'myisam_stats_method'; Variable_name Value myisam_stats_method NULLS_EQUAL @@ -709,7 +711,8 @@ Table Op Msg_type Msg_text test.t1 check status OK show index from t1; Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment -t1 1 a 1 a A 10 NULL NULL YES BTREE +t1 1 a 1 a A 5 NULL NULL YES BTREE +set @@use_stat_tables = @save_use_stat_tables; set myisam_stats_method=DEFAULT; show variables like 'myisam_stats_method'; Variable_name Value @@ -736,6 +739,8 @@ set myisam_stats_method=nulls_ignored; show variables like 'myisam_stats_method'; Variable_name Value myisam_stats_method NULLS_IGNORED +set @save_use_stat_tables = @@use_stat_tables; +set @@use_stat_tables = COMPLEMENTARY; create table t1 ( a char(3), b char(4), c char(5), d char(6), key(a,b,c,d) @@ -767,6 +772,7 @@ t1 1 a 3 c A 0 NULL NULL YES BTREE t1 1 a 4 d A 0 NULL NULL YES BTREE set myisam_stats_method=DEFAULT; drop table t1; +set @@use_stat_tables = @save_use_stat_tables; create table t1( cip INT NOT NULL, time TIME NOT NULL, diff --git a/mysql-test/main/myisam.test b/mysql-test/main/myisam.test index 63f5f6672f2..f58aee6795c 100644 --- a/mysql-test/main/myisam.test +++ b/mysql-test/main/myisam.test @@ -641,6 +641,9 @@ show index from t1; # Set nulls to be equal: set myisam_stats_method=nulls_equal; + +set @save_use_stat_tables = @@use_stat_tables; +set @@use_stat_tables = COMPLEMENTARY; show variables like 'myisam_stats_method'; insert into t1 values (11); delete from t1 where a=11; @@ -655,6 +658,7 @@ check table t1; show index from t1; # Set nulls back to be equal +set @@use_stat_tables = @save_use_stat_tables; set myisam_stats_method=DEFAULT; show variables like 'myisam_stats_method'; insert into t1 values (11); @@ -675,6 +679,9 @@ drop table t1; set myisam_stats_method=nulls_ignored; show variables like 'myisam_stats_method'; +set @save_use_stat_tables = @@use_stat_tables; +set @@use_stat_tables = COMPLEMENTARY; + create table t1 ( a char(3), b char(4), c char(5), d char(6), key(a,b,c,d) @@ -691,6 +698,7 @@ show index from t1; set myisam_stats_method=DEFAULT; drop table t1; +set @@use_stat_tables = @save_use_stat_tables; # BUG#13814 - key value packed incorrectly for TINYBLOBs diff --git a/mysql-test/main/myisam_explain_non_select_all.result b/mysql-test/main/myisam_explain_non_select_all.result index c3d3b67955c..e11438be48d 100644 --- a/mysql-test/main/myisam_explain_non_select_all.result +++ b/mysql-test/main/myisam_explain_non_select_all.result @@ -19,6 +19,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00 Using where # Status of EXPLAIN EXTENDED query Variable_name Value +Handler_read_key 2 FLUSH STATUS; FLUSH TABLES; EXPLAIN EXTENDED SELECT * FROM t1 WHERE a < 10; @@ -37,6 +38,7 @@ Handler_read_key 2 Handler_read_rnd_next 4 # Status of testing query execution: Variable_name Value +Handler_read_key 2 Handler_read_rnd_next 4 Handler_update 3 @@ -150,6 +152,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t2 ALL NULL NULL NULL NULL 3 100.00 # Status of EXPLAIN EXTENDED query Variable_name Value +Handler_read_key 4 FLUSH STATUS; FLUSH TABLES; EXPLAIN EXTENDED SELECT * FROM t1, t2 WHERE t1.a = 1; @@ -169,6 +172,7 @@ Handler_read_key 4 Handler_read_rnd_next 8 # Status of testing query execution: Variable_name Value +Handler_read_key 4 Handler_read_rnd_next 8 Handler_update 1 @@ -198,6 +202,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra 2 DERIVED t2 ALL NULL NULL NULL NULL 3 100.00 # Status of EXPLAIN EXTENDED query Variable_name Value +Handler_read_key 4 FLUSH STATUS; FLUSH TABLES; EXPLAIN EXTENDED SELECT * FROM t1 t11, (SELECT * FROM t2) t12 WHERE t11.a = 1; @@ -217,6 +222,7 @@ Handler_read_key 4 Handler_read_rnd_next 8 # Status of testing query execution: Variable_name Value +Handler_read_key 4 Handler_read_rnd_next 12 Handler_update 1 @@ -244,6 +250,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra 2 SUBQUERY t2 ALL NULL NULL NULL NULL 3 100.00 Using where # Status of EXPLAIN EXTENDED query Variable_name Value +Handler_read_key 4 Handler_read_rnd_next 1 FLUSH STATUS; FLUSH TABLES; @@ -265,6 +272,7 @@ Handler_read_key 5 Handler_read_rnd_next 8 # Status of testing query execution: Variable_name Value +Handler_read_key 4 Handler_read_rnd_next 5 Handler_update 3 @@ -294,6 +302,7 @@ Warnings: Note 1276 Field or reference 'test.t1.a' of SELECT #2 was resolved in SELECT #1 # Status of EXPLAIN EXTENDED query Variable_name Value +Handler_read_key 4 FLUSH STATUS; FLUSH TABLES; EXPLAIN EXTENDED SELECT * FROM t1 WHERE a IN (SELECT b FROM t2 WHERE t1.a < 3); @@ -314,6 +323,7 @@ Handler_read_key 4 Handler_read_rnd_next 8 # Status of testing query execution: Variable_name Value +Handler_read_key 4 Handler_read_rnd_next 7 Handler_update 2 @@ -345,6 +355,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra 2 MATERIALIZED t2 ALL NULL NULL NULL NULL 3 100.00 Using where # Status of EXPLAIN EXTENDED query Variable_name Value +Handler_read_key 4 FLUSH STATUS; FLUSH TABLES; EXPLAIN EXTENDED SELECT * FROM t1, t2 WHERE a IN (SELECT b FROM t2 WHERE t2.b < 3); @@ -366,7 +377,7 @@ Handler_read_key 7 Handler_read_rnd_next 12 # Status of testing query execution: Variable_name Value -Handler_read_key 3 +Handler_read_key 7 Handler_read_rnd_next 16 Handler_update 2 @@ -396,6 +407,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra 2 DERIVED t2 ALL NULL NULL NULL NULL 3 100.00 # Status of EXPLAIN EXTENDED query Variable_name Value +Handler_read_key 4 FLUSH STATUS; FLUSH TABLES; EXPLAIN EXTENDED SELECT * FROM t1 t11, (SELECT * FROM t2) t12; @@ -415,6 +427,7 @@ Handler_read_key 4 Handler_read_rnd_next 8 # Status of testing query execution: Variable_name Value +Handler_read_key 4 Handler_read_rnd 3 Handler_read_rnd_deleted 1 Handler_read_rnd_next 24 @@ -446,6 +459,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra 2 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used # Status of EXPLAIN EXTENDED query Variable_name Value +Handler_read_key 2 Handler_read_rnd_next 1 FLUSH STATUS; FLUSH TABLES; @@ -468,6 +482,7 @@ Handler_read_key 2 Handler_read_rnd_next 5 # Status of testing query execution: Variable_name Value +Handler_read_key 2 Handler_read_rnd 3 Handler_read_rnd_next 9 Handler_update 3 @@ -498,6 +513,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra 2 DERIVED t2 ALL NULL NULL NULL NULL 3 100.00 # Status of EXPLAIN EXTENDED query Variable_name Value +Handler_read_key 4 FLUSH STATUS; FLUSH TABLES; EXPLAIN EXTENDED SELECT * FROM t1 t11, (SELECT * FROM t2) t12 WHERE t11.a > 1; @@ -517,6 +533,7 @@ Handler_read_key 4 Handler_read_rnd_next 8 # Status of testing query execution: Variable_name Value +Handler_read_key 4 Handler_read_rnd_next 16 Handler_update 2 @@ -980,6 +997,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra 2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 3 100.00 Using where # Status of EXPLAIN EXTENDED query Variable_name Value +Handler_read_key 4 FLUSH STATUS; FLUSH TABLES; EXPLAIN EXTENDED SELECT * FROM t1 WHERE a IN (SELECT a FROM t2); @@ -1000,6 +1018,7 @@ Handler_read_key 7 Handler_read_rnd_next 8 # Status of testing query execution: Variable_name Value +Handler_read_key 4 Handler_read_rnd_next 10 Handler_update 3 @@ -1117,6 +1136,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 5 100.00 # Status of EXPLAIN EXTENDED query Variable_name Value +Handler_read_key 3 FLUSH STATUS; FLUSH TABLES; EXPLAIN EXTENDED SELECT * FROM t1; @@ -1135,6 +1155,7 @@ Handler_read_key 3 Handler_read_rnd_next 6 # Status of testing query execution: Variable_name Value +Handler_read_key 3 Handler_read_rnd_next 6 Handler_update 5 @@ -1898,6 +1919,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t2 range PRIMARY PRIMARY 4 NULL 5 100.00 Using where; Using buffer # Status of EXPLAIN EXTENDED query Variable_name Value +Handler_read_key 4 FLUSH STATUS; FLUSH TABLES; EXPLAIN EXTENDED SELECT * FROM t2 WHERE i > 10 AND i <= 18 ORDER BY i LIMIT 5; @@ -1916,7 +1938,7 @@ Handler_read_key 5 Handler_read_next 4 # Status of testing query execution: Variable_name Value -Handler_read_key 1 +Handler_read_key 5 Handler_read_next 4 Handler_read_rnd 5 Handler_update 5 @@ -1945,6 +1967,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t2 ALL NULL NULL NULL NULL 26 100.00 Using where; Using filesort # Status of EXPLAIN EXTENDED query Variable_name Value +Handler_read_key 4 FLUSH STATUS; FLUSH TABLES; EXPLAIN EXTENDED SELECT * FROM t2 WHERE i > 10 AND i <= 18 ORDER BY i LIMIT 5; @@ -1966,6 +1989,7 @@ Sort_rows 5 Sort_scan 1 # Status of testing query execution: Variable_name Value +Handler_read_key 4 Handler_read_rnd 5 Handler_read_rnd_next 27 Handler_update 5 @@ -1997,6 +2021,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t2 ALL NULL NULL NULL NULL 26 100.00 Using where; Using filesort # Status of EXPLAIN EXTENDED query Variable_name Value +Handler_read_key 8 FLUSH STATUS; FLUSH TABLES; EXPLAIN EXTENDED SELECT * FROM t2 WHERE b = 10 ORDER BY a, c LIMIT 5; @@ -2018,6 +2043,7 @@ Sort_rows 1 Sort_scan 1 # Status of testing query execution: Variable_name Value +Handler_read_key 8 Handler_read_rnd 1 Handler_read_rnd_next 27 Handler_update 1 @@ -2050,6 +2076,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t2 index NULL a 15 NULL 5 100.00 Using where; Using buffer # Status of EXPLAIN EXTENDED query Variable_name Value +Handler_read_key 8 FLUSH STATUS; FLUSH TABLES; EXPLAIN EXTENDED SELECT * FROM t2 WHERE b = 10 ORDER BY a, c LIMIT 5; @@ -2070,6 +2097,7 @@ Handler_read_next 4 # Status of testing query execution: Variable_name Value Handler_read_first 1 +Handler_read_key 8 Handler_read_next 4 Handler_read_rnd 5 Handler_update 5 @@ -2098,6 +2126,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t2 ALL NULL NULL NULL NULL 26 100.00 Using where; Using filesort # Status of EXPLAIN EXTENDED query Variable_name Value +Handler_read_key 8 FLUSH STATUS; FLUSH TABLES; EXPLAIN EXTENDED SELECT * FROM t2 WHERE b = 10 ORDER BY a, c LIMIT 5; @@ -2119,6 +2148,7 @@ Sort_rows 1 Sort_scan 1 # Status of testing query execution: Variable_name Value +Handler_read_key 8 Handler_read_rnd 1 Handler_read_rnd_next 27 Sort_priority_queue_sorts 1 @@ -2150,6 +2180,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t2 ALL NULL NULL NULL NULL 26 100.00 Using where; Using filesort # Status of EXPLAIN EXTENDED query Variable_name Value +Handler_read_key 8 FLUSH STATUS; FLUSH TABLES; EXPLAIN EXTENDED SELECT * FROM t2 WHERE b = 10 ORDER BY a, c LIMIT 5; @@ -2172,6 +2203,7 @@ Sort_rows 1 Sort_scan 1 # Status of testing query execution: Variable_name Value +Handler_read_key 8 Handler_read_rnd 1 Handler_read_rnd_next 27 Sort_priority_queue_sorts 1 @@ -2203,6 +2235,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t2 index_merge key1,key2 key1,key2 5,5 NULL 7 100.00 Using sort_union(key1,key2); Using where; Using filesort # Status of EXPLAIN EXTENDED query Variable_name Value +Handler_read_key 6 FLUSH STATUS; FLUSH TABLES; EXPLAIN EXTENDED SELECT * FROM t2 WHERE key1 < 13 or key2 < 14 ORDER BY key1; @@ -2224,7 +2257,7 @@ Sort_range 1 Sort_rows 4 # Status of testing query execution: Variable_name Value -Handler_read_key 2 +Handler_read_key 8 Handler_read_next 7 Handler_read_rnd 8 Handler_update 4 @@ -2255,6 +2288,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t2 range PRIMARY PRIMARY 4 NULL 5 100.00 Using where; Using buffer # Status of EXPLAIN EXTENDED query Variable_name Value +Handler_read_key 4 FLUSH STATUS; FLUSH TABLES; EXPLAIN EXTENDED SELECT * FROM t2 WHERE i > 10 AND i <= 18 ORDER BY i DESC LIMIT 5; @@ -2273,7 +2307,7 @@ Handler_read_key 5 Handler_read_prev 4 # Status of testing query execution: Variable_name Value -Handler_read_key 1 +Handler_read_key 5 Handler_read_prev 4 Handler_read_rnd 5 Handler_update 5 @@ -2302,6 +2336,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t2 ALL NULL NULL NULL NULL 26 100.00 Using filesort # Status of EXPLAIN EXTENDED query Variable_name Value +Handler_read_key 6 FLUSH STATUS; FLUSH TABLES; EXPLAIN EXTENDED SELECT * FROM t2 ORDER BY a, b DESC LIMIT 5; @@ -2323,6 +2358,7 @@ Sort_rows 5 Sort_scan 1 # Status of testing query execution: Variable_name Value +Handler_read_key 6 Handler_read_rnd 5 Handler_read_rnd_next 27 Handler_update 4 @@ -2355,6 +2391,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t2 index NULL a 6 NULL 5 100.00 Using buffer # Status of EXPLAIN EXTENDED query Variable_name Value +Handler_read_key 6 FLUSH STATUS; FLUSH TABLES; EXPLAIN EXTENDED SELECT * FROM t2 ORDER BY a DESC, b DESC LIMIT 5; @@ -2374,6 +2411,7 @@ Handler_read_last 1 Handler_read_prev 4 # Status of testing query execution: Variable_name Value +Handler_read_key 6 Handler_read_last 1 Handler_read_prev 4 Handler_read_rnd 5 @@ -2405,6 +2443,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 range c1_idx c1_idx 2 NULL 2 100.00 Using where; Using filesort # Status of EXPLAIN EXTENDED query Variable_name Value +Handler_read_key 6 FLUSH STATUS; FLUSH TABLES; EXPLAIN EXTENDED SELECT * FROM t1 WHERE c1_idx = 'y' ORDER BY pk DESC LIMIT 2; @@ -2426,7 +2465,7 @@ Sort_range 1 Sort_rows 2 # Status of testing query execution: Variable_name Value -Handler_read_key 1 +Handler_read_key 7 Handler_read_next 2 Handler_read_rnd 2 Handler_update 2 @@ -2499,6 +2538,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 2 100.00 Using where; Using buffer # Status of EXPLAIN EXTENDED query Variable_name Value +Handler_read_key 3 FLUSH STATUS; FLUSH TABLES; EXPLAIN EXTENDED SELECT * FROM t1 WHERE a > 34; @@ -2517,7 +2557,7 @@ Handler_read_key 4 Handler_read_next 2 # Status of testing query execution: Variable_name Value -Handler_read_key 1 +Handler_read_key 4 Handler_read_next 2 Handler_read_rnd 2 Handler_update 2 @@ -2545,6 +2585,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 # Status of EXPLAIN EXTENDED query Variable_name Value +Handler_read_key 7 Handler_read_rnd_next 1 FLUSH STATUS; FLUSH TABLES; @@ -2566,6 +2607,7 @@ Handler_read_key 7 Handler_read_rnd_next 4 # Status of testing query execution: Variable_name Value +Handler_read_key 7 Handler_read_rnd_next 4 # @@ -2586,6 +2628,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where # Status of EXPLAIN EXTENDED query Variable_name Value +Handler_read_key 7 Handler_read_rnd_next 1 FLUSH STATUS; FLUSH TABLES; @@ -2607,6 +2650,7 @@ Handler_read_key 7 Handler_read_rnd_next 4 # Status of testing query execution: Variable_name Value +Handler_read_key 7 Handler_read_rnd_next 4 DROP TABLE t1, t2; @@ -2636,6 +2680,7 @@ Warnings: Note 1276 Field or reference 'test.t1.f1' of SELECT #2 was resolved in SELECT #1 # Status of EXPLAIN EXTENDED query Variable_name Value +Handler_read_key 7 FLUSH STATUS; FLUSH TABLES; EXPLAIN EXTENDED SELECT (SELECT MAX(t2.f4) FROM t2 WHERE t2.f3=t1.f1) FROM t1; @@ -2656,6 +2701,7 @@ Handler_read_key 9 Handler_read_rnd_next 9 # Status of testing query execution: Variable_name Value +Handler_read_key 7 Handler_read_rnd_next 9 Handler_update 2 @@ -2705,6 +2751,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t12 ALL NULL NULL NULL NULL 2 100.00 # Status of EXPLAIN EXTENDED query Variable_name Value +Handler_read_key 2 FLUSH STATUS; FLUSH TABLES; EXPLAIN EXTENDED SELECT * FROM v1 WHERE a > 0; @@ -2724,6 +2771,7 @@ Handler_read_key 2 Handler_read_rnd_next 6 # Status of testing query execution: Variable_name Value +Handler_read_key 2 Handler_read_rnd 1 Handler_read_rnd_deleted 1 Handler_read_rnd_next 8 @@ -2748,6 +2796,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t12 ALL NULL NULL NULL NULL 2 100.00 # Status of EXPLAIN EXTENDED query Variable_name Value +Handler_read_key 2 FLUSH STATUS; FLUSH TABLES; EXPLAIN EXTENDED SELECT * FROM t1, v1 WHERE t1.a = v1.a; @@ -2768,6 +2817,7 @@ Handler_read_key 2 Handler_read_rnd_next 9 # Status of testing query execution: Variable_name Value +Handler_read_key 2 Handler_read_rnd 2 Handler_read_rnd_deleted 1 Handler_read_rnd_next 18 @@ -3038,6 +3088,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra 3 DERIVED t2 ALL NULL NULL NULL NULL 3 100.00 Using filesort # Status of EXPLAIN EXTENDED query Variable_name Value +Handler_read_key 4 FLUSH STATUS; FLUSH TABLES; EXPLAIN EXTENDED SELECT * FROM t1 WHERE a IN (SELECT * FROM (SELECT b FROM t2 ORDER BY b LIMIT 2,2) x); @@ -3062,7 +3113,7 @@ Sort_rows 3 Sort_scan 1 # Status of testing query execution: Variable_name Value -Handler_read_key 3 +Handler_read_key 7 Handler_read_rnd_next 8 Handler_update 1 Sort_priority_queue_sorts 1 @@ -3093,6 +3144,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra 3 DERIVED t2 ALL NULL NULL NULL NULL 3 100.00 Using filesort # Status of EXPLAIN EXTENDED query Variable_name Value +Handler_read_key 4 FLUSH STATUS; FLUSH TABLES; EXPLAIN EXTENDED SELECT * FROM t1, t2 WHERE a IN (SELECT * FROM (SELECT b FROM t2 ORDER BY b LIMIT 2,2) x); @@ -3118,7 +3170,7 @@ Sort_rows 3 Sort_scan 1 # Status of testing query execution: Variable_name Value -Handler_read_key 3 +Handler_read_key 7 Handler_read_rnd_next 10 Sort_priority_queue_sorts 1 Sort_rows 3 @@ -3150,6 +3202,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra 2 DERIVED t2 ALL NULL NULL NULL NULL 3 100.00 # Status of EXPLAIN EXTENDED query Variable_name Value +Handler_read_key 4 FLUSH STATUS; FLUSH TABLES; EXPLAIN EXTENDED SELECT * FROM t1, (SELECT * FROM t2) y WHERE a IN (SELECT * FROM (SELECT b FROM t2 ORDER BY b LIMIT 2,2) x); @@ -3175,7 +3228,7 @@ Sort_rows 3 Sort_scan 1 # Status of testing query execution: Variable_name Value -Handler_read_key 3 +Handler_read_key 7 Handler_read_rnd_next 10 Sort_priority_queue_sorts 1 Sort_rows 3 @@ -3227,6 +3280,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 1 100.00 Using where; Using buffer # Status of EXPLAIN EXTENDED query Variable_name Value +Handler_read_key 3 FLUSH STATUS; FLUSH TABLES; EXPLAIN EXTENDED SELECT a t1 FROM t1 WHERE a>10; @@ -3246,7 +3300,7 @@ Handler_read_key 3 Handler_read_next 5 # Status of testing query execution: Variable_name Value -Handler_read_key 1 +Handler_read_key 4 # used key is modified & Using filesort # @@ -3265,6 +3319,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 1 100.00 Using where; Using filesort # Status of EXPLAIN EXTENDED query Variable_name Value +Handler_read_key 3 FLUSH STATUS; FLUSH TABLES; EXPLAIN EXTENDED SELECT a t1 FROM t1 WHERE a>10 ORDER BY a+20; @@ -3284,7 +3339,7 @@ Handler_read_rnd_next 6 Sort_scan 1 # Status of testing query execution: Variable_name Value -Handler_read_key 1 +Handler_read_key 4 Sort_range 1 DROP TABLE t1; diff --git a/mysql-test/main/olap.result b/mysql-test/main/olap.result index 1931fac6029..93eda747d83 100644 --- a/mysql-test/main/olap.result +++ b/mysql-test/main/olap.result @@ -786,6 +786,66 @@ t COUNT(*) 12:12:13 1 DROP TABLE t1; # +# MDEV-17830 Server crashes in Item_null_result::field_type upon SELECT with CHARSET(date) and ROLLUP +# +# Note, different MariaDB versions can return different results +# in the two rows (such as "latin1" vs "binary"). This is wrong. +# Both lines should return equal values. +# The point in this test is to make sure it does not crash. +# As this is a minor issue, bad result will be fixed +# in a later version, presumably in 10.4. +CREATE TABLE t (d DATE) ENGINE=MyISAM; +INSERT INTO t VALUES ('2018-12-12'); +SELECT CHARSET(d) AS f FROM t GROUP BY d WITH ROLLUP; +f +binary +latin1 +DROP TABLE t; +# +# MDEV-14041 Server crashes in String::length on queries with functions and ROLLUP +# +CREATE TABLE t1 (i INT); +INSERT INTO t1 VALUES (1),(2); +SELECT GET_LOCK( 'foo', 0 ); +GET_LOCK( 'foo', 0 ) +1 +SELECT HEX( RELEASE_LOCK( 'foo' ) ) AS f FROM t1 GROUP BY f WITH ROLLUP; +f +NULL +1 +NULL +DROP TABLE t1; +CREATE TABLE t1 (i INT); +INSERT INTO t1 VALUES (1),(2); +SELECT i FROM t1 GROUP BY i WITH ROLLUP +UNION ALL +SELECT ELT( FOUND_ROWS(), 1 ) f FROM t1 GROUP BY f WITH ROLLUP; +i +1 +2 +NULL +NULL +NULL +DROP TABLE t1; +CREATE TABLE t1 (a INT); +INSERT INTO t1 VALUES (1),(2); +SELECT a FROM t1 GROUP BY NULLIF( CONVERT('', DATE), '2015-10-15' ) WITH ROLLUP; +a +1 +1 +Warnings: +Warning 1292 Truncated incorrect datetime value: '' +Warning 1292 Incorrect datetime value: '' +Warning 1292 Truncated incorrect datetime value: '' +Warning 1292 Incorrect datetime value: '' +Warning 1292 Truncated incorrect datetime value: '' +Warning 1292 Incorrect datetime value: '' +Warning 1292 Truncated incorrect datetime value: '' +Warning 1292 Incorrect datetime value: '' +Warning 1292 Truncated incorrect datetime value: '' +Warning 1292 Incorrect datetime value: '' +DROP TABLE t1; +# # End of 10.1 tests # # diff --git a/mysql-test/main/olap.test b/mysql-test/main/olap.test index 3756712b49d..078eacb851b 100644 --- a/mysql-test/main/olap.test +++ b/mysql-test/main/olap.test @@ -424,6 +424,45 @@ DROP TABLE t1; --echo # +--echo # MDEV-17830 Server crashes in Item_null_result::field_type upon SELECT with CHARSET(date) and ROLLUP +--echo # + +--echo # Note, different MariaDB versions can return different results +--echo # in the two rows (such as "latin1" vs "binary"). This is wrong. +--echo # Both lines should return equal values. +--echo # The point in this test is to make sure it does not crash. +--echo # As this is a minor issue, bad result will be fixed +--echo # in a later version, presumably in 10.4. + +CREATE TABLE t (d DATE) ENGINE=MyISAM; +INSERT INTO t VALUES ('2018-12-12'); +SELECT CHARSET(d) AS f FROM t GROUP BY d WITH ROLLUP; +DROP TABLE t; + + +--echo # +--echo # MDEV-14041 Server crashes in String::length on queries with functions and ROLLUP +--echo # + +CREATE TABLE t1 (i INT); +INSERT INTO t1 VALUES (1),(2); +SELECT GET_LOCK( 'foo', 0 ); +SELECT HEX( RELEASE_LOCK( 'foo' ) ) AS f FROM t1 GROUP BY f WITH ROLLUP; +DROP TABLE t1; + +CREATE TABLE t1 (i INT); +INSERT INTO t1 VALUES (1),(2); +SELECT i FROM t1 GROUP BY i WITH ROLLUP +UNION ALL +SELECT ELT( FOUND_ROWS(), 1 ) f FROM t1 GROUP BY f WITH ROLLUP; +DROP TABLE t1; + +CREATE TABLE t1 (a INT); +INSERT INTO t1 VALUES (1),(2); +SELECT a FROM t1 GROUP BY NULLIF( CONVERT('', DATE), '2015-10-15' ) WITH ROLLUP; +DROP TABLE t1; + +--echo # --echo # End of 10.1 tests --echo # diff --git a/mysql-test/main/order_by.result b/mysql-test/main/order_by.result index f2065f67585..4e8f8bfb17d 100644 --- a/mysql-test/main/order_by.result +++ b/mysql-test/main/order_by.result @@ -3330,6 +3330,19 @@ Note 1003 select `test`.`wings`.`id` AS `wing_id`,`test`.`wings`.`department_id` set optimizer_switch= @save_optimizer_switch; DROP TABLE books, wings; # +# MDEV-17796: query with DISTINCT, GROUP BY and ORDER BY +# +CREATE TABLE t1 (id int, gr int, v1 varchar(10)); +INSERT INTO t1 VALUES (1,1,'A'), (2,2,'B'), (3,3,NULL), (4,4,'C'); +SELECT DISTINCT NULLIF(GROUP_CONCAT(v1), null) FROM t1 +WHERE gr in (4,2) +GROUP BY id +ORDER BY id+1 DESC; +NULLIF(GROUP_CONCAT(v1), null) +C +B +DROP TABLE t1; +# # MDEV-17761: Odd optimizer choice with ORDER BY LIMIT and condition selectivity # create table t1(a int); diff --git a/mysql-test/main/order_by.test b/mysql-test/main/order_by.test index 896a8106bae..425ba8f916c 100644 --- a/mysql-test/main/order_by.test +++ b/mysql-test/main/order_by.test @@ -2189,6 +2189,21 @@ set optimizer_switch= @save_optimizer_switch; DROP TABLE books, wings; + +--echo # +--echo # MDEV-17796: query with DISTINCT, GROUP BY and ORDER BY +--echo # + +CREATE TABLE t1 (id int, gr int, v1 varchar(10)); +INSERT INTO t1 VALUES (1,1,'A'), (2,2,'B'), (3,3,NULL), (4,4,'C'); + +SELECT DISTINCT NULLIF(GROUP_CONCAT(v1), null) FROM t1 + WHERE gr in (4,2) +GROUP BY id +ORDER BY id+1 DESC; + +DROP TABLE t1; + --echo # --echo # MDEV-17761: Odd optimizer choice with ORDER BY LIMIT and condition selectivity --echo # @@ -2224,4 +2239,3 @@ set histogram_size=@tmp_h, histogram_type=@tmp_ht, use_stat_tables=@tmp_u, optimizer_use_condition_selectivity=@tmp_o; drop table t1,t2,t3,t4; - diff --git a/mysql-test/main/partition.result b/mysql-test/main/partition.result index 89dd6e40db1..5a7795394ec 100644 --- a/mysql-test/main/partition.result +++ b/mysql-test/main/partition.result @@ -290,7 +290,7 @@ test.t1 analyze status Engine-independent statistics collected test.t1 analyze status OK show indexes from t1; Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment -t1 1 a 1 a A 1 NULL NULL YES BTREE +t1 1 a 1 a A 2 NULL NULL YES BTREE drop table t1; create table t1 (a int) partition by hash (a); diff --git a/mysql-test/main/partition_explicit_prune.result b/mysql-test/main/partition_explicit_prune.result index 1199bc263d3..d9db35a249a 100644 --- a/mysql-test/main/partition_explicit_prune.result +++ b/mysql-test/main/partition_explicit_prune.result @@ -777,6 +777,7 @@ SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 +HANDLER_READ_KEY 8 HANDLER_READ_RND_NEXT 2 HANDLER_TMP_WRITE 24 HANDLER_UPDATE 2 diff --git a/mysql-test/main/sp.result b/mysql-test/main/sp.result index b54f97e6258..3129a2e165c 100644 --- a/mysql-test/main/sp.result +++ b/mysql-test/main/sp.result @@ -7622,6 +7622,22 @@ c1 c2 count(c3) 2012-03-01 02:00:00 3 1 DROP PROCEDURE p1; # End of 5.5 test +CREATE PROCEDURE sp() ALTER TABLE non_existing_table OPTIMIZE PARTITION p0; +CALL sp; +Table Op Msg_type Msg_text +test.non_existing_table optimize Error Table 'test.non_existing_table' doesn't exist +test.non_existing_table optimize status Operation failed +SELECT 1; +1 +1 +DROP PROCEDURE sp; +CREATE PROCEDURE sp() SHOW USER_STATISTICS; +CALL sp; +User Total_connections Concurrent_connections Connected_time Busy_time Cpu_time Bytes_received Bytes_sent Binlog_bytes_written Rows_read Rows_sent Rows_deleted Rows_inserted Rows_updated Select_commands Update_commands Other_commands Commit_transactions Rollback_transactions Denied_connections Lost_connections Access_denied Empty_queries Total_ssl_connections Max_statement_time_exceeded +SELECT 1; +1 +1 +DROP PROCEDURE sp; # # Bug#12663165 SP DEAD CODE REMOVAL DOESN'T UNDERSTAND CONTINUE HANDLERS # @@ -7711,7 +7727,7 @@ UPDATE t1 SET a = '+' WHERE daynum=tdn(); SHOW STATUS LIKE '%Handler_read%'; Variable_name Value Handler_read_first 0 -Handler_read_key 2 +Handler_read_key 9 Handler_read_last 0 Handler_read_next 4097 Handler_read_prev 0 diff --git a/mysql-test/main/sp.test b/mysql-test/main/sp.test index d2c27873026..7f841ccd0b4 100644 --- a/mysql-test/main/sp.test +++ b/mysql-test/main/sp.test @@ -9056,6 +9056,15 @@ DROP PROCEDURE p1; --echo # End of 5.5 test +#MDEV-17610 +CREATE PROCEDURE sp() ALTER TABLE non_existing_table OPTIMIZE PARTITION p0; +CALL sp; +SELECT 1; +DROP PROCEDURE sp; +CREATE PROCEDURE sp() SHOW USER_STATISTICS; +CALL sp; +SELECT 1; +DROP PROCEDURE sp; --echo # --echo # Bug#12663165 SP DEAD CODE REMOVAL DOESN'T UNDERSTAND CONTINUE HANDLERS diff --git a/mysql-test/main/stat_tables.result b/mysql-test/main/stat_tables.result index a16756406f7..642dc1fc8f3 100644 --- a/mysql-test/main/stat_tables.result +++ b/mysql-test/main/stat_tables.result @@ -628,6 +628,76 @@ NULL DROP TABLE t1; set use_stat_tables=@save_use_stat_tables; # +# MDEV-17605: SHOW INDEXES with use_stat_tables='preferably' +# +set use_stat_tables='preferably'; +CREATE DATABASE dbt3_s001; +use dbt3_s001; +set @save_optimizer_switch=@@optimizer_switch; +set optimizer_switch='extended_keys=off'; +select * from mysql.table_stats; +db_name table_name cardinality +dbt3_s001 lineitem 6005 +select * from mysql.index_stats; +db_name table_name index_name prefix_arity avg_frequency +dbt3_s001 lineitem PRIMARY 1 4.0033 +dbt3_s001 lineitem PRIMARY 2 1.0000 +dbt3_s001 lineitem i_l_shipdate 1 2.6500 +dbt3_s001 lineitem i_l_suppkey_partkey 1 30.0250 +dbt3_s001 lineitem i_l_suppkey_partkey 2 8.5786 +dbt3_s001 lineitem i_l_partkey 1 30.0250 +dbt3_s001 lineitem i_l_suppkey 1 600.5000 +dbt3_s001 lineitem i_l_receiptdate 1 2.6477 +dbt3_s001 lineitem i_l_orderkey 1 4.0033 +dbt3_s001 lineitem i_l_orderkey_quantity 1 4.0033 +dbt3_s001 lineitem i_l_orderkey_quantity 2 1.0404 +dbt3_s001 lineitem i_l_commitdate 1 2.7160 +SHOW INDEXES FROM lineitem; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment +lineitem 0 PRIMARY 1 l_orderkey A 1500 NULL NULL BTREE +lineitem 0 PRIMARY 2 l_linenumber A 6005 NULL NULL BTREE +lineitem 1 i_l_shipdate 1 l_shipDATE A 2266 NULL NULL YES BTREE +lineitem 1 i_l_suppkey_partkey 1 l_partkey A 200 NULL NULL YES BTREE +lineitem 1 i_l_suppkey_partkey 2 l_suppkey A 699 NULL NULL YES BTREE +lineitem 1 i_l_partkey 1 l_partkey A 200 NULL NULL YES BTREE +lineitem 1 i_l_suppkey 1 l_suppkey A 10 NULL NULL YES BTREE +lineitem 1 i_l_receiptdate 1 l_receiptDATE A 2268 NULL NULL YES BTREE +lineitem 1 i_l_orderkey 1 l_orderkey A 1500 NULL NULL BTREE +lineitem 1 i_l_orderkey_quantity 1 l_orderkey A 1500 NULL NULL BTREE +lineitem 1 i_l_orderkey_quantity 2 l_quantity A 5771 NULL NULL YES BTREE +lineitem 1 i_l_commitdate 1 l_commitDATE A 2210 NULL NULL YES BTREE +SELECT * FROM INFORMATION_SCHEMA.STATISTICS WHERE table_name='lineitem'; +TABLE_CATALOG TABLE_SCHEMA TABLE_NAME NON_UNIQUE INDEX_SCHEMA INDEX_NAME SEQ_IN_INDEX COLUMN_NAME COLLATION CARDINALITY SUB_PART PACKED NULLABLE INDEX_TYPE COMMENT INDEX_COMMENT +def dbt3_s001 lineitem 0 dbt3_s001 PRIMARY 1 l_orderkey A 1500 NULL NULL BTREE +def dbt3_s001 lineitem 0 dbt3_s001 PRIMARY 2 l_linenumber A 6005 NULL NULL BTREE +def dbt3_s001 lineitem 1 dbt3_s001 i_l_shipdate 1 l_shipDATE A 2266 NULL NULL YES BTREE +def dbt3_s001 lineitem 1 dbt3_s001 i_l_suppkey_partkey 1 l_partkey A 200 NULL NULL YES BTREE +def dbt3_s001 lineitem 1 dbt3_s001 i_l_suppkey_partkey 2 l_suppkey A 699 NULL NULL YES BTREE +def dbt3_s001 lineitem 1 dbt3_s001 i_l_partkey 1 l_partkey A 200 NULL NULL YES BTREE +def dbt3_s001 lineitem 1 dbt3_s001 i_l_suppkey 1 l_suppkey A 10 NULL NULL YES BTREE +def dbt3_s001 lineitem 1 dbt3_s001 i_l_receiptdate 1 l_receiptDATE A 2268 NULL NULL YES BTREE +def dbt3_s001 lineitem 1 dbt3_s001 i_l_orderkey 1 l_orderkey A 1500 NULL NULL BTREE +def dbt3_s001 lineitem 1 dbt3_s001 i_l_orderkey_quantity 1 l_orderkey A 1500 NULL NULL BTREE +def dbt3_s001 lineitem 1 dbt3_s001 i_l_orderkey_quantity 2 l_quantity A 5771 NULL NULL YES BTREE +def dbt3_s001 lineitem 1 dbt3_s001 i_l_commitdate 1 l_commitDATE A 2210 NULL NULL YES BTREE +SELECT +COUNT(DISTINCT l_orderkey), COUNT(DISTINCT l_orderkey,l_linenumber), +COUNT(DISTINCT l_shipDATE), +COUNT(DISTINCT l_partkey), COUNT(DISTINCT l_partkey,l_suppkey), +COUNT(DISTINCT l_suppkey), COUNT(DISTINCT l_receiptDATE), +COUNT(DISTINCT l_orderkey, l_quantity), COUNT(DISTINCT l_commitDATE) +FROM lineitem; +COUNT(DISTINCT l_orderkey) COUNT(DISTINCT l_orderkey,l_linenumber) COUNT(DISTINCT l_shipDATE) COUNT(DISTINCT l_partkey) COUNT(DISTINCT l_partkey,l_suppkey) COUNT(DISTINCT l_suppkey) COUNT(DISTINCT l_receiptDATE) COUNT(DISTINCT l_orderkey, l_quantity) COUNT(DISTINCT l_commitDATE) +1500 6005 2266 200 700 10 2268 5772 2211 +set optimizer_switch=@save_optimizer_switch; +DROP DATABASE dbt3_s001; +USE test; +delete from mysql.table_stats; +delete from mysql.column_stats; +delete from mysql.index_stats; +set @save_optimizer_switch=@@optimizer_switch; +set use_stat_tables=@save_use_stat_tables; +# # MDEV-18899: Server crashes in Field::set_warning_truncated_wrong_value # set names utf8; diff --git a/mysql-test/main/stat_tables.test b/mysql-test/main/stat_tables.test index 9ae1cc211f9..d845bcd95e7 100644 --- a/mysql-test/main/stat_tables.test +++ b/mysql-test/main/stat_tables.test @@ -405,6 +405,61 @@ DROP TABLE t1; set use_stat_tables=@save_use_stat_tables; + +--echo # +--echo # MDEV-17605: SHOW INDEXES with use_stat_tables='preferably' +--echo # + +set use_stat_tables='preferably'; + +CREATE DATABASE dbt3_s001; + +use dbt3_s001; + +set @save_optimizer_switch=@@optimizer_switch; +set optimizer_switch='extended_keys=off'; + +--disable_query_log +--disable_result_log +--disable_warnings +--source include/dbt3_s001.inc +create index i_p_retailprice on part(p_retailprice); +delete from mysql.table_stats; +delete from mysql.column_stats; +delete from mysql.index_stats; +ANALYZE TABLE lineitem; +FLUSH TABLE mysql.table_stats, mysql.index_stats; +--enable_warnings +--enable_result_log +--enable_query_log + +select * from mysql.table_stats; +select * from mysql.index_stats; + +SHOW INDEXES FROM lineitem; + +SELECT * FROM INFORMATION_SCHEMA.STATISTICS WHERE table_name='lineitem'; + +SELECT + COUNT(DISTINCT l_orderkey), COUNT(DISTINCT l_orderkey,l_linenumber), + COUNT(DISTINCT l_shipDATE), + COUNT(DISTINCT l_partkey), COUNT(DISTINCT l_partkey,l_suppkey), + COUNT(DISTINCT l_suppkey), COUNT(DISTINCT l_receiptDATE), + COUNT(DISTINCT l_orderkey, l_quantity), COUNT(DISTINCT l_commitDATE) +FROM lineitem; + +set optimizer_switch=@save_optimizer_switch; + +DROP DATABASE dbt3_s001; +USE test; + +delete from mysql.table_stats; +delete from mysql.column_stats; +delete from mysql.index_stats; + +set @save_optimizer_switch=@@optimizer_switch; +set use_stat_tables=@save_use_stat_tables; + --echo # --echo # MDEV-18899: Server crashes in Field::set_warning_truncated_wrong_value --echo # diff --git a/mysql-test/main/stat_tables_innodb.result b/mysql-test/main/stat_tables_innodb.result index e9c1bc1dddb..9d0ea179755 100644 --- a/mysql-test/main/stat_tables_innodb.result +++ b/mysql-test/main/stat_tables_innodb.result @@ -660,6 +660,76 @@ NULL DROP TABLE t1; set use_stat_tables=@save_use_stat_tables; # +# MDEV-17605: SHOW INDEXES with use_stat_tables='preferably' +# +set use_stat_tables='preferably'; +CREATE DATABASE dbt3_s001; +use dbt3_s001; +set @save_optimizer_switch=@@optimizer_switch; +set optimizer_switch='extended_keys=off'; +select * from mysql.table_stats; +db_name table_name cardinality +dbt3_s001 lineitem 6005 +select * from mysql.index_stats; +db_name table_name index_name prefix_arity avg_frequency +dbt3_s001 lineitem PRIMARY 1 4.0033 +dbt3_s001 lineitem PRIMARY 2 1.0000 +dbt3_s001 lineitem i_l_shipdate 1 2.6500 +dbt3_s001 lineitem i_l_suppkey_partkey 1 30.0250 +dbt3_s001 lineitem i_l_suppkey_partkey 2 8.5786 +dbt3_s001 lineitem i_l_partkey 1 30.0250 +dbt3_s001 lineitem i_l_suppkey 1 600.5000 +dbt3_s001 lineitem i_l_receiptdate 1 2.6477 +dbt3_s001 lineitem i_l_orderkey 1 4.0033 +dbt3_s001 lineitem i_l_orderkey_quantity 1 4.0033 +dbt3_s001 lineitem i_l_orderkey_quantity 2 1.0404 +dbt3_s001 lineitem i_l_commitdate 1 2.7160 +SHOW INDEXES FROM lineitem; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment +lineitem 0 PRIMARY 1 l_orderkey A 1500 NULL NULL BTREE +lineitem 0 PRIMARY 2 l_linenumber A 6005 NULL NULL BTREE +lineitem 1 i_l_shipdate 1 l_shipDATE A 2266 NULL NULL YES BTREE +lineitem 1 i_l_suppkey_partkey 1 l_partkey A 200 NULL NULL YES BTREE +lineitem 1 i_l_suppkey_partkey 2 l_suppkey A 699 NULL NULL YES BTREE +lineitem 1 i_l_partkey 1 l_partkey A 200 NULL NULL YES BTREE +lineitem 1 i_l_suppkey 1 l_suppkey A 10 NULL NULL YES BTREE +lineitem 1 i_l_receiptdate 1 l_receiptDATE A 2268 NULL NULL YES BTREE +lineitem 1 i_l_orderkey 1 l_orderkey A 1500 NULL NULL BTREE +lineitem 1 i_l_orderkey_quantity 1 l_orderkey A 1500 NULL NULL BTREE +lineitem 1 i_l_orderkey_quantity 2 l_quantity A 5771 NULL NULL YES BTREE +lineitem 1 i_l_commitdate 1 l_commitDATE A 2210 NULL NULL YES BTREE +SELECT * FROM INFORMATION_SCHEMA.STATISTICS WHERE table_name='lineitem'; +TABLE_CATALOG TABLE_SCHEMA TABLE_NAME NON_UNIQUE INDEX_SCHEMA INDEX_NAME SEQ_IN_INDEX COLUMN_NAME COLLATION CARDINALITY SUB_PART PACKED NULLABLE INDEX_TYPE COMMENT INDEX_COMMENT +def dbt3_s001 lineitem 0 dbt3_s001 PRIMARY 1 l_orderkey A 1500 NULL NULL BTREE +def dbt3_s001 lineitem 0 dbt3_s001 PRIMARY 2 l_linenumber A 6005 NULL NULL BTREE +def dbt3_s001 lineitem 1 dbt3_s001 i_l_shipdate 1 l_shipDATE A 2266 NULL NULL YES BTREE +def dbt3_s001 lineitem 1 dbt3_s001 i_l_suppkey_partkey 1 l_partkey A 200 NULL NULL YES BTREE +def dbt3_s001 lineitem 1 dbt3_s001 i_l_suppkey_partkey 2 l_suppkey A 699 NULL NULL YES BTREE +def dbt3_s001 lineitem 1 dbt3_s001 i_l_partkey 1 l_partkey A 200 NULL NULL YES BTREE +def dbt3_s001 lineitem 1 dbt3_s001 i_l_suppkey 1 l_suppkey A 10 NULL NULL YES BTREE +def dbt3_s001 lineitem 1 dbt3_s001 i_l_receiptdate 1 l_receiptDATE A 2268 NULL NULL YES BTREE +def dbt3_s001 lineitem 1 dbt3_s001 i_l_orderkey 1 l_orderkey A 1500 NULL NULL BTREE +def dbt3_s001 lineitem 1 dbt3_s001 i_l_orderkey_quantity 1 l_orderkey A 1500 NULL NULL BTREE +def dbt3_s001 lineitem 1 dbt3_s001 i_l_orderkey_quantity 2 l_quantity A 5771 NULL NULL YES BTREE +def dbt3_s001 lineitem 1 dbt3_s001 i_l_commitdate 1 l_commitDATE A 2210 NULL NULL YES BTREE +SELECT +COUNT(DISTINCT l_orderkey), COUNT(DISTINCT l_orderkey,l_linenumber), +COUNT(DISTINCT l_shipDATE), +COUNT(DISTINCT l_partkey), COUNT(DISTINCT l_partkey,l_suppkey), +COUNT(DISTINCT l_suppkey), COUNT(DISTINCT l_receiptDATE), +COUNT(DISTINCT l_orderkey, l_quantity), COUNT(DISTINCT l_commitDATE) +FROM lineitem; +COUNT(DISTINCT l_orderkey) COUNT(DISTINCT l_orderkey,l_linenumber) COUNT(DISTINCT l_shipDATE) COUNT(DISTINCT l_partkey) COUNT(DISTINCT l_partkey,l_suppkey) COUNT(DISTINCT l_suppkey) COUNT(DISTINCT l_receiptDATE) COUNT(DISTINCT l_orderkey, l_quantity) COUNT(DISTINCT l_commitDATE) +1500 6005 2266 200 700 10 2268 5772 2211 +set optimizer_switch=@save_optimizer_switch; +DROP DATABASE dbt3_s001; +USE test; +delete from mysql.table_stats; +delete from mysql.column_stats; +delete from mysql.index_stats; +set @save_optimizer_switch=@@optimizer_switch; +set use_stat_tables=@save_use_stat_tables; +# # MDEV-18899: Server crashes in Field::set_warning_truncated_wrong_value # set names utf8; diff --git a/mysql-test/main/type_date.result b/mysql-test/main/type_date.result index 149fafb57f4..c5c892b5e4d 100644 --- a/mysql-test/main/type_date.result +++ b/mysql-test/main/type_date.result @@ -863,6 +863,33 @@ d COUNT(*) NULL 2 DROP TABLE t1; # +# MDEV-17299 Assertion `maybe_null' failed in make_sortkey +# +CREATE TABLE t1 (pk int NOT NULL, d1 date, d2 date NOT NULL); +INSERT INTO t1 values (1,'2018-06-22','2018-06-22'),(2,'2018-07-11','2018-07-11'); +CREATE VIEW v1 AS SELECT * FROM t1; +SELECT group_concat(d1/(CASE 'b' WHEN 'j' THEN 'c' END)) +FROM v1 GROUP BY greatest(pk, 0, d2); +group_concat(d1/(CASE 'b' WHEN 'j' THEN 'c' END)) +NULL +NULL +Warnings: +Warning 1292 Incorrect datetime value: '1' for column `test`.`t1`.`pk` at row 1 +Warning 1292 Incorrect datetime value: '2' for column `test`.`t1`.`pk` at row 1 +Warning 1292 Incorrect datetime value: '1' for column `test`.`t1`.`pk` at row 1 +Warning 1292 Incorrect datetime value: '1' for column `test`.`t1`.`pk` at row 1 +Warning 1292 Incorrect datetime value: '2' for column `test`.`t1`.`pk` at row 2 +Warning 1292 Incorrect datetime value: '2' for column `test`.`t1`.`pk` at row 2 +CREATE TABLE t2 AS SELECT greatest(pk, 0, d2) AS c1 FROM t1 LIMIT 0; +SHOW CREATE TABLE t2; +Table Create Table +t2 CREATE TABLE `t2` ( + `c1` date DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +DROP TABLE t2; +DROP VIEW v1; +DROP TABLE t1; +# # End of 10.1 tests # # diff --git a/mysql-test/main/type_date.test b/mysql-test/main/type_date.test index 75bbfb3b916..4639c004740 100644 --- a/mysql-test/main/type_date.test +++ b/mysql-test/main/type_date.test @@ -591,6 +591,20 @@ INSERT INTO t1 VALUES ('1985-05-13'),('1989-12-24'); SELECT d, COUNT(*) FROM t1 GROUP BY d WITH ROLLUP HAVING CASE d WHEN '2017-05-25' THEN 0 ELSE 1 END; DROP TABLE t1; +--echo # +--echo # MDEV-17299 Assertion `maybe_null' failed in make_sortkey +--echo # + +CREATE TABLE t1 (pk int NOT NULL, d1 date, d2 date NOT NULL); +INSERT INTO t1 values (1,'2018-06-22','2018-06-22'),(2,'2018-07-11','2018-07-11'); +CREATE VIEW v1 AS SELECT * FROM t1; +SELECT group_concat(d1/(CASE 'b' WHEN 'j' THEN 'c' END)) + FROM v1 GROUP BY greatest(pk, 0, d2); +CREATE TABLE t2 AS SELECT greatest(pk, 0, d2) AS c1 FROM t1 LIMIT 0; +SHOW CREATE TABLE t2; +DROP TABLE t2; +DROP VIEW v1; +DROP TABLE t1; --echo # --echo # End of 10.1 tests diff --git a/mysql-test/main/update_innodb.result b/mysql-test/main/update_innodb.result index 3ef61cd88c2..beab54833d1 100644 --- a/mysql-test/main/update_innodb.result +++ b/mysql-test/main/update_innodb.result @@ -65,8 +65,32 @@ SELECT * FROM t1; a_id b_id c_id 1 NULL NULL drop table t1,t2; -CREATE OR REPLACE TABLE t1 (a INT NOT NULL PRIMARY KEY) engine=innodb; -CREATE OR REPLACE TABLE t2 (a INT NOT NULL PRIMARY KEY) engine=innodb; +# +# MDEV-18300: ASAN error in Field_blob::get_key_image upon UPDATE with subquery +# +set @save_optimizer_use_condition_selectivity= @@optimizer_use_condition_selectivity; +set @save_use_stat_tables= @@use_stat_tables; +set use_stat_tables=preferably; +set optimizer_use_condition_selectivity=4; +CREATE TABLE t1 (a INT, b CHAR(8)) ENGINE=InnoDB; +insert into t1 values (1,'foo'),(2, 'abc'); +CREATE TABLE t2 (c CHAR(8), d BLOB) ENGINE=InnoDB; +insert into t2 values ('abc', 'foo'),('edf', 'food'); +ANALYZE TABLE t1,t2; +UPDATE t1 SET a = 1 WHERE b = ( SELECT c FROM t2 WHERE d = 'foo' ); +SELECT * FROM t1; +a b +1 foo +1 abc +DROP TABLE t1, t2; +create table t1 (a int not null, b int, c int) engine=InnoDB; +create table t2 (d int, e int) engine=InnoDB; +update t1, t2 set a=NULL, b=2, c=NULL where b=d and e=200; +drop table t1,t2; +set @@optimizer_use_condition_selectivity= @save_optimizer_use_condition_selectivity; +set @@use_stat_tables= @save_use_stat_tables; +CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY) engine=innodb; +CREATE TABLE t2 (a INT NOT NULL PRIMARY KEY) engine=innodb; INSERT INTO t1 VALUES (1); INSERT INTO t2 VALUES (2); BEGIN; @@ -90,8 +114,8 @@ a commit; connection default; drop table t1,t2; -CREATE OR REPLACE TABLE t1 (a INT NOT NULL PRIMARY KEY) engine=innodb; -CREATE OR REPLACE TABLE t2 (a INT NOT NULL PRIMARY KEY) engine=innodb; +CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY) engine=innodb; +CREATE TABLE t2 (a INT NOT NULL PRIMARY KEY) engine=innodb; INSERT INTO t1 VALUES (1); INSERT INTO t2 VALUES (2); BEGIN; diff --git a/mysql-test/main/update_innodb.test b/mysql-test/main/update_innodb.test index 01b2724191e..a5c6acf8620 100644 --- a/mysql-test/main/update_innodb.test +++ b/mysql-test/main/update_innodb.test @@ -77,10 +77,37 @@ SELECT * FROM t1; drop table t1,t2; ---source include/have_innodb.inc +--echo # +--echo # MDEV-18300: ASAN error in Field_blob::get_key_image upon UPDATE with subquery +--echo # + +set @save_optimizer_use_condition_selectivity= @@optimizer_use_condition_selectivity; +set @save_use_stat_tables= @@use_stat_tables; +set use_stat_tables=preferably; +set optimizer_use_condition_selectivity=4; + +CREATE TABLE t1 (a INT, b CHAR(8)) ENGINE=InnoDB; +insert into t1 values (1,'foo'),(2, 'abc'); +CREATE TABLE t2 (c CHAR(8), d BLOB) ENGINE=InnoDB; +insert into t2 values ('abc', 'foo'),('edf', 'food'); + +--disable_result_log +ANALYZE TABLE t1,t2; +--enable_result_log +UPDATE t1 SET a = 1 WHERE b = ( SELECT c FROM t2 WHERE d = 'foo' ); +SELECT * FROM t1; +DROP TABLE t1, t2; + +create table t1 (a int not null, b int, c int) engine=InnoDB; +create table t2 (d int, e int) engine=InnoDB; +update t1, t2 set a=NULL, b=2, c=NULL where b=d and e=200; +drop table t1,t2; + +set @@optimizer_use_condition_selectivity= @save_optimizer_use_condition_selectivity; +set @@use_stat_tables= @save_use_stat_tables; -CREATE OR REPLACE TABLE t1 (a INT NOT NULL PRIMARY KEY) engine=innodb; -CREATE OR REPLACE TABLE t2 (a INT NOT NULL PRIMARY KEY) engine=innodb; +CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY) engine=innodb; +CREATE TABLE t2 (a INT NOT NULL PRIMARY KEY) engine=innodb; INSERT INTO t1 VALUES (1); INSERT INTO t2 VALUES (2); BEGIN; @@ -105,8 +132,8 @@ commit; drop table t1,t2; -CREATE OR REPLACE TABLE t1 (a INT NOT NULL PRIMARY KEY) engine=innodb; -CREATE OR REPLACE TABLE t2 (a INT NOT NULL PRIMARY KEY) engine=innodb; +CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY) engine=innodb; +CREATE TABLE t2 (a INT NOT NULL PRIMARY KEY) engine=innodb; INSERT INTO t1 VALUES (1); INSERT INTO t2 VALUES (2); BEGIN; diff --git a/mysql-test/main/win.result b/mysql-test/main/win.result index 2cc342a0cab..e9b2a0842f0 100644 --- a/mysql-test/main/win.result +++ b/mysql-test/main/win.result @@ -3506,6 +3506,18 @@ id a b sum_a_b 2 2 2 4 drop table t1; # +# MDEV-15837: Assertion `item1->type() == Item::FIELD_ITEM && item2->type() == Item::FIELD_ITEM' +# failed in compare_order_elements function +# +CREATE TABLE t1 (a1 int); +insert into t1 values (1),(2),(3); +SELECT rank() OVER (ORDER BY 1), ROW_NUMBER() OVER (ORDER BY (EXPORT_SET(5,'Y','N',',',4))) FROM t1; +rank() OVER (ORDER BY 1) ROW_NUMBER() OVER (ORDER BY (EXPORT_SET(5,'Y','N',',',4))) +1 1 +1 2 +1 3 +drop table t1; +# # End of 10.2 tests # # diff --git a/mysql-test/main/win.test b/mysql-test/main/win.test index 1f27e4b9226..c68e80614b6 100644 --- a/mysql-test/main/win.test +++ b/mysql-test/main/win.test @@ -2256,6 +2256,16 @@ from t1 e; drop table t1; --echo # +--echo # MDEV-15837: Assertion `item1->type() == Item::FIELD_ITEM && item2->type() == Item::FIELD_ITEM' +--echo # failed in compare_order_elements function +--echo # + +CREATE TABLE t1 (a1 int); +insert into t1 values (1),(2),(3); +SELECT rank() OVER (ORDER BY 1), ROW_NUMBER() OVER (ORDER BY (EXPORT_SET(5,'Y','N',',',4))) FROM t1; +drop table t1; + +--echo # --echo # End of 10.2 tests --echo # diff --git a/mysql-test/suite/archive/archive_eits.result b/mysql-test/suite/archive/archive_eits.result new file mode 100644 index 00000000000..e077c2e4954 --- /dev/null +++ b/mysql-test/suite/archive/archive_eits.result @@ -0,0 +1,24 @@ +drop table if exists t1; +# +# MDEV-17297: stats.records=0 for a table of Archive engine when it has rows, when we run ANALYZE command +# +CREATE TABLE t1 (fid INTEGER PRIMARY KEY AUTO_INCREMENT, g POINT)engine=archive; +INSERT INTO t1 VALUES +(101, PointFromText('POINT(10 10)')), +(102, PointFromText('POINT(20 10)')), +(103, PointFromText('POINT(20 20)')), +(104, PointFromWKB(AsWKB(PointFromText('POINT(10 20)')))); +set @tmp1= @@optimizer_use_condition_selectivity; +set @tmp2= @@use_stat_tables; +set optimizer_use_condition_selectivity=4; +set use_stat_tables=PREFERABLY; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status Engine-independent statistics collected +test.t1 analyze note The storage engine for the table doesn't support analyze +select * from mysql.table_stats where table_name='t1' and db_name=database(); +db_name table_name cardinality +test t1 4 +drop table t1; +set optimizer_use_condition_selectivity=@tmp1; +set use_stat_tables=@tmp2; diff --git a/mysql-test/suite/archive/archive_eits.test b/mysql-test/suite/archive/archive_eits.test new file mode 100644 index 00000000000..04c4ccdb709 --- /dev/null +++ b/mysql-test/suite/archive/archive_eits.test @@ -0,0 +1,32 @@ +-- source include/have_archive.inc + +--disable_warnings +drop table if exists t1; +--enable_warnings + +--echo # +--echo # MDEV-17297: stats.records=0 for a table of Archive engine when it has rows, when we run ANALYZE command +--echo # + +CREATE TABLE t1 (fid INTEGER PRIMARY KEY AUTO_INCREMENT, g POINT)engine=archive; +INSERT INTO t1 VALUES +(101, PointFromText('POINT(10 10)')), +(102, PointFromText('POINT(20 10)')), +(103, PointFromText('POINT(20 20)')), +(104, PointFromWKB(AsWKB(PointFromText('POINT(10 20)')))); + +set @tmp1= @@optimizer_use_condition_selectivity; +set @tmp2= @@use_stat_tables; + +set optimizer_use_condition_selectivity=4; +set use_stat_tables=PREFERABLY; +ANALYZE TABLE t1; + +select * from mysql.table_stats where table_name='t1' and db_name=database(); + +drop table t1; + +set optimizer_use_condition_selectivity=@tmp1; +set use_stat_tables=@tmp2; + + diff --git a/mysql-test/suite/compat/oracle/r/information_schema_parameters.result b/mysql-test/suite/compat/oracle/r/information_schema_parameters.result index e1ed53c39de..f7e9bfcafb9 100644 --- a/mysql-test/suite/compat/oracle/r/information_schema_parameters.result +++ b/mysql-test/suite/compat/oracle/r/information_schema_parameters.result @@ -814,3 +814,41 @@ DTD_IDENTIFIER ROW ROUTINE_TYPE FUNCTION -------- -------- DROP FUNCTION f1; +# +# MDEV 18092 Query with the table I_S.PARAMETERS stop working +# after a package is created +# +SET sql_mode=ORACLE; +CREATE DATABASE db1_mdev18092; +USE db1_mdev18092; +CREATE PROCEDURE p1(a INT) +AS BEGIN +NULL; +END; +$$ +CREATE OR REPLACE PACKAGE employee_tools AS +FUNCTION getSalary(eid INT) RETURN DECIMAL(10,2); +PROCEDURE raiseSalary(eid INT, amount DECIMAL(10,2)); +PROCEDURE raiseSalaryStd(eid INT); +PROCEDURE hire(ename TEXT, esalary DECIMAL(10,2)); +END; +$$ +SELECT *, '---------------' FROM INFORMATION_SCHEMA.PARAMETERS WHERE SPECIFIC_SCHEMA='db1_mdev18092'; +SPECIFIC_CATALOG def +SPECIFIC_SCHEMA db1_mdev18092 +SPECIFIC_NAME p1 +ORDINAL_POSITION 1 +PARAMETER_MODE IN +PARAMETER_NAME a +DATA_TYPE int +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION 10 +NUMERIC_SCALE 0 +DATETIME_PRECISION NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL +DTD_IDENTIFIER int(11) +ROUTINE_TYPE PROCEDURE +--------------- --------------- +DROP DATABASE db1_mdev18092; diff --git a/mysql-test/suite/compat/oracle/t/information_schema_parameters.test b/mysql-test/suite/compat/oracle/t/information_schema_parameters.test index af241661939..c13a59103dd 100644 --- a/mysql-test/suite/compat/oracle/t/information_schema_parameters.test +++ b/mysql-test/suite/compat/oracle/t/information_schema_parameters.test @@ -92,3 +92,36 @@ SET sql_mode=ORACLE; SELECT *, '--------' FROM INFORMATION_SCHEMA.PARAMETERS WHERE SPECIFIC_NAME='f1'; --horizontal_results DROP FUNCTION f1; + +--echo # +--echo # MDEV 18092 Query with the table I_S.PARAMETERS stop working +--echo # after a package is created +--echo # + +SET sql_mode=ORACLE; + +CREATE DATABASE db1_mdev18092; +USE db1_mdev18092; + +DELIMITER $$; + +CREATE PROCEDURE p1(a INT) +AS BEGIN + NULL; +END; +$$ + +CREATE OR REPLACE PACKAGE employee_tools AS + FUNCTION getSalary(eid INT) RETURN DECIMAL(10,2); + PROCEDURE raiseSalary(eid INT, amount DECIMAL(10,2)); + PROCEDURE raiseSalaryStd(eid INT); + PROCEDURE hire(ename TEXT, esalary DECIMAL(10,2)); +END; +$$ +DELIMITER ;$$ + +--vertical_results +SELECT *, '---------------' FROM INFORMATION_SCHEMA.PARAMETERS WHERE SPECIFIC_SCHEMA='db1_mdev18092'; +--horizontal_results + +DROP DATABASE db1_mdev18092; diff --git a/mysql-test/suite/innodb/r/foreign_key.result b/mysql-test/suite/innodb/r/foreign_key.result index 75dfeaf5d5a..0015882690e 100644 --- a/mysql-test/suite/innodb/r/foreign_key.result +++ b/mysql-test/suite/innodb/r/foreign_key.result @@ -262,10 +262,18 @@ ALTER IGNORE TABLE t1 ADD FOREIGN KEY (a) REFERENCES t2 (b); ERROR HY000: Can't create table `test`.`t1` (errno: 150 "Foreign key constraint is incorrectly formed") SHOW WARNINGS; Level Code Message -Warning 150 Alter table test/#sql-temporary with foreign key constraint failed. Referenced table `test`.`t2` not found in the data dictionary near 'FOREIGN KEY (a) REFERENCES t2 (b)'. +Warning 150 Alter table `test`.`t1` with foreign key constraint failed. Referenced table `test`.`t2` not found in the data dictionary near 'FOREIGN KEY (a) REFERENCES t2 (b)'. Error 1005 Can't create table `test`.`t1` (errno: 150 "Foreign key constraint is incorrectly formed") Warning 1215 Cannot add foreign key constraint for `t1` DROP TABLE t1; +# +# MDEV-18139 ALTER IGNORE ... ADD FOREIGN KEY causes bogus error +# +CREATE TABLE t1 (f1 INT, f2 INT, f3 INT, KEY(f1)) ENGINE=InnoDB; +CREATE TABLE t2 (f INT, KEY(f)) ENGINE=InnoDB; +ALTER TABLE t1 ADD FOREIGN KEY (f2) REFERENCES t2 (f); +ALTER IGNORE TABLE t1 ADD FOREIGN KEY (f3) REFERENCES t1 (f1); +DROP TABLE t1, t2; # Start of 10.2 tests # # MDEV-13246 Stale rows despite ON DELETE CASCADE constraint diff --git a/mysql-test/suite/innodb/r/innodb_stats_fetch.result b/mysql-test/suite/innodb/r/innodb_stats_fetch.result index 67437c46cd3..d7b7d78ec71 100644 --- a/mysql-test/suite/innodb/r/innodb_stats_fetch.result +++ b/mysql-test/suite/innodb/r/innodb_stats_fetch.result @@ -1,3 +1,5 @@ +set @save_use_stat_tables = @@use_stat_tables; +set @@use_stat_tables = COMPLEMENTARY; CREATE TABLE test_ps_fetch (a INT, b INT, c INT, d INT, PRIMARY KEY (a, b), INDEX idx (c, d)) ENGINE=INNODB STATS_PERSISTENT=1; @@ -147,3 +149,4 @@ avg_row_length 81 max_data_length 0 index_length 16384 DROP TABLE test_ps_fetch; +set @@use_stat_tables = @save_use_stat_tables; diff --git a/mysql-test/suite/innodb/r/xa_debug.result b/mysql-test/suite/innodb/r/xa_debug.result new file mode 100644 index 00000000000..902166f51c8 --- /dev/null +++ b/mysql-test/suite/innodb/r/xa_debug.result @@ -0,0 +1,361 @@ +call mtr.add_suppression("Found 50 prepared XA transactions"); +create table t1 (a int) engine=innodb; +insert into t1 values(1); +connect con$trial, localhost, root,,; +xa start 'test50'; +insert into t1 values(1); +xa end 'test50'; +xa prepare 'test50'; +connect con$trial, localhost, root,,; +xa start 'test49'; +insert into t1 values(1); +xa end 'test49'; +xa prepare 'test49'; +connect con$trial, localhost, root,,; +xa start 'test48'; +insert into t1 values(1); +xa end 'test48'; +xa prepare 'test48'; +connect con$trial, localhost, root,,; +xa start 'test47'; +insert into t1 values(1); +xa end 'test47'; +xa prepare 'test47'; +connect con$trial, localhost, root,,; +xa start 'test46'; +insert into t1 values(1); +xa end 'test46'; +xa prepare 'test46'; +connect con$trial, localhost, root,,; +xa start 'test45'; +insert into t1 values(1); +xa end 'test45'; +xa prepare 'test45'; +connect con$trial, localhost, root,,; +xa start 'test44'; +insert into t1 values(1); +xa end 'test44'; +xa prepare 'test44'; +connect con$trial, localhost, root,,; +xa start 'test43'; +insert into t1 values(1); +xa end 'test43'; +xa prepare 'test43'; +connect con$trial, localhost, root,,; +xa start 'test42'; +insert into t1 values(1); +xa end 'test42'; +xa prepare 'test42'; +connect con$trial, localhost, root,,; +xa start 'test41'; +insert into t1 values(1); +xa end 'test41'; +xa prepare 'test41'; +connect con$trial, localhost, root,,; +xa start 'test40'; +insert into t1 values(1); +xa end 'test40'; +xa prepare 'test40'; +connect con$trial, localhost, root,,; +xa start 'test39'; +insert into t1 values(1); +xa end 'test39'; +xa prepare 'test39'; +connect con$trial, localhost, root,,; +xa start 'test38'; +insert into t1 values(1); +xa end 'test38'; +xa prepare 'test38'; +connect con$trial, localhost, root,,; +xa start 'test37'; +insert into t1 values(1); +xa end 'test37'; +xa prepare 'test37'; +connect con$trial, localhost, root,,; +xa start 'test36'; +insert into t1 values(1); +xa end 'test36'; +xa prepare 'test36'; +connect con$trial, localhost, root,,; +xa start 'test35'; +insert into t1 values(1); +xa end 'test35'; +xa prepare 'test35'; +connect con$trial, localhost, root,,; +xa start 'test34'; +insert into t1 values(1); +xa end 'test34'; +xa prepare 'test34'; +connect con$trial, localhost, root,,; +xa start 'test33'; +insert into t1 values(1); +xa end 'test33'; +xa prepare 'test33'; +connect con$trial, localhost, root,,; +xa start 'test32'; +insert into t1 values(1); +xa end 'test32'; +xa prepare 'test32'; +connect con$trial, localhost, root,,; +xa start 'test31'; +insert into t1 values(1); +xa end 'test31'; +xa prepare 'test31'; +connect con$trial, localhost, root,,; +xa start 'test30'; +insert into t1 values(1); +xa end 'test30'; +xa prepare 'test30'; +connect con$trial, localhost, root,,; +xa start 'test29'; +insert into t1 values(1); +xa end 'test29'; +xa prepare 'test29'; +connect con$trial, localhost, root,,; +xa start 'test28'; +insert into t1 values(1); +xa end 'test28'; +xa prepare 'test28'; +connect con$trial, localhost, root,,; +xa start 'test27'; +insert into t1 values(1); +xa end 'test27'; +xa prepare 'test27'; +connect con$trial, localhost, root,,; +xa start 'test26'; +insert into t1 values(1); +xa end 'test26'; +xa prepare 'test26'; +connect con$trial, localhost, root,,; +xa start 'test25'; +insert into t1 values(1); +xa end 'test25'; +xa prepare 'test25'; +connect con$trial, localhost, root,,; +xa start 'test24'; +insert into t1 values(1); +xa end 'test24'; +xa prepare 'test24'; +connect con$trial, localhost, root,,; +xa start 'test23'; +insert into t1 values(1); +xa end 'test23'; +xa prepare 'test23'; +connect con$trial, localhost, root,,; +xa start 'test22'; +insert into t1 values(1); +xa end 'test22'; +xa prepare 'test22'; +connect con$trial, localhost, root,,; +xa start 'test21'; +insert into t1 values(1); +xa end 'test21'; +xa prepare 'test21'; +connect con$trial, localhost, root,,; +xa start 'test20'; +insert into t1 values(1); +xa end 'test20'; +xa prepare 'test20'; +connect con$trial, localhost, root,,; +xa start 'test19'; +insert into t1 values(1); +xa end 'test19'; +xa prepare 'test19'; +connect con$trial, localhost, root,,; +xa start 'test18'; +insert into t1 values(1); +xa end 'test18'; +xa prepare 'test18'; +connect con$trial, localhost, root,,; +xa start 'test17'; +insert into t1 values(1); +xa end 'test17'; +xa prepare 'test17'; +connect con$trial, localhost, root,,; +xa start 'test16'; +insert into t1 values(1); +xa end 'test16'; +xa prepare 'test16'; +connect con$trial, localhost, root,,; +xa start 'test15'; +insert into t1 values(1); +xa end 'test15'; +xa prepare 'test15'; +connect con$trial, localhost, root,,; +xa start 'test14'; +insert into t1 values(1); +xa end 'test14'; +xa prepare 'test14'; +connect con$trial, localhost, root,,; +xa start 'test13'; +insert into t1 values(1); +xa end 'test13'; +xa prepare 'test13'; +connect con$trial, localhost, root,,; +xa start 'test12'; +insert into t1 values(1); +xa end 'test12'; +xa prepare 'test12'; +connect con$trial, localhost, root,,; +xa start 'test11'; +insert into t1 values(1); +xa end 'test11'; +xa prepare 'test11'; +connect con$trial, localhost, root,,; +xa start 'test10'; +insert into t1 values(1); +xa end 'test10'; +xa prepare 'test10'; +connect con$trial, localhost, root,,; +xa start 'test9'; +insert into t1 values(1); +xa end 'test9'; +xa prepare 'test9'; +connect con$trial, localhost, root,,; +xa start 'test8'; +insert into t1 values(1); +xa end 'test8'; +xa prepare 'test8'; +connect con$trial, localhost, root,,; +xa start 'test7'; +insert into t1 values(1); +xa end 'test7'; +xa prepare 'test7'; +connect con$trial, localhost, root,,; +xa start 'test6'; +insert into t1 values(1); +xa end 'test6'; +xa prepare 'test6'; +connect con$trial, localhost, root,,; +xa start 'test5'; +insert into t1 values(1); +xa end 'test5'; +xa prepare 'test5'; +connect con$trial, localhost, root,,; +xa start 'test4'; +insert into t1 values(1); +xa end 'test4'; +xa prepare 'test4'; +connect con$trial, localhost, root,,; +xa start 'test3'; +insert into t1 values(1); +xa end 'test3'; +xa prepare 'test3'; +connect con$trial, localhost, root,,; +xa start 'test2'; +insert into t1 values(1); +xa end 'test2'; +xa prepare 'test2'; +connect con$trial, localhost, root,,; +xa start 'test1'; +insert into t1 values(1); +xa end 'test1'; +xa prepare 'test1'; +connection default; +xa recover; +formatID gtrid_length bqual_length data +1 5 0 test1 +1 5 0 test2 +1 5 0 test3 +1 5 0 test4 +1 5 0 test5 +1 5 0 test6 +1 5 0 test7 +1 5 0 test8 +1 5 0 test9 +1 6 0 test10 +1 6 0 test11 +1 6 0 test12 +1 6 0 test13 +1 6 0 test14 +1 6 0 test15 +1 6 0 test16 +1 6 0 test17 +1 6 0 test18 +1 6 0 test19 +1 6 0 test20 +1 6 0 test21 +1 6 0 test22 +1 6 0 test23 +1 6 0 test24 +1 6 0 test25 +1 6 0 test26 +1 6 0 test27 +1 6 0 test28 +1 6 0 test29 +1 6 0 test30 +1 6 0 test31 +1 6 0 test32 +1 6 0 test33 +1 6 0 test34 +1 6 0 test35 +1 6 0 test36 +1 6 0 test37 +1 6 0 test38 +1 6 0 test39 +1 6 0 test40 +1 6 0 test41 +1 6 0 test42 +1 6 0 test43 +1 6 0 test44 +1 6 0 test45 +1 6 0 test46 +1 6 0 test47 +1 6 0 test48 +1 6 0 test49 +1 6 0 test50 +xa recover; +formatID gtrid_length bqual_length data +1 5 0 test1 +1 5 0 test2 +1 5 0 test3 +1 5 0 test4 +1 5 0 test5 +1 5 0 test6 +1 5 0 test7 +1 5 0 test8 +1 5 0 test9 +1 6 0 test10 +1 6 0 test11 +1 6 0 test12 +1 6 0 test13 +1 6 0 test14 +1 6 0 test15 +1 6 0 test16 +1 6 0 test17 +1 6 0 test18 +1 6 0 test19 +1 6 0 test20 +1 6 0 test21 +1 6 0 test22 +1 6 0 test23 +1 6 0 test24 +1 6 0 test25 +1 6 0 test26 +1 6 0 test27 +1 6 0 test28 +1 6 0 test29 +1 6 0 test30 +1 6 0 test31 +1 6 0 test32 +1 6 0 test33 +1 6 0 test34 +1 6 0 test35 +1 6 0 test36 +1 6 0 test37 +1 6 0 test38 +1 6 0 test39 +1 6 0 test40 +1 6 0 test41 +1 6 0 test42 +1 6 0 test43 +1 6 0 test44 +1 6 0 test45 +1 6 0 test46 +1 6 0 test47 +1 6 0 test48 +1 6 0 test49 +1 6 0 test50 +xa recover; +formatID gtrid_length bqual_length data +drop table t1; diff --git a/mysql-test/suite/innodb/t/foreign_key.test b/mysql-test/suite/innodb/t/foreign_key.test index a4e045d4d5e..e7ba5530b19 100644 --- a/mysql-test/suite/innodb/t/foreign_key.test +++ b/mysql-test/suite/innodb/t/foreign_key.test @@ -244,10 +244,18 @@ DROP TABLE t1; CREATE TABLE t1 (a INT) ENGINE=InnoDB; --error ER_CANT_CREATE_TABLE ALTER IGNORE TABLE t1 ADD FOREIGN KEY (a) REFERENCES t2 (b); ---replace_regex /#sql-[0-9_a-f-]*/#sql-temporary/ SHOW WARNINGS; DROP TABLE t1; +--echo # +--echo # MDEV-18139 ALTER IGNORE ... ADD FOREIGN KEY causes bogus error +--echo # +CREATE TABLE t1 (f1 INT, f2 INT, f3 INT, KEY(f1)) ENGINE=InnoDB; +CREATE TABLE t2 (f INT, KEY(f)) ENGINE=InnoDB; +ALTER TABLE t1 ADD FOREIGN KEY (f2) REFERENCES t2 (f); +ALTER IGNORE TABLE t1 ADD FOREIGN KEY (f3) REFERENCES t1 (f1); +DROP TABLE t1, t2; + --echo # Start of 10.2 tests --echo # diff --git a/mysql-test/suite/innodb/t/innodb_stats.test b/mysql-test/suite/innodb/t/innodb_stats.test index b9f71f8fa6f..09515ec9720 100644 --- a/mysql-test/suite/innodb/t/innodb_stats.test +++ b/mysql-test/suite/innodb/t/innodb_stats.test @@ -9,6 +9,9 @@ DROP TABLE IF EXISTS test_innodb_stats; +set @save_use_stat_tables= @@use_stat_tables; +set @@use_stat_tables= COMPLEMENTARY; + CREATE TABLE test_innodb_stats ( a INT, KEY a_key (a) @@ -59,3 +62,4 @@ CREATE TABLE test_innodb_stats ( -- disable_query_log DROP TABLE test_innodb_stats; +set @@use_stat_tables= @save_use_stat_tables; diff --git a/mysql-test/suite/innodb/t/innodb_stats_fetch.test b/mysql-test/suite/innodb/t/innodb_stats_fetch.test index 8544509ccad..549ad65feff 100644 --- a/mysql-test/suite/innodb/t/innodb_stats_fetch.test +++ b/mysql-test/suite/innodb/t/innodb_stats_fetch.test @@ -11,6 +11,9 @@ -- vertical_results +set @save_use_stat_tables = @@use_stat_tables; +set @@use_stat_tables = COMPLEMENTARY; + CREATE TABLE test_ps_fetch (a INT, b INT, c INT, d INT, PRIMARY KEY (a, b), INDEX idx (c, d)) ENGINE=INNODB STATS_PERSISTENT=1; @@ -77,3 +80,4 @@ table_rows, avg_row_length, max_data_length, index_length FROM information_schema.tables WHERE table_name = 'test_ps_fetch'; DROP TABLE test_ps_fetch; +set @@use_stat_tables = @save_use_stat_tables; diff --git a/mysql-test/suite/innodb/t/xa_debug.test b/mysql-test/suite/innodb/t/xa_debug.test new file mode 100644 index 00000000000..5724891bb65 --- /dev/null +++ b/mysql-test/suite/innodb/t/xa_debug.test @@ -0,0 +1,45 @@ +-- source include/have_innodb.inc +-- source include/have_debug.inc +-- source include/not_embedded.inc + +call mtr.add_suppression("Found 50 prepared XA transactions"); +create table t1 (a int) engine=innodb; +insert into t1 values(1); + +let $trial = 50; +while ($trial) +{ +--connect (con$trial, localhost, root,,) +let $st_pre = `select concat('test', $trial)`; +eval xa start '$st_pre'; +insert into t1 values(1); +eval xa end '$st_pre'; +eval xa prepare '$st_pre'; +dec $trial; +} + +connection default; +# Kill and restart the server. +-- exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect +-- shutdown_server 0 +-- source include/wait_until_disconnected.inc + +-- exec echo "restart:--debug_dbug=+d,min_xa_len" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect +-- enable_reconnect +-- source include/wait_until_connected_again.inc +-- disable_reconnect +--sorted_result +xa recover; +--sorted_result +xa recover; +--disable_query_log +let $trial = 50; +while ($trial) +{ +let $st_pre = `select concat('test', $trial)`; +eval xa commit '$st_pre'; +dec $trial; +} +--enable_query_log +xa recover; +drop table t1; diff --git a/mysql-test/suite/maria/maria.result b/mysql-test/suite/maria/maria.result index 5646e36d4bd..3e8575d2689 100644 --- a/mysql-test/suite/maria/maria.result +++ b/mysql-test/suite/maria/maria.result @@ -751,6 +751,8 @@ show index from t1; Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment t1 1 a 1 a A 10 NULL NULL YES BTREE set aria_stats_method=nulls_equal; +set @save_use_stat_tables= @@use_stat_tables; +set @@use_stat_tables= COMPLEMENTARY; show variables like 'aria_stats_method'; Variable_name Value aria_stats_method nulls_equal @@ -770,7 +772,8 @@ Table Op Msg_type Msg_text test.t1 check status OK show index from t1; Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment -t1 1 a 1 a A 10 NULL NULL YES BTREE +t1 1 a 1 a A 5 NULL NULL YES BTREE +set @@use_stat_tables= @save_use_stat_tables; set aria_stats_method=DEFAULT; show variables like 'aria_stats_method'; Variable_name Value @@ -797,6 +800,8 @@ set aria_stats_method=nulls_ignored; show variables like 'aria_stats_method'; Variable_name Value aria_stats_method nulls_ignored +set @save_use_stat_tables= @@use_stat_tables; +set @@use_stat_tables= COMPLEMENTARY; create table t1 ( a char(3), b char(4), c char(5), d char(6), key(a,b,c,d) @@ -826,6 +831,7 @@ t1 1 a 1 a A 0 NULL NULL YES BTREE t1 1 a 2 b A 0 NULL NULL YES BTREE t1 1 a 3 c A 0 NULL NULL YES BTREE t1 1 a 4 d A 0 NULL NULL YES BTREE +set @@use_stat_tables= @save_use_stat_tables; set aria_stats_method=DEFAULT; drop table t1; create table t1( diff --git a/mysql-test/suite/maria/maria.test b/mysql-test/suite/maria/maria.test index 873dbc52aa5..d5b9d839699 100644 --- a/mysql-test/suite/maria/maria.test +++ b/mysql-test/suite/maria/maria.test @@ -699,6 +699,10 @@ show index from t1; # Set nulls to be equal: set aria_stats_method=nulls_equal; + +set @save_use_stat_tables= @@use_stat_tables; +set @@use_stat_tables= COMPLEMENTARY; + show variables like 'aria_stats_method'; insert into t1 values (11); delete from t1 where a=11; @@ -712,6 +716,7 @@ delete from t1 where a=11; check table t1; show index from t1; +set @@use_stat_tables= @save_use_stat_tables; # Set nulls back to be equal set aria_stats_method=DEFAULT; show variables like 'aria_stats_method'; @@ -733,6 +738,9 @@ drop table t1; set aria_stats_method=nulls_ignored; show variables like 'aria_stats_method'; +set @save_use_stat_tables= @@use_stat_tables; +set @@use_stat_tables= COMPLEMENTARY; + create table t1 ( a char(3), b char(4), c char(5), d char(6), key(a,b,c,d) @@ -751,6 +759,7 @@ delete from t1; analyze table t1; show index from t1; +set @@use_stat_tables= @save_use_stat_tables; set aria_stats_method=DEFAULT; drop table t1; diff --git a/mysql-test/suite/perfschema/r/privilege_table_io.result b/mysql-test/suite/perfschema/r/privilege_table_io.result index 2cdcb494d6a..73abba1c931 100644 --- a/mysql-test/suite/perfschema/r/privilege_table_io.result +++ b/mysql-test/suite/perfschema/r/privilege_table_io.result @@ -110,6 +110,17 @@ wait/io/table/sql/handler handler.cc: TABLE mysql proxies_priv fetch NULL wait/io/table/sql/handler handler.cc: TABLE mysql roles_mapping fetch NULL wait/io/table/sql/handler handler.cc: TABLE mysql tables_priv fetch NULL wait/io/table/sql/handler handler.cc: TABLE mysql procs_priv fetch NULL +wait/io/table/sql/handler handler.cc: TABLE mysql table_stats fetch NULL +wait/io/table/sql/handler handler.cc: TABLE mysql column_stats fetch NULL +wait/io/table/sql/handler handler.cc: TABLE mysql column_stats fetch NULL +wait/io/table/sql/handler handler.cc: TABLE mysql column_stats fetch NULL +wait/io/table/sql/handler handler.cc: TABLE mysql column_stats fetch NULL +wait/io/table/sql/handler handler.cc: TABLE mysql column_stats fetch NULL +wait/io/table/sql/handler handler.cc: TABLE mysql column_stats fetch NULL +wait/io/table/sql/handler handler.cc: TABLE mysql column_stats fetch NULL +wait/io/table/sql/handler handler.cc: TABLE mysql column_stats fetch NULL +wait/io/table/sql/handler handler.cc: TABLE mysql column_stats fetch NULL +wait/io/table/sql/handler handler.cc: TABLE mysql index_stats fetch NULL wait/io/table/sql/handler handler.cc: TABLE mysql servers fetch NULL wait/io/table/sql/handler handler.cc: TABLE mysql table_stats fetch NULL wait/io/table/sql/handler handler.cc: TABLE mysql column_stats fetch NULL diff --git a/mysql-test/suite/rpl/r/rpl_row_big_table_id.result b/mysql-test/suite/rpl/r/rpl_row_big_table_id.result index 7a0a964dc5e..6fece52dda3 100644 --- a/mysql-test/suite/rpl/r/rpl_row_big_table_id.result +++ b/mysql-test/suite/rpl/r/rpl_row_big_table_id.result @@ -22,22 +22,22 @@ master-bin.000002 # Gtid 1 # GTID #-#-# master-bin.000002 # Query 1 # use `test`; ALTER TABLE t comment '' master-bin.000002 # Gtid 1 # BEGIN GTID #-#-# master-bin.000002 # Annotate_rows 1 # INSERT INTO t SET a= 1 -master-bin.000002 # Table_map 1 # table_id: 4294967298 (test.t) -master-bin.000002 # Write_rows_v1 1 # table_id: 4294967298 flags: STMT_END_F +master-bin.000002 # Table_map 1 # table_id: 4294967295 (test.t) +master-bin.000002 # Write_rows_v1 1 # table_id: 4294967295 flags: STMT_END_F master-bin.000002 # Query 1 # COMMIT master-bin.000002 # Gtid 1 # GTID #-#-# master-bin.000002 # Query 1 # use `test`; ALTER TABLE t comment '' master-bin.000002 # Gtid 1 # BEGIN GTID #-#-# master-bin.000002 # Annotate_rows 1 # INSERT INTO t SET a= 2 -master-bin.000002 # Table_map 1 # table_id: 4294967299 (test.t) -master-bin.000002 # Write_rows_v1 1 # table_id: 4294967299 flags: STMT_END_F +master-bin.000002 # Table_map 1 # table_id: 4294967296 (test.t) +master-bin.000002 # Write_rows_v1 1 # table_id: 4294967296 flags: STMT_END_F master-bin.000002 # Query 1 # COMMIT master-bin.000002 # Gtid 1 # GTID #-#-# master-bin.000002 # Query 1 # use `test`; ALTER TABLE t comment '' master-bin.000002 # Gtid 1 # BEGIN GTID #-#-# master-bin.000002 # Annotate_rows 1 # INSERT INTO t SET a= 3 -master-bin.000002 # Table_map 1 # table_id: 4294967300 (test.t) -master-bin.000002 # Write_rows_v1 1 # table_id: 4294967300 flags: STMT_END_F +master-bin.000002 # Table_map 1 # table_id: 4294967297 (test.t) +master-bin.000002 # Write_rows_v1 1 # table_id: 4294967297 flags: STMT_END_F master-bin.000002 # Query 1 # COMMIT connection slave; connection master; diff --git a/mysql-test/suite/rpl/r/rpl_semi_sync_wait_no_slave.result b/mysql-test/suite/rpl/r/rpl_semi_sync_wait_no_slave.result new file mode 100644 index 00000000000..4bf6af2714d --- /dev/null +++ b/mysql-test/suite/rpl/r/rpl_semi_sync_wait_no_slave.result @@ -0,0 +1,8 @@ +include/master-slave.inc +[connection master] +connection master; +CREATE TABLE t1 (a INT); +INSERT INTO t1 SET a=1; +DROP TABLE t1; +connection slave; +include/rpl_end.inc diff --git a/mysql-test/suite/rpl/t/rpl_semi_sync_wait_no_slave-master.opt b/mysql-test/suite/rpl/t/rpl_semi_sync_wait_no_slave-master.opt new file mode 100644 index 00000000000..d84ebab5d56 --- /dev/null +++ b/mysql-test/suite/rpl/t/rpl_semi_sync_wait_no_slave-master.opt @@ -0,0 +1 @@ +--rpl_semi_sync_master_enabled=0 --rpl_semi_sync_master_wait_no_slave=0 diff --git a/mysql-test/suite/rpl/t/rpl_semi_sync_wait_no_slave.test b/mysql-test/suite/rpl/t/rpl_semi_sync_wait_no_slave.test new file mode 100644 index 00000000000..fecd0e25cb2 --- /dev/null +++ b/mysql-test/suite/rpl/t/rpl_semi_sync_wait_no_slave.test @@ -0,0 +1,14 @@ +# The test verifies master crash of MDEV-18096 when the server starts with +# rpl_semi_sync_master_enabled = OFF rpl_semi_sync_master_wait_no_slave = OFF + +--source include/master-slave.inc +--source include/have_binlog_format_mixed.inc + +--connection master +CREATE TABLE t1 (a INT); +INSERT INTO t1 SET a=1; +DROP TABLE t1; + +--sync_slave_with_master + +--source include/rpl_end.inc diff --git a/mysql-test/suite/sys_vars/r/myisam_stats_method_func.result b/mysql-test/suite/sys_vars/r/myisam_stats_method_func.result index 75fe06e2faf..1de1d195460 100644 --- a/mysql-test/suite/sys_vars/r/myisam_stats_method_func.result +++ b/mysql-test/suite/sys_vars/r/myisam_stats_method_func.result @@ -35,6 +35,8 @@ Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_par t1 1 a 1 a A 10 NULL NULL YES BTREE 'Set nulls to be equal' SET myisam_stats_method = nulls_equal; +set @save_use_stat_tables= @@use_stat_tables; +set @@use_stat_tables= COMPLEMENTARY; INSERT INTO t1 VALUES (11); DELETE FROM t1 WHERE a = 11; ANALYZE TABLE t1; @@ -51,7 +53,7 @@ Table Op Msg_type Msg_text test.t1 check status OK SHOW INDEX FROM t1; Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment -t1 1 a 1 a A 10 NULL NULL YES BTREE +t1 1 a 1 a A 5 NULL NULL YES BTREE 'Set nulls to be ignored' SET myisam_stats_method = nulls_ignored; SHOW VARIABLES LIKE 'myisam_stats_method'; @@ -88,5 +90,6 @@ t1 1 a 2 b A 0 NULL NULL YES BTREE t1 1 a 3 c A 0 NULL NULL YES BTREE t1 1 a 4 d A 0 NULL NULL YES BTREE SET myisam_stats_method = DEFAULT; +set @@use_stat_tables= @save_use_stat_tables; DROP TABLE t1; SET @@global.myisam_stats_method= @start_value; diff --git a/mysql-test/suite/sys_vars/t/myisam_stats_method_func.test b/mysql-test/suite/sys_vars/t/myisam_stats_method_func.test index 42335f00c41..5cb01958aff 100644 --- a/mysql-test/suite/sys_vars/t/myisam_stats_method_func.test +++ b/mysql-test/suite/sys_vars/t/myisam_stats_method_func.test @@ -65,6 +65,8 @@ SHOW INDEX FROM t1; --echo 'Set nulls to be equal' #===================================== SET myisam_stats_method = nulls_equal; +set @save_use_stat_tables= @@use_stat_tables; +set @@use_stat_tables= COMPLEMENTARY; INSERT INTO t1 VALUES (11); DELETE FROM t1 WHERE a = 11; @@ -75,6 +77,7 @@ DELETE FROM t1 WHERE a = 11; CHECK TABLE t1; SHOW INDEX FROM t1; + #===================================== --echo 'Set nulls to be ignored' #===================================== @@ -98,6 +101,7 @@ ANALYZE TABLE t1; SHOW INDEX FROM t1; SET myisam_stats_method = DEFAULT; +set @@use_stat_tables= @save_use_stat_tables; DROP TABLE t1; SET @@global.myisam_stats_method= @start_value; |