Wrong result with NOT IN subquery and partial_match_rowid_merge

Bug #856152 reported by Philip Stoev
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
MariaDB
Fix Released
High
Timour Katchaounov

Bug Description

The following query:

SELECT * FROM t2 WHERE ( 3 , 1 ) NOT IN ( SELECT f1 , f2 FROM t1 );

returns no rows when executed with partial_match_rowid_merge even though the WHERE clause is TRUE always. Even though this particular example has 1 row in t2, the issue was also observed with t2 having more than 1 row, in which case only some of the rows were returned.

Explain:

| 1 | PRIMARY | t2 | system | NULL | NULL | NULL | NULL | 1 | |
| 2 | SUBQUERY | t1 | ALL | NULL | NULL | NULL | NULL | 3 | |

test case:

CREATE TABLE t1 ( f1 integer NOT NULL , f2 integer) ;
INSERT INTO t1 VALUES (3,3),(48,NULL),(49,1);

CREATE TABLE t2 ( f3 int) ;
INSERT INTO t2 VALUES (5);

SET SESSION optimizer_switch='in_to_exists=off,materialization=on,partial_match_rowid_merge=on,partial_match_table_scan=off';
SELECT * FROM t2 WHERE ( 3 , 1 ) NOT IN ( SELECT f1 , f2 FROM t1 );

revision-id: <email address hidden>
date: 2011-09-22 01:55:17 +0400
build-date: 2011-09-22 09:45:27 +0300
revno: 3190
branch-nick: maria-5.3

Related branches

Changed in maria:
milestone: none → 5.3
assignee: nobody → Timour Katchaounov (timour)
Changed in maria:
importance: Undecided → High
status: New → In Progress
Changed in maria:
status: In Progress → Fix Committed
Changed in maria:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.