diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/PlanNode.java b/fe/fe-core/src/main/java/org/apache/doris/planner/PlanNode.java index 4b1bc1cde0..a68655eb61 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/planner/PlanNode.java +++ b/fe/fe-core/src/main/java/org/apache/doris/planner/PlanNode.java @@ -375,14 +375,18 @@ abstract public class PlanNode extends TreeNode { if (conjuncts == null) { return; } - this.conjuncts.addAll(conjuncts); + for (Expr conjunct : conjuncts) { + addConjunct(conjunct); + } } public void addConjunct(Expr conjunct) { if (conjuncts == null) { conjuncts = Lists.newArrayList(); } - conjuncts.add(conjunct); + if (!conjuncts.contains(conjunct)) { + conjuncts.add(conjunct); + } } public void setAssignedConjuncts(Set conjuncts) { @@ -636,7 +640,9 @@ abstract public class PlanNode extends TreeNode { */ protected void assignConjuncts(Analyzer analyzer) { List unassigned = analyzer.getUnassignedConjuncts(this); - conjuncts.addAll(unassigned); + for (Expr unassignedConjunct : unassigned) { + addConjunct(unassignedConjunct); + } analyzer.markConjunctsAssigned(unassigned); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/rewrite/ExtractCommonFactorsRule.java b/fe/fe-core/src/main/java/org/apache/doris/rewrite/ExtractCommonFactorsRule.java index dca24e664b..a7d7d7fa7c 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/rewrite/ExtractCommonFactorsRule.java +++ b/fe/fe-core/src/main/java/org/apache/doris/rewrite/ExtractCommonFactorsRule.java @@ -25,6 +25,7 @@ import org.apache.doris.analysis.InPredicate; import org.apache.doris.analysis.LiteralExpr; import org.apache.doris.analysis.SlotRef; import org.apache.doris.common.AnalysisException; +import org.apache.doris.planner.PlanNode; import com.google.common.base.Preconditions; import com.google.common.collect.BoundType; @@ -53,6 +54,11 @@ import java.util.Set; * -> (1