mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 12:32:27 +01:00
Fixed range optimzier bug (Bug #1828)
mysql-test/r/range.result: test for range optimzier bug mysql-test/t/range.test: test for range optimzier bug
This commit is contained in:
parent
e56d603a09
commit
e5cc604eab
3 changed files with 23 additions and 2 deletions
|
@ -290,3 +290,13 @@ t1 range a,b a 5 NULL 2 Using where
|
|||
SELECT * FROM t1 WHERE a IN(1,2) AND b=5;
|
||||
a b
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a int, b int, c int, INDEX (c,a,b));
|
||||
INSERT INTO t1 VALUES (1,0,0),(1,0,0),(1,0,0);
|
||||
INSERT INTO t1 VALUES (0,1,0),(0,1,0),(0,1,0);
|
||||
SELECT COUNT(*) FROM t1 WHERE (c=0 and a=1) or (c=0 and b=1);
|
||||
COUNT(*)
|
||||
6
|
||||
SELECT COUNT(*) FROM t1 WHERE (c=0 and b=1) or (c=0 and a=1);
|
||||
COUNT(*)
|
||||
6
|
||||
DROP TABLE t1;
|
||||
|
|
|
@ -231,9 +231,20 @@ INSERT INTO t1 VALUES
|
|||
(21,4),(22,5),(23,5),(24,5),(25,5),(26,5),(30,5),(31,5),(32,5),(33,5),
|
||||
(33,5),(33,5),(33,5),(33,5),(34,5),(35,5);
|
||||
|
||||
# we expect that optimizer will choose index on A
|
||||
EXPLAIN SELECT * FROM t1 WHERE a IN(1,2) AND b=5;
|
||||
SELECT * FROM t1 WHERE a IN(1,2) AND b=5;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
# we expect that optimizer will choose index on A
|
||||
#
|
||||
# Test error with
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (a int, b int, c int, INDEX (c,a,b));
|
||||
INSERT INTO t1 VALUES (1,0,0),(1,0,0),(1,0,0);
|
||||
INSERT INTO t1 VALUES (0,1,0),(0,1,0),(0,1,0);
|
||||
# -- First reports 3; second reports 6
|
||||
SELECT COUNT(*) FROM t1 WHERE (c=0 and a=1) or (c=0 and b=1);
|
||||
SELECT COUNT(*) FROM t1 WHERE (c=0 and b=1) or (c=0 and a=1);
|
||||
DROP TABLE t1;
|
||||
|
|
|
@ -70,7 +70,7 @@ public:
|
|||
{}
|
||||
inline bool is_same(SEL_ARG *arg)
|
||||
{
|
||||
if (type != arg->type)
|
||||
if (type != arg->type || part != arg->part)
|
||||
return 0;
|
||||
if (type != KEY_RANGE)
|
||||
return 1;
|
||||
|
|
Loading…
Reference in a new issue