Regression: Mixing AND with OR results in no rows returned
This seems to be a regression since some version of sqlite. I run this statement: $ sqlite3 contacts.db "select * from folder_id_email_list AS el WHERE (el.value IS NOT NULL AND el.value LIKE '%jackson.com')" I get three rows, as expected, regardless of the version being used. When I just repeat the same expression concatenated with an OR, the result differs per version of the sqlite. As it's an OR, I should get the same result as with the above expression. The executed command: $ sqlite3 contacts.db "select * from folder_id_email_list AS el WHERE (el.value IS NOT NULL AND el.value LIKE '%jackson.com') OR (el.value IS NOT NULL AND el.value LIKE '%jackson.com')" a) sqlite-3.33.0-1.fc32.x86_64 - works correctly b) sqlite-3.34.1-1.fc33.x86_64 - works correctly c) sqlite-3.35.4-1.fc35.x86_64 - returns no rows Reproducer available here: https://odubaj.fedorapeople.org/contacts.db Reference: https://bugzilla.redhat.com/show_bug.cgi?id=1947883
(2.1) Originally by Dan Kennedy (dan) with edits by Richard Hipp (drh) on 2021-04-13 18:25:29 from 2.0 in reply to 1.1 [link] [source]
Thanks for reporting this. I think this problem was fixed just a couple of days ago here:
Can you try with the latest SQLite trunk to see if the problem is fixed?
Sorry - I visited the bugzilla page but somehow managed to miss the linked reproducer db. This problem is indeed fixed on trunk.
Great, thanks for clarifying! Is there a planned release with appropiate fix in the near future ?
The fix has been cherry-picked on to the "branch-3.35" branch. So if you want the latest SQLite 3.35.x with this fix included, you can pull down the sources to the latest check-in on that branch: