Wrong result with view , derived EXISTS subquery, join_cache_level = 0
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
MariaDB |
Fix Released
|
Critical
|
Igor Babaev |
Bug Description
The following query:
SELECT v1.b
FROM v1
WHERE EXISTS (
SELECT t2.b
FROM t2
WHERE t2.c < v1.c
);
returns no rows when executed with join_cache_level=0 and
| b |
+----+
| 19 |
otherwise.
explain:
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-
| 1 | PRIMARY | t1 | index | NULL | PRIMARY | 4 | NULL | 2 | Using where; Using index |
| 2 | DEPENDENT SUBQUERY | t2 | system | NULL | NULL | NULL | NULL | 1 | |
optimizer switch: index_merge=
bzr version-info
revision-id: <email address hidden>
date: 2011-10-17 03:42:56 -0700
build-date: 2011-10-18 13:36:56 +0300
revno: 3239
branch-nick: maria-5.3
repeatable with 5.3 without derived_merge and derived_with_keys. Not repeatable on maria 5.2, mysql 5.5 or with join_cache_level=1. Not repeatable with SELECT * in place of SELECT v1.b
test case:
CREATE TABLE t1 ( b int(11) NOT NULL , c int(11), PRIMARY KEY (b)) ;
INSERT INTO t1 VALUES (18,2),(19,9);
CREATE TABLE t2 ( b int(11) NOT NULL , c int(11)) ;
INSERT INTO t2 VALUES (10,8);
SET SESSION join_cache_level=0;
CREATE OR REPLACE VIEW v1 AS SELECT * FROM t1;
SELECT v1.b
FROM v1
WHERE EXISTS (
SELECT t2.b
FROM t2
WHERE t2.c < v1.c
);
Changed in maria: | |
milestone: | none → 5.3 |
assignee: | nobody → Igor Babaev (igorb-seattle) |
Changed in maria: | |
status: | New → Confirmed |
importance: | Undecided → Critical |
Changed in maria: | |
status: | Confirmed → In Progress |
Changed in maria: | |
status: | In Progress → Fix Committed |
Changed in maria: | |
status: | Fix Committed → Fix Released |