This is an automated email from the ASF dual-hosted git repository.

kxiao pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-2.0 by this push:
     new 81b5f748a2d [bugfix](nereids) prune partition bug in pattern ColA <> 
ColB #25769  (#26224)
81b5f748a2d is described below

commit 81b5f748a2d4c43087804fa2850007b02fe3ce78
Author: minghong <[email protected]>
AuthorDate: Wed Nov 1 19:50:07 2023 +0800

    [bugfix](nereids) prune partition bug in pattern ColA <> ColB #25769  
(#26224)
---
 .../rules/TryEliminateUninterestedPredicates.java  | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/TryEliminateUninterestedPredicates.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/TryEliminateUninterestedPredicates.java
index 6db101a4cac..79bd0a54bf5 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/TryEliminateUninterestedPredicates.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/TryEliminateUninterestedPredicates.java
@@ -20,6 +20,7 @@ package org.apache.doris.nereids.rules.expression.rules;
 import org.apache.doris.nereids.CascadesContext;
 import org.apache.doris.nereids.rules.expression.ExpressionRewriteContext;
 import 
org.apache.doris.nereids.rules.expression.rules.TryEliminateUninterestedPredicates.Context;
+import org.apache.doris.nereids.trees.expressions.And;
 import org.apache.doris.nereids.trees.expressions.Expression;
 import org.apache.doris.nereids.trees.expressions.Slot;
 import org.apache.doris.nereids.trees.expressions.literal.BooleanLiteral;
@@ -104,6 +105,27 @@ public class TryEliminateUninterestedPredicates extends 
DefaultExpressionRewrite
         return expr;
     }
 
+    @Override
+    public Expression visitAnd(And and, Context parentContext) {
+        Expression left = and.left();
+        Context leftContext = new Context();
+        Expression newLeft = this.visit(left, leftContext);
+        if (leftContext.childrenContainsNonInterestedSlots) {
+            newLeft = BooleanLiteral.TRUE;
+        }
+
+        Expression right = and.right();
+        Context rightContext = new Context();
+        Expression newRight = this.visit(right, rightContext);
+        if (rightContext.childrenContainsNonInterestedSlots) {
+            newRight = BooleanLiteral.TRUE;
+        }
+        Expression expr = new And(newLeft, 
newRight).accept(FoldConstantRuleOnFE.INSTANCE, expressionRewriteContext);
+        parentContext.childrenContainsInterestedSlots =
+                rightContext.childrenContainsInterestedSlots || 
leftContext.childrenContainsInterestedSlots;
+        return expr;
+    }
+
     @Override
     public Expression visitSlot(Slot slot, Context context) {
         boolean isInterestedSlot = interestedSlots.contains(slot);


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to