diff options
author | Sergei Petrunia <psergey@askmonty.org> | 2016-06-22 23:20:41 +0300 |
---|---|---|
committer | Sergei Petrunia <psergey@askmonty.org> | 2016-06-22 23:20:41 +0300 |
commit | 3e03b89b0a683dd3b14d6ea24d2ca93accdfd61f (patch) | |
tree | 7a7dff827f7d79d5ed3406726bceec5910a83629 | |
parent | 63120090f994cc78876944e9f7a76f53337fa46e (diff) | |
download | mariadb-git-3e03b89b0a683dd3b14d6ea24d2ca93accdfd61f.tar.gz |
MDEV-10185: Assertion `tree1->keys[key_no] && tree2->keys[key_no]' failed in
Make tree_or set correct SEL_TREE::keys_map for the result.
-rw-r--r-- | mysql-test/r/range.result | 11 | ||||
-rw-r--r-- | mysql-test/r/range_mrr_icp.result | 11 | ||||
-rw-r--r-- | mysql-test/t/range.test | 9 | ||||
-rw-r--r-- | sql/opt_range.cc | 1 |
4 files changed, 32 insertions, 0 deletions
diff --git a/mysql-test/r/range.result b/mysql-test/r/range.result index a0e44f91d44..268bd184c58 100644 --- a/mysql-test/r/range.result +++ b/mysql-test/r/range.result @@ -2288,5 +2288,16 @@ Warnings: Warning 1366 Incorrect string value: '\xF0\x9F\x98\x8E' for column 'a' at row 1 DROP TABLE t1; # +# MDEV-10185: Assertion `tree1->keys[key_no] && tree2->keys[key_no]' failed in +# sel_trees_can_be_ored(RANGE_OPT_PARAM*, SEL_TREE*, SEL_TREE*, key_map*) +# +CREATE TABLE t1 (pk INT PRIMARY KEY); +INSERT INTO t1 VALUES (1),(2); +SELECT * FROM t1 WHERE pk != 1000 OR pk IN ( 1000, 0, 1, 100, 2 ) OR pk >= 5; +pk +1 +2 +DROP TABLE t1; +# # End of 10.1 tests # diff --git a/mysql-test/r/range_mrr_icp.result b/mysql-test/r/range_mrr_icp.result index c16d3b4adae..5c6930f4323 100644 --- a/mysql-test/r/range_mrr_icp.result +++ b/mysql-test/r/range_mrr_icp.result @@ -2290,6 +2290,17 @@ Warnings: Warning 1366 Incorrect string value: '\xF0\x9F\x98\x8E' for column 'a' at row 1 DROP TABLE t1; # +# MDEV-10185: Assertion `tree1->keys[key_no] && tree2->keys[key_no]' failed in +# sel_trees_can_be_ored(RANGE_OPT_PARAM*, SEL_TREE*, SEL_TREE*, key_map*) +# +CREATE TABLE t1 (pk INT PRIMARY KEY); +INSERT INTO t1 VALUES (1),(2); +SELECT * FROM t1 WHERE pk != 1000 OR pk IN ( 1000, 0, 1, 100, 2 ) OR pk >= 5; +pk +1 +2 +DROP TABLE t1; +# # End of 10.1 tests # set optimizer_switch=@mrr_icp_extra_tmp; diff --git a/mysql-test/t/range.test b/mysql-test/t/range.test index ba4928faffb..7f0e063124e 100644 --- a/mysql-test/t/range.test +++ b/mysql-test/t/range.test @@ -1817,5 +1817,14 @@ EXPLAIN SELECT * FROM t1 WHERE a<=>'😎'; DROP TABLE t1; --echo # +--echo # MDEV-10185: Assertion `tree1->keys[key_no] && tree2->keys[key_no]' failed in +--echo # sel_trees_can_be_ored(RANGE_OPT_PARAM*, SEL_TREE*, SEL_TREE*, key_map*) +--echo # +CREATE TABLE t1 (pk INT PRIMARY KEY); +INSERT INTO t1 VALUES (1),(2); +SELECT * FROM t1 WHERE pk != 1000 OR pk IN ( 1000, 0, 1, 100, 2 ) OR pk >= 5; +DROP TABLE t1; + +--echo # --echo # End of 10.1 tests --echo # diff --git a/sql/opt_range.cc b/sql/opt_range.cc index 3d059abd666..b262b0c4191 100644 --- a/sql/opt_range.cc +++ b/sql/opt_range.cc @@ -8580,6 +8580,7 @@ tree_or(RANGE_OPT_PARAM *param,SEL_TREE *tree1,SEL_TREE *tree2) for e.g. "key IN (c1, ..., cN)" which produces a lot of ranges. */ result= tree1; + result->keys_map.clear_all(); } else { |