/ Check-in [e68b427a]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Convert expressions of the form "X IN (?)" with exactly one value on the RHS of the IN into equality tests: "X=?". Add test cases to verify that statements work correctly on this corner case. Fix for ticket [e39d032577df6942].
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: e68b427afbc82e201c64474117851aa4c9eb0c92
User & Date: drh 2014-03-20 13:26:47
References
2014-03-20
17:03
The "x IN (?)" optimization in check-ins [2ff3b25f40] and [e68b427afb] is incorrect, as demonstrated by the in4-5.1 test case in this check-in. The "COLLATE binary" that was being added to the RHS of IN was overriding the implicit collating sequence of the LHS. This change defines the EP_Generic expression node property that blocks all affinity or collating sequence information in the expression subtree and adds that property to the expression taken from RHS of the IN operator. check-in: 2ea4a9f7 user: drh tags: trunk
Context
2014-03-20
14:56
Previous check-in is not quite correct. "x IN (?)" is not exactly the same as "x==?" do to collation and affinity issues. The correct converstion should be to "x==(+? COLLATE binary)". The current check-in fixes this problem and provides test cases. Ticket [e39d032577df69] check-in: 2ff3b25f user: drh tags: trunk
13:26
Convert expressions of the form "X IN (?)" with exactly one value on the RHS of the IN into equality tests: "X=?". Add test cases to verify that statements work correctly on this corner case. Fix for ticket [e39d032577df6942]. check-in: e68b427a user: drh tags: trunk
12:17
Fix an unnecessarily obtuse use of a bitmask flag. check-in: ca314081 user: drh tags: trunk
Changes
Unified Diffs Side-by-Side Diffs Patch

Changes to src/parse.y.

Changes to src/where.c.

Changes to test/in4.test.