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]