This is an automated email from the ASF dual-hosted git repository.
jakevin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new 4c8f269f19 [fix](Nereids): fix LogicalProject equals() (#23241)
4c8f269f19 is described below
commit 4c8f269f196806b99602e61977458fd21c61a303
Author: jakevin <[email protected]>
AuthorDate: Mon Aug 21 23:01:22 2023 +0800
[fix](Nereids): fix LogicalProject equals() (#23241)
* [fix](Nereids): fix LogicalProject equals()
* [refactor](Nereids): SubqueryExpr is LeafExpression
* remove toArray()
---
.../java/org/apache/doris/nereids/analyzer/UnboundSlot.java | 2 +-
.../org/apache/doris/nereids/trees/expressions/Exists.java | 3 +--
.../org/apache/doris/nereids/trees/expressions/ListQuery.java | 3 +--
.../doris/nereids/trees/expressions/OrderExpression.java | 10 ++++++++--
.../apache/doris/nereids/trees/expressions/ScalarSubquery.java | 3 +--
.../apache/doris/nereids/trees/expressions/SubqueryExpr.java | 5 ++++-
.../apache/doris/nereids/trees/expressions/WindowFrame.java | 3 +++
.../doris/nereids/trees/plans/logical/LogicalProject.java | 7 +++----
8 files changed, 22 insertions(+), 14 deletions(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/analyzer/UnboundSlot.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/analyzer/UnboundSlot.java
index 09eb1c94f5..571e1c4c6b 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/analyzer/UnboundSlot.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/analyzer/UnboundSlot.java
@@ -86,7 +86,7 @@ public class UnboundSlot extends Slot implements Unbound,
PropagateNullable {
@Override
public int hashCode() {
- return Objects.hash(nameParts.toArray());
+ return nameParts.hashCode();
}
@Override
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/Exists.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/Exists.java
index 5fba8c5687..e9f68d45a8 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/Exists.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/Exists.java
@@ -18,7 +18,6 @@
package org.apache.doris.nereids.trees.expressions;
import org.apache.doris.nereids.exceptions.UnboundException;
-import org.apache.doris.nereids.trees.expressions.shape.LeafExpression;
import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
import org.apache.doris.nereids.trees.plans.logical.LogicalPlan;
import org.apache.doris.nereids.types.BooleanType;
@@ -33,7 +32,7 @@ import java.util.Optional;
/**
* Exists subquery expression.
*/
-public class Exists extends SubqueryExpr implements LeafExpression {
+public class Exists extends SubqueryExpr {
private final boolean isNot;
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/ListQuery.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/ListQuery.java
index a617f7741e..e01302ff39 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/ListQuery.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/ListQuery.java
@@ -17,7 +17,6 @@
package org.apache.doris.nereids.trees.expressions;
-import org.apache.doris.nereids.trees.expressions.shape.LeafExpression;
import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
import org.apache.doris.nereids.trees.plans.logical.LogicalPlan;
import org.apache.doris.nereids.types.DataType;
@@ -32,7 +31,7 @@ import java.util.Optional;
* Encapsulate LogicalPlan as Expression.
* just for subquery.
*/
-public class ListQuery extends SubqueryExpr implements LeafExpression {
+public class ListQuery extends SubqueryExpr {
public ListQuery(LogicalPlan subquery) {
super(Objects.requireNonNull(subquery, "subquery can not be null"));
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/OrderExpression.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/OrderExpression.java
index 5f0a4fb21d..d09fe2c0a0 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/OrderExpression.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/OrderExpression.java
@@ -24,6 +24,7 @@ import
org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
import org.apache.doris.nereids.types.DataType;
import com.google.common.base.Preconditions;
+import com.google.common.collect.ImmutableList;
import java.util.List;
import java.util.Objects;
@@ -37,7 +38,12 @@ public class OrderExpression extends Expression implements
UnaryExpression, Prop
private final OrderKey orderKey;
public OrderExpression(OrderKey orderKey) {
- super(orderKey.getExpr());
+ super(ImmutableList.of(orderKey.getExpr()));
+ this.orderKey = orderKey;
+ }
+
+ private OrderExpression(List<Expression> children, OrderKey orderKey) {
+ super(children);
this.orderKey = orderKey;
}
@@ -61,7 +67,7 @@ public class OrderExpression extends Expression implements
UnaryExpression, Prop
@Override
public Expression withChildren(List<Expression> children) {
Preconditions.checkArgument(children.size() == 1);
- return new OrderExpression(new OrderKey(children.get(0),
orderKey.isAsc(), orderKey.isNullFirst()));
+ return new OrderExpression(children, new OrderKey(children.get(0),
orderKey.isAsc(), orderKey.isNullFirst()));
}
@Override
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/ScalarSubquery.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/ScalarSubquery.java
index 873a11c59f..48cf9491bf 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/ScalarSubquery.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/ScalarSubquery.java
@@ -18,7 +18,6 @@
package org.apache.doris.nereids.trees.expressions;
import org.apache.doris.nereids.exceptions.UnboundException;
-import org.apache.doris.nereids.trees.expressions.shape.LeafExpression;
import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
import org.apache.doris.nereids.trees.plans.logical.LogicalPlan;
import org.apache.doris.nereids.types.DataType;
@@ -32,7 +31,7 @@ import java.util.Optional;
/**
* A subquery that will return only one row and one column.
*/
-public class ScalarSubquery extends SubqueryExpr implements LeafExpression {
+public class ScalarSubquery extends SubqueryExpr {
public ScalarSubquery(LogicalPlan subquery) {
super(Objects.requireNonNull(subquery, "subquery can not be null"));
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/SubqueryExpr.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/SubqueryExpr.java
index aa29c27f87..4608d5e96a 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/SubqueryExpr.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/SubqueryExpr.java
@@ -18,6 +18,7 @@
package org.apache.doris.nereids.trees.expressions;
import org.apache.doris.nereids.exceptions.UnboundException;
+import org.apache.doris.nereids.trees.expressions.shape.LeafExpression;
import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
import org.apache.doris.nereids.trees.plans.logical.LogicalPlan;
import org.apache.doris.nereids.types.DataType;
@@ -32,19 +33,21 @@ import java.util.Optional;
/**
* Subquery Expression.
*/
-public abstract class SubqueryExpr extends Expression {
+public abstract class SubqueryExpr extends Expression implements
LeafExpression {
protected final LogicalPlan queryPlan;
protected final List<Slot> correlateSlots;
protected final Optional<Expression> typeCoercionExpr;
protected SubqueryExpr(LogicalPlan subquery) {
+ super(ImmutableList.of());
this.queryPlan = Objects.requireNonNull(subquery, "subquery can not be
null");
this.correlateSlots = ImmutableList.of();
this.typeCoercionExpr = Optional.empty();
}
protected SubqueryExpr(LogicalPlan subquery, List<Slot> correlateSlots,
Optional<Expression> typeCoercionExpr) {
+ super(ImmutableList.of());
this.queryPlan = Objects.requireNonNull(subquery, "subquery can not be
null");
this.correlateSlots = ImmutableList.copyOf(correlateSlots);
this.typeCoercionExpr = typeCoercionExpr;
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/WindowFrame.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/WindowFrame.java
index 9176aaead2..90449ed0f8 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/WindowFrame.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/WindowFrame.java
@@ -21,6 +21,8 @@ import
org.apache.doris.nereids.trees.expressions.functions.PropagateNullable;
import org.apache.doris.nereids.trees.expressions.shape.LeafExpression;
import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
+import com.google.common.collect.ImmutableList;
+
import java.util.Objects;
import java.util.Optional;
@@ -40,6 +42,7 @@ public class WindowFrame extends Expression implements
PropagateNullable, LeafEx
}
public WindowFrame(FrameUnitsType frameUnits, FrameBoundary leftBoundary,
FrameBoundary rightBoundary) {
+ super(ImmutableList.of());
this.frameUnits = frameUnits;
this.leftBoundary = leftBoundary;
this.rightBoundary = rightBoundary;
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalProject.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalProject.java
index 2d1e2db3cc..ba4e4c6d7a 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalProject.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalProject.java
@@ -151,15 +151,14 @@ public class LogicalProject<CHILD_TYPE extends Plan>
extends LogicalUnary<CHILD_
if (o == null || getClass() != o.getClass()) {
return false;
}
- LogicalProject that = (LogicalProject) o;
+ LogicalProject<?> that = (LogicalProject<?>) o;
boolean equal = projects.equals(that.projects)
&& excepts.equals(that.excepts)
&& canEliminate == that.canEliminate
&& isDistinct == that.isDistinct;
// TODO: should add exprId for UnBoundStar and BoundStar for equality
comparasion
- if (!projects.isEmpty() && (projects.get(0) instanceof UnboundStar ||
projects.get(0) instanceof BoundStar)
- && (child().getClass() == that.child().getClass())) {
- equal = Objects.equals(child(), that.child());
+ if (!projects.isEmpty() && (projects.get(0) instanceof UnboundStar ||
projects.get(0) instanceof BoundStar)) {
+ equal =
child().getLogicalProperties().equals(that.child().getLogicalProperties());
}
return equal;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]