Hi all, I believe that I have found a bug in the virtual table bytecode generation when OR constraints are present and argvIndex is set in xBestIndex but the application does not actually filter fully.
The problem seems to be in not setting/unsetting the non-null flag correctly (SQLITE_JUMPIFNULL) on the instruction which does the comparison; this leads to NULLs slipping through the filter. To fully repro the problem, please find attached a small C file which shows the unexpected behaviour. By adding an EXPLAIN in-front of the SELECT query, you should be able to see the incorrect bytecode on the NE opcode. If the attachment doesn't come through for some reason, I've also put the same file as a GitHub gist <https://gist.github.com/tilal6991/57f8c51934379270abe58201c7b1dab1/>. Thank you! Regards, Lalit _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users