You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Remus Rusanu (JIRA)" <ji...@apache.org> on 2017/05/22 14:28:04 UTC

[jira] [Comment Edited] (CALCITE-1790) Simplify CASE P1 THEN P@ THEN ... ELSE TRUE/FALSE

    [ https://issues.apache.org/jira/browse/CALCITE-1790?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16019622#comment-16019622 ] 

Remus Rusanu edited comment on CALCITE-1790 at 5/22/17 2:27 PM:
----------------------------------------------------------------

I'm going to propose to pull the plug on this one. As I see it the risk outweighs the benefit. It triggers many test failures that are possibly exposing existing problems, but overall the end result is less stable. And I think the problems will keep piling, my hypothesis is that the breaking of the evaluation order implicit in CASE is exposing too many sensistive code areas to handle null/unknown when they did not expect before.

Add to this the fact that the complexity cap would make the behavior surprising (sometime CASE gets converted, sometimes it does not). 


was (Author: rusanu):
I'm going to propose to pull the plug on this one. As I see it the risk outweighs the benefit. It triggers many test failures the are possibly exposing existing problems, but overall the end result is less stable. And I think the problems will keep piling, my hypothesis is that the breaking of the evaluation order implicit in CASE is exposing too many sensistive code areas to handle null/unknown when they did not expect before.

Add to this the fact that the complexity cap would make the behavior surprising (sometime CASE gets converted, sometimes it does not). 

> Simplify CASE P1 THEN <boolean> P@ THEN <booleans> ...  ELSE TRUE/FALSE
> -----------------------------------------------------------------------
>
>                 Key: CALCITE-1790
>                 URL: https://issues.apache.org/jira/browse/CALCITE-1790
>             Project: Calcite
>          Issue Type: Improvement
>          Components: core
>            Reporter: Remus Rusanu
>            Assignee: Remus Rusanu
>            Priority: Minor
>
> In HIVE-14431 [~jcamachorodriguez] proposed a simplification for CASE when all branches are not nullable boolean expression into an alternative AND/OR/NOT based expression. This allows for more aggressive reductions and split/push-down on the whole.  Meantime the simplifier code migrated to Calcite so I'm reviving this here.
> The proposed simplification is:
> {code}
> CASE
> WHEN p1 THEN ex1
> WHEN p2 THEN ex2
> ...
> WHEN pn THEN exn
> ELSE TRUE/FALSE
> END
> {code}
> to be transformed into:
> {code}
> (p1 AND ex1)
> OR (not(p1) AND p2 AND x2)
> ...
> OR (not(p1) AND not(p2) ... AND not(pn-1) AND Pn AND exn)
> [OR (not(p1) AND not(p2) ... AND not(pn))]
> {code}
> The last OR is depending on the ELSE branch being TRUE/FALSE.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)