You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Julian Hyde (JIRA)" <ji...@apache.org> on 2018/09/20 17:17:00 UTC

[jira] [Commented] (CALCITE-2451) RexSimplify: fuse unknownAsFalse and IS TRUE handling

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

Julian Hyde commented on CALCITE-2451:
--------------------------------------

I also tried this approach: simulating {{unknownAsFalse}} by wrapping everything in {{... IS TRUE}}. The problem is that we now had to match an extra level in the tree (e.g. matching "x < NULL" was a 2-deep tree, now we match "(x < NULL) IS TRUE" which is a 3-deep tree), so the code got more complicated.

Also we had to add "IS TRUE" wrapper nodes on each call. Previously when RexSimplify looked at an expression that was already simplified, it would do close to zero object allocations when it returned the same result. With this new approach there are a lot of object allocations.

Vladimir has proposed maintaining a table so that we know whether an expression has already been simplified. I don't know whether that table would persist while one expression is being simplified, or for a longer duration (say for the whole of the optimization process). Either way, it adds a lot of weight,

> RexSimplify: fuse unknownAsFalse and IS TRUE handling
> -----------------------------------------------------
>
>                 Key: CALCITE-2451
>                 URL: https://issues.apache.org/jira/browse/CALCITE-2451
>             Project: Calcite
>          Issue Type: Sub-task
>          Components: core
>    Affects Versions: 1.17.0
>            Reporter: Vladimir Sitnikov
>            Assignee: Julian Hyde
>            Priority: Major
>
> It looks like {{unknownAsFalse}} duplicates {{IS_TRUE}} handling.
> In other words, {{withUnknownAsFalse(true). simplfy(expr)}} is more or less comparable to {{simplify(isTrue(expr))}}
> Implementing {{IS_TRUE/IS_FALSE/...}} simplification possibilities might make {{unknownAsFalse}} obsolete.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)