summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVicențiu Ciorbaru <vicentiu@mariadb.org>2018-03-14 12:10:31 +0200
committerVicențiu Ciorbaru <vicentiu@mariadb.org>2018-03-14 12:10:31 +0200
commit3d5dff6cae5cdefe376583f811c9af109ea08080 (patch)
tree98abee484b3282b7f7b12cfdc15e5d037a8f7077
parent48c11d407b409a1291c84782518c69ee9138ce72 (diff)
parent926edd48e1e67bf9a315b3602638a76c4c445ef6 (diff)
downloadmariadb-git-3d5dff6cae5cdefe376583f811c9af109ea08080.tar.gz
Merge branch '5.5' into 10.0
-rw-r--r--debian/control4
-rw-r--r--mysql-test/r/subselect_mat.result15
-rw-r--r--mysql-test/t/subselect_mat.test13
-rw-r--r--sql/opt_subselect.cc4
4 files changed, 33 insertions, 3 deletions
diff --git a/debian/control b/debian/control
index 6bad46542d6..862cd4f3cea 100644
--- a/debian/control
+++ b/debian/control
@@ -24,8 +24,8 @@ Build-Depends: bison,
${LIBREADLINE_DEV}
Standards-Version: 3.8.3
Homepage: http://mariadb.org/
-Vcs-Browser: http://bazaar.launchpad.net/~maria-captains/maria/10.0/files
-Vcs-Bzr: bzr://lp:maria
+Vcs-Browser: https://github.com/MariaDB/server/
+Vcs-Git: https://github.com/MariaDB/server.git
Package: libmariadbclient18
Section: libs
diff --git a/mysql-test/r/subselect_mat.result b/mysql-test/r/subselect_mat.result
index db51bbb8186..ff09da022b4 100644
--- a/mysql-test/r/subselect_mat.result
+++ b/mysql-test/r/subselect_mat.result
@@ -2714,3 +2714,18 @@ a b sq
4 4 1
4 2 1
drop table t1, t2;
+#
+# MDEV-15235: Assertion `length > 0' failed in create_ref_for_key
+#
+CREATE TABLE t1 (i INT);
+INSERT INTO t1 VALUES (1),(2);
+CREATE TABLE t2 (f CHAR(1));
+INSERT INTO t2 VALUES ('a'),('b');
+explain
+SELECT * FROM t2 WHERE f IN ( SELECT LEFT('foo',0) FROM t1 ORDER BY 1 );
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where
+2 DEPENDENT SUBQUERY t1 ALL NULL NULL NULL NULL 2
+SELECT * FROM t2 WHERE f IN ( SELECT LEFT('foo',0) FROM t1 ORDER BY 1 );
+f
+DROP TABLE t1, t2;
diff --git a/mysql-test/t/subselect_mat.test b/mysql-test/t/subselect_mat.test
index 09c6b3e1747..5211f35b48b 100644
--- a/mysql-test/t/subselect_mat.test
+++ b/mysql-test/t/subselect_mat.test
@@ -254,3 +254,16 @@ SELECT a, b, (a, b) NOT IN (SELECT a, b FROM t2) as sq
FROM t1;
drop table t1, t2;
+
+--echo #
+--echo # MDEV-15235: Assertion `length > 0' failed in create_ref_for_key
+--echo #
+
+CREATE TABLE t1 (i INT);
+INSERT INTO t1 VALUES (1),(2);
+CREATE TABLE t2 (f CHAR(1));
+INSERT INTO t2 VALUES ('a'),('b');
+explain
+SELECT * FROM t2 WHERE f IN ( SELECT LEFT('foo',0) FROM t1 ORDER BY 1 );
+SELECT * FROM t2 WHERE f IN ( SELECT LEFT('foo',0) FROM t1 ORDER BY 1 );
+DROP TABLE t1, t2;
diff --git a/sql/opt_subselect.cc b/sql/opt_subselect.cc
index 67205a52cac..8aa04c62f42 100644
--- a/sql/opt_subselect.cc
+++ b/sql/opt_subselect.cc
@@ -873,8 +873,10 @@ bool subquery_types_allow_materialization(Item_in_subselect *in_subs)
Make sure that create_tmp_table will not fail due to too long keys.
See MDEV-7122. This check is performed inside create_tmp_table also and
we must do it so that we know the table has keys created.
+ Make sure that the length of the key for the temp_table is atleast
+ greater than 0.
*/
- if (total_key_length > tmp_table_max_key_length() ||
+ if (!total_key_length || total_key_length > tmp_table_max_key_length() ||
elements > tmp_table_max_key_parts())
DBUG_RETURN(FALSE);