1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-27 18:02:13 +03:00

MDEV-18701: Wrong result from query that uses INTERSECT after UNION ALL

Recalculate distinct pointer if we cut chain of SELECTs
This commit is contained in:
Oleksandr Byelkin
2019-03-11 17:10:20 +01:00
parent 58f3ff7175
commit 6d68a3464e
5 changed files with 69 additions and 13 deletions

View File

@ -833,3 +833,36 @@ c1
3
drop table t12,t13,t234;
# End of 10.3 tests
#
# MDEV-18701: Wrong result from query that uses INTERSECT after UNION ALL
#
create table t1 (a int);
insert into t1 values (3), (1), (7), (3), (2), (7), (4);
create table t2 (a int);
insert into t2 values (4), (5), (9), (1), (8), (9);
create table t3 (a int);
insert into t3 values (8), (1), (8), (2), (3), (7), (2);
select * from t1 where a > 4
union all
select * from t2 where a < 5
intersect
select * from t3 where a < 5;
a
7
7
1
explain extended
select * from t1 where a > 4
union all
select * from t2 where a < 5
intersect
select * from t3 where a < 5;
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t1 ALL NULL NULL NULL NULL 7 100.00 Using where
4 UNION <derived2> ALL NULL NULL NULL NULL 6 100.00
2 DERIVED t2 ALL NULL NULL NULL NULL 6 100.00 Using where
3 INTERSECT t3 ALL NULL NULL NULL NULL 7 100.00 Using where
NULL INTERSECT RESULT <intersect2,3> ALL NULL NULL NULL NULL NULL NULL
Warnings:
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` > 4 union all /* select#4 */ select `__4`.`a` AS `a` from (/* select#2 */ select `test`.`t2`.`a` AS `a` from `test`.`t2` where `test`.`t2`.`a` < 5 intersect /* select#3 */ select `test`.`t3`.`a` AS `a` from `test`.`t3` where `test`.`t3`.`a` < 5) `__4`
drop table t1,t2,t3;