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

Julian Hyde commented on CALCITE-7758:
--------------------------------------

I like the framing that it removes redundant predicates.

The problem with test-driven development is that it can become stamp-collecting 
(as Rutherford famously said of biology).

I would like to see an architecture in the code for dealing with conditions 
that are subsumed by other conditions in the same AND. That architecture starts 
in the framing of the feature requests.

Otherwise we end up with a dozen lines of code added that that only help test 
case pass.

> RexSimplify does not absorb redundant IS NOT NULL on non-input-ref 
> sub-expressions in AND simplification
> --------------------------------------------------------------------------------------------------------
>
>                 Key: CALCITE-7758
>                 URL: https://issues.apache.org/jira/browse/CALCITE-7758
>             Project: Calcite
>          Issue Type: Improvement
>          Components: core
>            Reporter: Ruben Q L
>            Assignee: Ruben Q L
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 1.43.0
>
>
> The following simplification:
> {noformat}
> IS_NOT_NULL(x) AND (x + 1) < 10 
> =>
> (x + 1) < 10 
> {noformat}
> is correctly applied on RexSimplify (Unknown=FALSE) for RexInputRef and 
> RexFieldAccess (via simplifyAnd2ForUnknownAsFalse).
> However, if the expression X is e.g. a CAST, the simplification does not 
> occur:
> {noformat}
> IS_NOT_NULL(CAST(a)) AND (CAST(a) + 1) < 10 
> =>
> unchanged; should be: (CAST(a) + 1) < 10 
> {noformat}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to