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: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]