[ 
https://issues.apache.org/jira/browse/CALCITE-1413?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jesus Camacho Rodriguez updated CALCITE-1413:
---------------------------------------------
    Description: 
Another possible simplification for CASE statements that return boolean values.

{code:sql}
CASE
 WHEN p1 THEN e1
 WHEN p2 THEN e2
 ELSE TRUE
END
{code}

where e1...en are boolean expressions, can be rewritten into:
{code:sql}
(p1 and e1) or (p2 and e2 and not(p1)) or (not(p1) and not(p2))
{code}
if p1...pn and e1...en cannot be nullable.

  was:
Another possible simplification for CASE statements.

{code:sql}
CASE
 WHEN p1 THEN x
 WHEN p2 THEN y
 ELSE TRUE
END
{code}

can be rewritten into:
{code:sql}
(p1 and x) or (p2 and y and not(p1)) or (not(p1) and not(p2))
{code}
if p1...pn cannot be nullable.


> New CASE statement simplification
> ---------------------------------
>
>                 Key: CALCITE-1413
>                 URL: https://issues.apache.org/jira/browse/CALCITE-1413
>             Project: Calcite
>          Issue Type: Improvement
>          Components: core
>    Affects Versions: 1.9.0
>            Reporter: Jesus Camacho Rodriguez
>            Assignee: Jesus Camacho Rodriguez
>
> Another possible simplification for CASE statements that return boolean 
> values.
> {code:sql}
> CASE
>  WHEN p1 THEN e1
>  WHEN p2 THEN e2
>  ELSE TRUE
> END
> {code}
> where e1...en are boolean expressions, can be rewritten into:
> {code:sql}
> (p1 and e1) or (p2 and e2 and not(p1)) or (not(p1) and not(p2))
> {code}
> if p1...pn and e1...en cannot be nullable.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to