[
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)