-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Closed
Labels
Description
Describe the bug
Invalid query result when searched CASE has nullable condition and boolean result
To Reproduce
SELECT c,
CASE WHEN c > 0 THEN true END AS c1,
CASE WHEN c > 0 THEN true ELSE false END AS c2
FROM (VALUES (1), (0), (-1), (NULL)) AS t(c)
ORDER BY c;This returns in DF
+------+-------+-------+
| c | c1 | c2 |
+------+-------+-------+
| -1 | false | false |
| 0 | false | false |
| 1 | true | true |
| NULL | NULL | NULL |
+------+-------+-------+
Expected behavior
This query should never returns a false value.
PostgreSQL
postgres=# SELECT c,
CASE WHEN c > 0 THEN true END AS c1,
CASE WHEN c > 0 THEN true ELSE false END AS c2
FROM (VALUES (1), (0), (-1), (NULL)) AS t(c)
ORDER BY c;
c | c1 | c2
----+----+----
-1 | | f
0 | | f
1 | t | t
| | f
(4 rows)
Trino
trino> SELECT c,
-> CASE WHEN c > 0 THEN true END AS c1,
-> CASE WHEN c > 0 THEN true ELSE false END AS c2
-> FROM (VALUES (1), (0), (-1), (NULL)) AS t(c)
-> ORDER BY c;
c | c1 | c2
------+------+-------
-1 | NULL | false
0 | NULL | false
1 | true | true
NULL | NULL | false
Additional context
No response
milevin and wolfram-s