[ https://issues.apache.org/jira/browse/CALCITE-4189?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17759958#comment-17759958 ]
hongyu guo edited comment on CALCITE-4189 at 8/29/23 1:11 PM: -------------------------------------------------------------- Hi [~julianhyde], do you still want to use Sargs to implement this simplifications? (As you mentioned in your previous comment, it may have been 3 years already) My understanding of Sargs is not sufficient, so if using it, I will do more code reading before starting work. was (Author: JIRAUSER300840): Do you still want to use Sargs to implement this simplifications? (As you mentioned in your previous comment, it may have been 3 years already) My understanding of Sargs is not sufficient, so if Using it, I will do more code reading before starting work. > 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)