|14:10||• Ticket [b7c8682c] Incorrect result from LEFT JOIN with OR in the WHERE clause status still Fixed with 1 other change (artifact: b6174c4a user: drh)|
|01:15||• Fixed ticket [b7c8682c]. (artifact: 63616959 user: drh)|
|22:02||Candidate fix for the optimizer problem described in ticket [b7c8682cc17f3] which can causes a LEFT JOIN to be changed into a INNER JOIN if there are OR terms in the WHERE clause. (check-in: 0dc4cb93 user: drh tags: trunk)|
|16:58||• New ticket [b7c8682c] Incorrect result from LEFT JOIN with OR in the WHERE clause. (artifact: 7aedf2b6 user: drh)|
|Title:||Incorrect result from LEFT JOIN with OR in the WHERE clause|
|Last Modified:||2012-03-13 14:10:35|
|Version Found In:||3.7.10|
The following SQL demonstrates the problem:
CREATE TABLE t1(a INTEGER PRIMARY KEY, b, c, d); CREATE TABLE t2(x INTEGER PRIMARY KEY, y); CREATE TABLE t3(p INTEGER PRIMARY KEY, q); INSERT INTO t1 VALUES(2,3,4,5); INSERT INTO t1 VALUES(3,4,5,6); INSERT INTO t2 VALUES(2,4); INSERT INTO t3 VALUES(5,55);
Prior to check-in [b23ae131874bc5c621f0] the query returns two rows. But following that check-in, only one row is returned. The two-row result is correct.
This problem was discovered by Alan Chandler and reported on the mailing list as "Strange difference between sqlite 3.7.3 and 3.7.10".