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