morrySnow commented on code in PR #14807:
URL: https://github.com/apache/doris/pull/14807#discussion_r1052442154


##########
fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/BindSlotReference.java:
##########
@@ -255,10 +257,11 @@ public List<Rule> buildRules() {
                     Set<Slot> boundSlots = Stream.concat(Stream.of(childPlan), 
childPlan.children().stream())
                             .flatMap(plan -> plan.getOutput().stream())
                             .collect(Collectors.toSet());
-                    Expression boundPredicates = new SlotBinder(
-                            toScope(new ArrayList<>(boundSlots)), having, 
ctx.cascadesContext
-                    ).bind(having.getPredicates());
-                    return new LogicalHaving<>(boundPredicates, 
having.child());
+                    SlotBinder binder = new 
SlotBinder(toScope(Lists.newArrayList(boundSlots)), having,
+                            ctx.cascadesContext);
+                    Set<Expression> boundConjuncts = 
ExpressionUtils.extractConjunctionToSet(
+                            binder.bind(having.getPredicate()));

Review Comment:
   it is weird to merge all conjuncts and then split it into set



##########
fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalFilter.java:
##########
@@ -41,52 +45,56 @@
  * Logical filter plan.
  */
 public class LogicalFilter<CHILD_TYPE extends Plan> extends 
LogicalUnary<CHILD_TYPE> implements Filter {
-    private final Expression predicates;
+    private final List<Expression> conjuncts;
 
     private final boolean singleTableExpressionExtracted;
 
-    public LogicalFilter(Expression predicates, CHILD_TYPE child) {
-        this(predicates, Optional.empty(), Optional.empty(), child);
+    public LogicalFilter(List<Expression> conjuncts, CHILD_TYPE child) {
+        this(conjuncts, Optional.empty(), Optional.empty(), child);
     }
 
-    public LogicalFilter(Expression predicates,
-            boolean singleTableExpressionExtracted,
+    public LogicalFilter(List<Expression> conjuncts, boolean 
singleTableExpressionExtracted,
             CHILD_TYPE child) {
-        this(predicates, Optional.empty(), singleTableExpressionExtracted,
+        this(conjuncts, Optional.empty(), singleTableExpressionExtracted,
                 Optional.empty(), child);
     }
 
-    public LogicalFilter(Expression predicates, Optional<GroupExpression> 
groupExpression,
+    public LogicalFilter(List<Expression> conjuncts, Optional<GroupExpression> 
groupExpression,
             Optional<LogicalProperties> logicalProperties, CHILD_TYPE child) {
-        this(predicates, groupExpression, false, logicalProperties, child);
+        this(conjuncts, groupExpression, false, logicalProperties, child);
     }
 
-    public LogicalFilter(Expression predicates, Optional<GroupExpression> 
groupExpression,
+    public LogicalFilter(List<Expression> conjuncts, Optional<GroupExpression> 
groupExpression,
             boolean singleTableExpressionExtracted,
             Optional<LogicalProperties> logicalProperties, CHILD_TYPE child) {
         super(PlanType.LOGICAL_FILTER, groupExpression, logicalProperties, 
child);
-        this.predicates = Objects.requireNonNull(predicates, "predicates can 
not be null");
+        this.conjuncts = Objects.requireNonNull(conjuncts, "conjuncts can not 
be null");

Review Comment:
   please fix this comment~



-- 
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: commits-unsubscr...@doris.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to