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

Vladimir Sitnikov commented on CALCITE-2438:
--------------------------------------------

{quote}This is mostly unavoidable. The planner fires rules, and the rules are 
independent. Each rule wants to apply some basic simplifications, and relies on 
previous rules having applied the same simplifications.
{quote}
I mean multiple simplify passes over the same expression tree WITHIN a single 
{{simplify}} call.

For instance:

simplifyAndTerms(List<RexNode> terms) has two loops and it calls simplify on 
each expression twice.

simplifyAnd(RexCall e) calls simplifyList (that walks all the tree down), then 
simplifyAnd2ForUnknownAsFalse calls {{simplify_}} again.

 

> RexCall#isAlwaysTrue  return incorrect result
> ---------------------------------------------
>
>                 Key: CALCITE-2438
>                 URL: https://issues.apache.org/jira/browse/CALCITE-2438
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.17.0
>            Reporter: pengzhiwei
>            Assignee: Julian Hyde
>            Priority: Critical
>         Attachments: 屏幕快照 2018-08-02 下午7.26.20.png, 屏幕快照 2018-08-02 
> 下午7.34.26.png
>
>
> In the expression as followed:
> {code:java}
> ((sal IS NULL) IS NOT NULL) IS FALSE
> {code}
> The RexCall#isAlwaysTrue return true,however the correct answer is false.
> I find the reason is that there is a wrong logic in the  isAlwaysTrue,when 
> getKind() is IS_NOT_FALSE、IS_FALSE and IS_NOT_FALSE :
> !屏幕快照 2018-08-02 下午7.34.26.png!
> Can you have a check for me,thanks!



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

Reply via email to