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]

Reply via email to