Skip to content

Invalid query result when searched CASE has nullable condition and boolean result #14343

@findepi

Description

@findepi

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

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingoptimizerOptimizer rules

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions