xuzifu666 commented on code in PR #5295:
URL: https://github.com/apache/calcite/pull/5295#discussion_r4124162417


##########
core/src/main/java/org/apache/calcite/rex/RexSimplify.java:
##########
@@ -2013,11 +2013,13 @@ private <C extends Comparable<C>> RexNode 
simplifyAnd2ForUnknownAsFalse(
       // Simplify BOOLEAN expressions if possible
       while (term.getKind() == SqlKind.EQUALS) {
         RexCall call = (RexCall) term;
-        if (call.getOperands().get(0).isAlwaysTrue()) {
+        if (call.getOperands().get(0).isAlwaysTrue()
+            && call.getOperands().get(1).getType().getSqlTypeName() == 
SqlTypeName.BOOLEAN) {

Review Comment:
   > I hope you have checked that this works for any nullability
   
   Good point @mihaibudiu . The check only looks at the type name, not 
nullability, and it is safe for both cases: =(x, TRUE) → x with nullable x (if 
x is NULL, =(NULL, TRUE) and bare NULL are both UNKNOWN, i.e. FALSE under 
UNKNOWN_AS_FALSE) and with NOT NULL x (trivially equivalent). 
   I had added NOT NULL variants of VARCHAR, INTEGER and BOOLEAN to 
testSimplifyAndEqualityTrue to cover this.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to