SQLite

View Ticket
Login
Ticket Hash: 4d01eda8115b10d1227b62352c750655a279d310
Title: IS TRUE operator malfunctions with COLLATE and REAL value
Status: Closed Type: Code_Defect
Severity: Critical Priority: Immediate
Subsystem: Unknown Resolution: Fixed
Last Modified: 2019-06-12 13:50:44
Version Found In:
User Comments:
mrigger added on 2019-06-12 12:41:11: (text/x-fossil-wiki)
It seems that using IS TRUE together with a COLLATE operator that is part of the right side of the expression results in an incorrect result:

<pre>
SELECT 0.5 IS TRUE COLLATE NOCASE; -- expected: 1, actual: 0
SELECT 0.5 IS TRUE COLLATE RTRIM; -- expected: 1, actual: 0
SELECT 0.5 IS TRUE COLLATE BINARY; -- expected: 1, actual: 0
</pre>

Without the COLLATE, or if the COLLATE is on the left side, the result is as expected:

<pre>
SELECT 0.5 IS TRUE; -- 1
SELECT 0.5 COLLATE NOCASE IS TRUE; -- 1
</pre>

The IS FALSE operator does not seem to be affected:
<pre>
SELECT 0.5 IS FALSE COLLATE NOCASE; -- 0
SELECT 0.5 IS FALSE COLLATE RTRIM; -- 0
SELECT 0.5 IS FALSE COLLATE BINARY; -- 0
</pre>

dan added on 2019-06-12 13:50:44: (text/x-fossil-wiki)
Fixed by [5c6146b56a75a94f].