[ https://issues.apache.org/jira/browse/CALCITE-4189?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17760131#comment-17760131 ]
Julian Hyde commented on CALCITE-4189: -------------------------------------- No, I think we should do this rewrite the traditional way. Simplifications by exhaustively iterating possible values (booleans, or numbers constrained by sargs) should be a separate jira case. > Simplify 'p OR (p IS NOT TRUE)' to 'TRUE' > ----------------------------------------- > > Key: CALCITE-4189 > URL: https://issues.apache.org/jira/browse/CALCITE-4189 > Project: Calcite > Issue Type: Improvement > Reporter: Thomas Rebele > Priority: Minor > > Statements of the form 'P OR P IS NOT TRUE' to 'TRUE' should always be true > (please correct me if I am wrong): > {code:java} > > select x, X='A' as EQ, > X='A' IS NOT TRUE as EQ_NOT_TRUE, > (X='A') OR ((X='A') IS NOT TRUE) as EQ_OR_EQ_NOT_TRUE > from (values 'A', 'B', null) as t(x); > +---+-------+-------------+-------------------+ > | X | EQ | EQ_NOT_TRUE | EQ_OR_EQ_NOT_TRUE | > +---+-------+-------------+-------------------+ > | A | true | false | true | > | B | false | true | true | > | | | true | true | > +---+-------+-------------+-------------------+ > {code} > Here a test case for the expected behavior: > {code:java} > @Test void testSimplifyPOrPNotTrue() { > checkSimplify( > and( > vBool(), > or( > eq(vInt(), literal(1)), > isNotTrue(eq(vInt(), literal(1))) > )), > "?0.bool0"); > }{code} > There are some other, similar expressions, such as 'P IS NOT FALSE OR NOT P', > which can be reduced to true. Maybe there's a way to handle all of them? -- This message was sent by Atlassian Jira (v8.20.10#820010)