From 7af71b74a9579584bd32719a5d79352387a381b7 Mon Sep 17 00:00:00 2001 From: Sergey Petrunya Date: Fri, 7 Mar 2014 12:49:40 +0100 Subject: [PATCH 1/4] BUG#13731380: RANGE OPTIMIZER CALLS RECORDS_IN_RANGE() FOR OPEN RANGE - Backport testcase from mysql-5.6 --- mysql-test/r/range.result | 11 +++++++++++ mysql-test/r/range_mrr_icp.result | 11 +++++++++++ mysql-test/t/range.test | 9 +++++++++ 3 files changed, 31 insertions(+) diff --git a/mysql-test/r/range.result b/mysql-test/r/range.result index c0c67bd3e33..3568f886eb9 100644 --- a/mysql-test/r/range.result +++ b/mysql-test/r/range.result @@ -2047,6 +2047,17 @@ f1 f2 f3 f4 DROP TABLE t1; DROP VIEW v3; # +# BUG#13731380: RANGE OPTIMIZER CALLS RECORDS_IN_RANGE() FOR OPEN RANGE +# +CREATE TABLE t1 (pk INT PRIMARY KEY); +INSERT INTO t1 VALUES (1),(3),(5); +SELECT * FROM t1 WHERE pk <> 3 OR pk < 4; +pk +1 +3 +5 +DROP TABLE t1; +# # MDEV-5606: range optimizer: "x < y" is sargable, while "y > x" is not # create table t1(a int); diff --git a/mysql-test/r/range_mrr_icp.result b/mysql-test/r/range_mrr_icp.result index 0122fb15193..924682827f9 100644 --- a/mysql-test/r/range_mrr_icp.result +++ b/mysql-test/r/range_mrr_icp.result @@ -2049,6 +2049,17 @@ f1 f2 f3 f4 DROP TABLE t1; DROP VIEW v3; # +# BUG#13731380: RANGE OPTIMIZER CALLS RECORDS_IN_RANGE() FOR OPEN RANGE +# +CREATE TABLE t1 (pk INT PRIMARY KEY); +INSERT INTO t1 VALUES (1),(3),(5); +SELECT * FROM t1 WHERE pk <> 3 OR pk < 4; +pk +1 +3 +5 +DROP TABLE t1; +# # MDEV-5606: range optimizer: "x < y" is sargable, while "y > x" is not # create table t1(a int); diff --git a/mysql-test/t/range.test b/mysql-test/t/range.test index 5d744dba77a..a9a12db88d1 100644 --- a/mysql-test/t/range.test +++ b/mysql-test/t/range.test @@ -1639,6 +1639,15 @@ SELECT * FROM v3; DROP TABLE t1; DROP VIEW v3; +--echo # +--echo # BUG#13731380: RANGE OPTIMIZER CALLS RECORDS_IN_RANGE() FOR OPEN RANGE +--echo # + +CREATE TABLE t1 (pk INT PRIMARY KEY); +INSERT INTO t1 VALUES (1),(3),(5); +SELECT * FROM t1 WHERE pk <> 3 OR pk < 4; +DROP TABLE t1; + --echo # --echo # MDEV-5606: range optimizer: "x < y" is sargable, while "y > x" is not --echo # From f20cab1a8397c3ec4baeadb33c29e466ac977b59 Mon Sep 17 00:00:00 2001 From: Sergey Petrunya Date: Fri, 7 Mar 2014 13:00:20 +0100 Subject: [PATCH 2/4] BUG#13803810: TOO FEW ROWS RETURNED FOR RANGE ACCESS IN VARCHAR INDEX USING DATETIME VALUE - Backport the testcase from mysql-5.6 --- mysql-test/r/range.result | 54 +++++++++++++++++++++++++++++++ mysql-test/r/range_mrr_icp.result | 54 +++++++++++++++++++++++++++++++ mysql-test/t/range.test | 38 ++++++++++++++++++++++ 3 files changed, 146 insertions(+) diff --git a/mysql-test/r/range.result b/mysql-test/r/range.result index 3568f886eb9..01be3cbfe2c 100644 --- a/mysql-test/r/range.result +++ b/mysql-test/r/range.result @@ -2058,6 +2058,60 @@ pk 5 DROP TABLE t1; # +# BUG#13803810: TOO FEW ROWS RETURNED FOR RANGE ACCESS IN +# VARCHAR INDEX USING DATETIME VALUE + +CREATE TABLE t1 (a DATETIME); +INSERT INTO t1 VALUES ('2001-01-01 00:00:00'); +INSERT INTO t1 VALUES ('2001-01-01 11:22:33'); +CREATE TABLE t2 (b VARCHAR(64), KEY (b)); +INSERT INTO t2 VALUES ('2001-01-01'); +INSERT INTO t2 VALUES ('2001.01.01'); +INSERT INTO t2 VALUES ('2001#01#01'); +INSERT INTO t2 VALUES ('2001-01-01 00:00:00'); +INSERT INTO t2 VALUES ('2001-01-01 11:22:33'); + +# range/ref access cannot be used for this query + +EXPLAIN SELECT * FROM t2 WHERE b=CAST('2001-01-01' AS DATE); +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t2 index b b 67 NULL 5 Using where; Using index +SELECT * FROM t2 WHERE b=CAST('2001-01-01' AS DATE); +b +2001#01#01 +2001-01-01 +2001-01-01 00:00:00 +2001.01.01 + +# range/ref access cannot be used for any of the queries below. +# See BUG#13814468 about 'Range checked for each record' + +EXPLAIN SELECT * FROM t1, t2 WHERE a=b ORDER BY BINARY a, BINARY b; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ALL NULL NULL NULL NULL 2 Using temporary; Using filesort +1 SIMPLE t2 ALL b NULL NULL NULL 5 Range checked for each record (index map: 0x1) +SELECT * FROM t1, t2 WHERE a=b ORDER BY BINARY a, BINARY b; +a b +2001-01-01 00:00:00 2001#01#01 +2001-01-01 00:00:00 2001-01-01 +2001-01-01 00:00:00 2001-01-01 00:00:00 +2001-01-01 00:00:00 2001.01.01 +2001-01-01 11:22:33 2001-01-01 11:22:33 + +EXPLAIN SELECT * FROM t1, t2 WHERE b=a ORDER BY BINARY a, BINARY b; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ALL NULL NULL NULL NULL 2 Using temporary; Using filesort +1 SIMPLE t2 ALL b NULL NULL NULL 5 Range checked for each record (index map: 0x1) +SELECT * FROM t1, t2 WHERE b=a ORDER BY BINARY a, BINARY b; +a b +2001-01-01 00:00:00 2001#01#01 +2001-01-01 00:00:00 2001-01-01 +2001-01-01 00:00:00 2001-01-01 00:00:00 +2001-01-01 00:00:00 2001.01.01 +2001-01-01 11:22:33 2001-01-01 11:22:33 + +DROP TABLE t1,t2; +# # MDEV-5606: range optimizer: "x < y" is sargable, while "y > x" is not # create table t1(a int); diff --git a/mysql-test/r/range_mrr_icp.result b/mysql-test/r/range_mrr_icp.result index 924682827f9..dc6bed5fd98 100644 --- a/mysql-test/r/range_mrr_icp.result +++ b/mysql-test/r/range_mrr_icp.result @@ -2060,6 +2060,60 @@ pk 5 DROP TABLE t1; # +# BUG#13803810: TOO FEW ROWS RETURNED FOR RANGE ACCESS IN +# VARCHAR INDEX USING DATETIME VALUE + +CREATE TABLE t1 (a DATETIME); +INSERT INTO t1 VALUES ('2001-01-01 00:00:00'); +INSERT INTO t1 VALUES ('2001-01-01 11:22:33'); +CREATE TABLE t2 (b VARCHAR(64), KEY (b)); +INSERT INTO t2 VALUES ('2001-01-01'); +INSERT INTO t2 VALUES ('2001.01.01'); +INSERT INTO t2 VALUES ('2001#01#01'); +INSERT INTO t2 VALUES ('2001-01-01 00:00:00'); +INSERT INTO t2 VALUES ('2001-01-01 11:22:33'); + +# range/ref access cannot be used for this query + +EXPLAIN SELECT * FROM t2 WHERE b=CAST('2001-01-01' AS DATE); +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t2 index b b 67 NULL 5 Using where; Using index +SELECT * FROM t2 WHERE b=CAST('2001-01-01' AS DATE); +b +2001#01#01 +2001-01-01 +2001-01-01 00:00:00 +2001.01.01 + +# range/ref access cannot be used for any of the queries below. +# See BUG#13814468 about 'Range checked for each record' + +EXPLAIN SELECT * FROM t1, t2 WHERE a=b ORDER BY BINARY a, BINARY b; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ALL NULL NULL NULL NULL 2 Using temporary; Using filesort +1 SIMPLE t2 ALL b NULL NULL NULL 5 Range checked for each record (index map: 0x1) +SELECT * FROM t1, t2 WHERE a=b ORDER BY BINARY a, BINARY b; +a b +2001-01-01 00:00:00 2001#01#01 +2001-01-01 00:00:00 2001-01-01 +2001-01-01 00:00:00 2001-01-01 00:00:00 +2001-01-01 00:00:00 2001.01.01 +2001-01-01 11:22:33 2001-01-01 11:22:33 + +EXPLAIN SELECT * FROM t1, t2 WHERE b=a ORDER BY BINARY a, BINARY b; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ALL NULL NULL NULL NULL 2 Using temporary; Using filesort +1 SIMPLE t2 ALL b NULL NULL NULL 5 Range checked for each record (index map: 0x1) +SELECT * FROM t1, t2 WHERE b=a ORDER BY BINARY a, BINARY b; +a b +2001-01-01 00:00:00 2001#01#01 +2001-01-01 00:00:00 2001-01-01 +2001-01-01 00:00:00 2001-01-01 00:00:00 +2001-01-01 00:00:00 2001.01.01 +2001-01-01 11:22:33 2001-01-01 11:22:33 + +DROP TABLE t1,t2; +# # MDEV-5606: range optimizer: "x < y" is sargable, while "y > x" is not # create table t1(a int); diff --git a/mysql-test/t/range.test b/mysql-test/t/range.test index a9a12db88d1..f0434f50c98 100644 --- a/mysql-test/t/range.test +++ b/mysql-test/t/range.test @@ -1648,6 +1648,44 @@ INSERT INTO t1 VALUES (1),(3),(5); SELECT * FROM t1 WHERE pk <> 3 OR pk < 4; DROP TABLE t1; +--echo # +--echo # BUG#13803810: TOO FEW ROWS RETURNED FOR RANGE ACCESS IN +--echo # VARCHAR INDEX USING DATETIME VALUE +--echo +CREATE TABLE t1 (a DATETIME); +INSERT INTO t1 VALUES ('2001-01-01 00:00:00'); +INSERT INTO t1 VALUES ('2001-01-01 11:22:33'); + +CREATE TABLE t2 (b VARCHAR(64), KEY (b)); +INSERT INTO t2 VALUES ('2001-01-01'); +INSERT INTO t2 VALUES ('2001.01.01'); +INSERT INTO t2 VALUES ('2001#01#01'); +INSERT INTO t2 VALUES ('2001-01-01 00:00:00'); +INSERT INTO t2 VALUES ('2001-01-01 11:22:33'); + + +--echo +--echo # range/ref access cannot be used for this query +--echo +EXPLAIN SELECT * FROM t2 WHERE b=CAST('2001-01-01' AS DATE); +SELECT * FROM t2 WHERE b=CAST('2001-01-01' AS DATE); + +let $query_ab=SELECT * FROM t1, t2 WHERE a=b ORDER BY BINARY a, BINARY b; +let $query_ba=SELECT * FROM t1, t2 WHERE b=a ORDER BY BINARY a, BINARY b; + +--echo +--echo # range/ref access cannot be used for any of the queries below. +--echo # See BUG#13814468 about 'Range checked for each record' +--echo +eval EXPLAIN $query_ab; +eval $query_ab; +--echo +eval EXPLAIN $query_ba; +eval $query_ba; + +--echo +DROP TABLE t1,t2; + --echo # --echo # MDEV-5606: range optimizer: "x < y" is sargable, while "y > x" is not --echo # From 5ba109c4f6c180deef8e5d21c86fbf6b5d23e32f Mon Sep 17 00:00:00 2001 From: Sergey Petrunya Date: Fri, 7 Mar 2014 13:14:58 +0100 Subject: [PATCH 3/4] Bug#45227: Lost HAVING clause led to a wrong result. - Backport testcase from mysql-5.6 --- mysql-test/r/select.result | 31 ++++++++++++++++++++++++++++ mysql-test/r/select_jcl6.result | 31 ++++++++++++++++++++++++++++ mysql-test/r/select_pkeycache.result | 31 ++++++++++++++++++++++++++++ mysql-test/t/select.test | 24 +++++++++++++++++++++ 4 files changed, 117 insertions(+) diff --git a/mysql-test/r/select.result b/mysql-test/r/select.result index 9bcd0a90ecf..de32d00a4da 100644 --- a/mysql-test/r/select.result +++ b/mysql-test/r/select.result @@ -5191,6 +5191,37 @@ WHERE t2.pk <> 2; pk i pk i pk i DROP TABLE t1,t2,t_empty; End of 5.1 tests +# +# Bug#45227: Lost HAVING clause led to a wrong result. +# +CREATE TABLE `CC` ( +`int_nokey` int(11) NOT NULL, +`int_key` int(11) NOT NULL, +`varchar_key` varchar(1) NOT NULL, +`varchar_nokey` varchar(1) NOT NULL, +KEY `int_key` (`int_key`), +KEY `varchar_key` (`varchar_key`) +); +INSERT INTO `CC` VALUES +(0,8,'q','q'),(5,8,'m','m'),(7,3,'j','j'),(1,2,'z','z'),(8,2,'a','a'),(2,6,'',''),(1,8,'e' +,'e'),(8,9,'t','t'),(5,2,'q','q'),(4,6,'b','b'),(5,5,'w','w'),(3,2,'m','m'),(0,4,'x','x'), +(8,9,'',''),(0,6,'w','w'),(4,5,'x','x'),(0,0,'e','e'),(0,0,'e','e'),(2,8,'p','p'),(0,0,'x' +,'x'); +EXPLAIN SELECT `varchar_nokey` G1 FROM CC WHERE `int_nokey` AND `int_key` <= 4 +HAVING G1 ORDER BY `varchar_key` LIMIT 6 ; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE CC range int_key int_key 4 NULL 10 Using index condition; Using where; Using filesort +SELECT `varchar_nokey` G1 FROM CC WHERE `int_nokey` AND `int_key` <= 4 +HAVING G1 ORDER BY `varchar_key` LIMIT 6 ; +G1 +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'z' +Warning 1292 Truncated incorrect DOUBLE value: 'a' +Warning 1292 Truncated incorrect DOUBLE value: 'q' +Warning 1292 Truncated incorrect DOUBLE value: 'm' +Warning 1292 Truncated incorrect DOUBLE value: 'j' +DROP TABLE CC; +# End of test#45227 # # BUG#776274: substitution of a single row table # diff --git a/mysql-test/r/select_jcl6.result b/mysql-test/r/select_jcl6.result index 36babd0f390..bc8339b7c50 100644 --- a/mysql-test/r/select_jcl6.result +++ b/mysql-test/r/select_jcl6.result @@ -5202,6 +5202,37 @@ WHERE t2.pk <> 2; pk i pk i pk i DROP TABLE t1,t2,t_empty; End of 5.1 tests +# +# Bug#45227: Lost HAVING clause led to a wrong result. +# +CREATE TABLE `CC` ( +`int_nokey` int(11) NOT NULL, +`int_key` int(11) NOT NULL, +`varchar_key` varchar(1) NOT NULL, +`varchar_nokey` varchar(1) NOT NULL, +KEY `int_key` (`int_key`), +KEY `varchar_key` (`varchar_key`) +); +INSERT INTO `CC` VALUES +(0,8,'q','q'),(5,8,'m','m'),(7,3,'j','j'),(1,2,'z','z'),(8,2,'a','a'),(2,6,'',''),(1,8,'e' +,'e'),(8,9,'t','t'),(5,2,'q','q'),(4,6,'b','b'),(5,5,'w','w'),(3,2,'m','m'),(0,4,'x','x'), +(8,9,'',''),(0,6,'w','w'),(4,5,'x','x'),(0,0,'e','e'),(0,0,'e','e'),(2,8,'p','p'),(0,0,'x' +,'x'); +EXPLAIN SELECT `varchar_nokey` G1 FROM CC WHERE `int_nokey` AND `int_key` <= 4 +HAVING G1 ORDER BY `varchar_key` LIMIT 6 ; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE CC range int_key int_key 4 NULL 10 Using index condition; Using where; Rowid-ordered scan; Using filesort +SELECT `varchar_nokey` G1 FROM CC WHERE `int_nokey` AND `int_key` <= 4 +HAVING G1 ORDER BY `varchar_key` LIMIT 6 ; +G1 +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'j' +Warning 1292 Truncated incorrect DOUBLE value: 'z' +Warning 1292 Truncated incorrect DOUBLE value: 'a' +Warning 1292 Truncated incorrect DOUBLE value: 'q' +Warning 1292 Truncated incorrect DOUBLE value: 'm' +DROP TABLE CC; +# End of test#45227 # # BUG#776274: substitution of a single row table # diff --git a/mysql-test/r/select_pkeycache.result b/mysql-test/r/select_pkeycache.result index 9bcd0a90ecf..de32d00a4da 100644 --- a/mysql-test/r/select_pkeycache.result +++ b/mysql-test/r/select_pkeycache.result @@ -5191,6 +5191,37 @@ WHERE t2.pk <> 2; pk i pk i pk i DROP TABLE t1,t2,t_empty; End of 5.1 tests +# +# Bug#45227: Lost HAVING clause led to a wrong result. +# +CREATE TABLE `CC` ( +`int_nokey` int(11) NOT NULL, +`int_key` int(11) NOT NULL, +`varchar_key` varchar(1) NOT NULL, +`varchar_nokey` varchar(1) NOT NULL, +KEY `int_key` (`int_key`), +KEY `varchar_key` (`varchar_key`) +); +INSERT INTO `CC` VALUES +(0,8,'q','q'),(5,8,'m','m'),(7,3,'j','j'),(1,2,'z','z'),(8,2,'a','a'),(2,6,'',''),(1,8,'e' +,'e'),(8,9,'t','t'),(5,2,'q','q'),(4,6,'b','b'),(5,5,'w','w'),(3,2,'m','m'),(0,4,'x','x'), +(8,9,'',''),(0,6,'w','w'),(4,5,'x','x'),(0,0,'e','e'),(0,0,'e','e'),(2,8,'p','p'),(0,0,'x' +,'x'); +EXPLAIN SELECT `varchar_nokey` G1 FROM CC WHERE `int_nokey` AND `int_key` <= 4 +HAVING G1 ORDER BY `varchar_key` LIMIT 6 ; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE CC range int_key int_key 4 NULL 10 Using index condition; Using where; Using filesort +SELECT `varchar_nokey` G1 FROM CC WHERE `int_nokey` AND `int_key` <= 4 +HAVING G1 ORDER BY `varchar_key` LIMIT 6 ; +G1 +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'z' +Warning 1292 Truncated incorrect DOUBLE value: 'a' +Warning 1292 Truncated incorrect DOUBLE value: 'q' +Warning 1292 Truncated incorrect DOUBLE value: 'm' +Warning 1292 Truncated incorrect DOUBLE value: 'j' +DROP TABLE CC; +# End of test#45227 # # BUG#776274: substitution of a single row table # diff --git a/mysql-test/t/select.test b/mysql-test/t/select.test index 1174ab535ba..7134a5c16cf 100644 --- a/mysql-test/t/select.test +++ b/mysql-test/t/select.test @@ -4363,6 +4363,30 @@ DROP TABLE t1,t2,t_empty; --echo End of 5.1 tests +--echo # +--echo # Bug#45227: Lost HAVING clause led to a wrong result. +--echo # +CREATE TABLE `CC` ( + `int_nokey` int(11) NOT NULL, + `int_key` int(11) NOT NULL, + `varchar_key` varchar(1) NOT NULL, + `varchar_nokey` varchar(1) NOT NULL, + KEY `int_key` (`int_key`), + KEY `varchar_key` (`varchar_key`) +); +INSERT INTO `CC` VALUES +(0,8,'q','q'),(5,8,'m','m'),(7,3,'j','j'),(1,2,'z','z'),(8,2,'a','a'),(2,6,'',''),(1,8,'e' +,'e'),(8,9,'t','t'),(5,2,'q','q'),(4,6,'b','b'),(5,5,'w','w'),(3,2,'m','m'),(0,4,'x','x'), +(8,9,'',''),(0,6,'w','w'),(4,5,'x','x'),(0,0,'e','e'),(0,0,'e','e'),(2,8,'p','p'),(0,0,'x' +,'x'); +EXPLAIN SELECT `varchar_nokey` G1 FROM CC WHERE `int_nokey` AND `int_key` <= 4 + HAVING G1 ORDER BY `varchar_key` LIMIT 6 ; + +SELECT `varchar_nokey` G1 FROM CC WHERE `int_nokey` AND `int_key` <= 4 + HAVING G1 ORDER BY `varchar_key` LIMIT 6 ; + +DROP TABLE CC; +--echo # End of test#45227 --echo # --echo # BUG#776274: substitution of a single row table --echo # From 908fa69da929878e8a30eefee2e35856c1569058 Mon Sep 17 00:00:00 2001 From: Sergey Petrunya Date: Fri, 7 Mar 2014 13:21:16 +0100 Subject: [PATCH 4/4] Bug #13571700 TINYBLOB NOT NULL, CRASH IN PROTOCOL::NET_STORE_DATA - Backport testcase from mysql-5.6 --- mysql-test/r/select.result | 8 ++++++++ mysql-test/r/select_jcl6.result | 8 ++++++++ mysql-test/r/select_pkeycache.result | 8 ++++++++ mysql-test/t/select.test | 8 ++++++++ 4 files changed, 32 insertions(+) diff --git a/mysql-test/r/select.result b/mysql-test/r/select.result index de32d00a4da..7219a9c4462 100644 --- a/mysql-test/r/select.result +++ b/mysql-test/r/select.result @@ -5328,6 +5328,14 @@ f1 DROP TABLE t1; DROP VIEW view_t1; # End of test BUG#63020 +# +# Bug #13571700 TINYBLOB NOT NULL, CRASH IN PROTOCOL::NET_STORE_DATA +# +CREATE TABLE t1 (a TINYBLOB NOT NULL); +SELECT a, COUNT(*) FROM t1 WHERE 0; +a COUNT(*) +NULL 0 +DROP TABLE t1; SET optimizer_switch=@save_optimizer_switch; # # LP bug#994275 Assertion `real->type() == Item::FIELD_ITEM' failed diff --git a/mysql-test/r/select_jcl6.result b/mysql-test/r/select_jcl6.result index bc8339b7c50..3b51efa26b0 100644 --- a/mysql-test/r/select_jcl6.result +++ b/mysql-test/r/select_jcl6.result @@ -5339,6 +5339,14 @@ f1 DROP TABLE t1; DROP VIEW view_t1; # End of test BUG#63020 +# +# Bug #13571700 TINYBLOB NOT NULL, CRASH IN PROTOCOL::NET_STORE_DATA +# +CREATE TABLE t1 (a TINYBLOB NOT NULL); +SELECT a, COUNT(*) FROM t1 WHERE 0; +a COUNT(*) +NULL 0 +DROP TABLE t1; SET optimizer_switch=@save_optimizer_switch; # # LP bug#994275 Assertion `real->type() == Item::FIELD_ITEM' failed diff --git a/mysql-test/r/select_pkeycache.result b/mysql-test/r/select_pkeycache.result index de32d00a4da..7219a9c4462 100644 --- a/mysql-test/r/select_pkeycache.result +++ b/mysql-test/r/select_pkeycache.result @@ -5328,6 +5328,14 @@ f1 DROP TABLE t1; DROP VIEW view_t1; # End of test BUG#63020 +# +# Bug #13571700 TINYBLOB NOT NULL, CRASH IN PROTOCOL::NET_STORE_DATA +# +CREATE TABLE t1 (a TINYBLOB NOT NULL); +SELECT a, COUNT(*) FROM t1 WHERE 0; +a COUNT(*) +NULL 0 +DROP TABLE t1; SET optimizer_switch=@save_optimizer_switch; # # LP bug#994275 Assertion `real->type() == Item::FIELD_ITEM' failed diff --git a/mysql-test/t/select.test b/mysql-test/t/select.test index 7134a5c16cf..2d75dc48f73 100644 --- a/mysql-test/t/select.test +++ b/mysql-test/t/select.test @@ -4470,6 +4470,14 @@ DROP TABLE t1; DROP VIEW view_t1; --echo # End of test BUG#63020 +--echo # +--echo # Bug #13571700 TINYBLOB NOT NULL, CRASH IN PROTOCOL::NET_STORE_DATA +--echo # + +CREATE TABLE t1 (a TINYBLOB NOT NULL); +SELECT a, COUNT(*) FROM t1 WHERE 0; +DROP TABLE t1; + SET optimizer_switch=@save_optimizer_switch; --echo #