diff options
author | Sergey Petrunya <psergey@askmonty.org> | 2014-06-07 23:45:05 +0200 |
---|---|---|
committer | Sergey Petrunya <psergey@askmonty.org> | 2014-06-07 23:45:05 +0200 |
commit | 349e31d5a7a580b1a923d5702242e9be89f4546e (patch) | |
tree | c99956a4164ea9e3686ae779d1056d6e36ba90e2 | |
parent | ee6f400fe1487b2b77e731189b92a753f6816e9a (diff) | |
parent | 71df035551939d4200f54280493d670f31eba796 (diff) | |
download | mariadb-git-349e31d5a7a580b1a923d5702242e9be89f4546e.tar.gz |
Merge
-rw-r--r-- | mysql-test/r/selectivity_no_engine.result | 28 | ||||
-rw-r--r-- | mysql-test/t/selectivity_no_engine.test | 28 | ||||
-rw-r--r-- | sql/sql_select.cc | 1 |
3 files changed, 57 insertions, 0 deletions
diff --git a/mysql-test/r/selectivity_no_engine.result b/mysql-test/r/selectivity_no_engine.result index da39ec1b3b4..e07329422af 100644 --- a/mysql-test/r/selectivity_no_engine.result +++ b/mysql-test/r/selectivity_no_engine.result @@ -215,6 +215,34 @@ SELECT * FROM t1 AS t1_1, t1 AS t1_2 WHERE NOT ( t1_1.a <> 'baz'); a b a b DROP TABLE t1; # +# MDEV-6308: Server crashes in table_multi_eq_cond_selectivity with ... +# +CREATE TABLE t1 ( +id varchar(40) COLLATE utf8_bin, +dt datetime, +PRIMARY KEY (id) +); +INSERT INTO t1 VALUES ('foo','2011-04-12 05:18:08'), +('bar','2013-09-19 11:37:03'); +CREATE TABLE t2 ( +t1_id varchar(40) COLLATE utf8_bin, +f1 varchar(64), +f2 varchar(1024), +KEY (f1,f2(255)) +); +INSERT INTO t2 VALUES ('foo','baz','qux'),('bar','baz','qux'); +set optimizer_use_condition_selectivity=2; +explain +select * from t1,t2 where t1.id = t2.t1_id and t2.f2='qux' and t2.f1='baz'; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t2 ref f1 f1 325 const,const 1 Using index condition; Using where +1 SIMPLE t1 eq_ref PRIMARY PRIMARY 122 test.t2.t1_id 1 +select * from t1,t2 where t1.id = t2.t1_id and t2.f2='qux' and t2.f1='baz'; +id dt t1_id f1 f2 +foo 2011-04-12 05:18:08 foo baz qux +bar 2013-09-19 11:37:03 bar baz qux +drop table t1,t2; +# # End of the test file # set use_stat_tables= @save_use_stat_tables; diff --git a/mysql-test/t/selectivity_no_engine.test b/mysql-test/t/selectivity_no_engine.test index 87e6b629762..4a7ad8a42c9 100644 --- a/mysql-test/t/selectivity_no_engine.test +++ b/mysql-test/t/selectivity_no_engine.test @@ -162,6 +162,34 @@ SELECT * FROM t1 AS t1_1, t1 AS t1_2 WHERE NOT ( t1_1.a <> 'baz'); DROP TABLE t1; --echo # +--echo # MDEV-6308: Server crashes in table_multi_eq_cond_selectivity with ... +--echo # +CREATE TABLE t1 ( + id varchar(40) COLLATE utf8_bin, + dt datetime, + PRIMARY KEY (id) +); + +INSERT INTO t1 VALUES ('foo','2011-04-12 05:18:08'), + ('bar','2013-09-19 11:37:03'); + +CREATE TABLE t2 ( + t1_id varchar(40) COLLATE utf8_bin, + f1 varchar(64), + f2 varchar(1024), + KEY (f1,f2(255)) +); + +INSERT INTO t2 VALUES ('foo','baz','qux'),('bar','baz','qux'); + +set optimizer_use_condition_selectivity=2; +explain +select * from t1,t2 where t1.id = t2.t1_id and t2.f2='qux' and t2.f1='baz'; +select * from t1,t2 where t1.id = t2.t1_id and t2.f2='qux' and t2.f1='baz'; + +drop table t1,t2; + +--echo # --echo # End of the test file --echo # diff --git a/sql/sql_select.cc b/sql/sql_select.cc index d430e8bc10d..692138fcddd 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -7367,6 +7367,7 @@ double table_cond_selectivity(JOIN *join, uint idx, JOIN_TAB *s, Go through the "keypart{N}=..." equalities and find those that were already taken into account in table->cond_selectivity. */ + keyuse= pos->key; while (keyuse->table == table && keyuse->key == key) { if (!(keyuse->used_tables & (rem_tables | table->map))) |