Ticket Hash: | 98d973b8f5a2ee195e69e949c880e08ac254f4f5 | |||
Title: | Partial index gives incorrect query result | |||
Status: | Fixed | Type: | Code_Defect | |
Severity: | Critical | Priority: | Immediate | |
Subsystem: | Unknown | Resolution: | Fixed | |
Last Modified: | 2014-08-27 17:41:38 | |||
Version Found In: | 3.8.6 | |||
User Comments: | ||||
drh added on 2014-08-27 17:31:04:
The SELECT statement at the end of the following block of SQL outputs no rows, but it should output one row. CREATE TABLE t1(a, b); CREATE TABLE t2(c, d); INSERT INTO t1 VALUES(1, 'xyz'); INSERT INTO t2 VALUES('abc', 'not xyz'); CREATE INDEX i2 ON t2(c) WHERE d='xyz'; SELECT * FROM (SELECT * FROM t1 WHERE a=1 AND b='xyz'), t2 WHERE c='abc';\ A correct result is obtained if the index created on the penultimate line is convert into a complete index or if the index is omitted entirely. This bug appears to have been in the implementation of partial indexes from their introduction in SQLite version 3.8.0, 2013-08-26. |