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 72837a3ab4 [enhancement](Nereids): Plan equals() hashcode() don't need 
LogicalProprties (#22774)
72837a3ab4 is described below

commit 72837a3ab44124f774dcf5bb86a6c77fb867e675
Author: jakevin <jakevin...@gmail.com>
AuthorDate: Fri Aug 11 14:53:47 2023 +0800

    [enhancement](Nereids): Plan equals() hashcode() don't need 
LogicalProprties (#22774)
    
    - deepEquals don't need to compare LogicalProperties
    - Plan equals() hashcode() don't need logicalProperty
---
 .../doris/nereids/trees/plans/AbstractPlan.java    | 29 ----------------------
 .../trees/plans/logical/LogicalCTEProducer.java    |  5 +---
 .../logical/LogicalDeferMaterializeResultSink.java |  5 +---
 .../trees/plans/logical/LogicalGenerate.java       |  5 +---
 .../nereids/trees/plans/logical/LogicalJoin.java   |  3 ---
 .../nereids/trees/plans/logical/LogicalLimit.java  |  6 +----
 .../trees/plans/logical/LogicalResultSink.java     |  5 +---
 .../trees/plans/physical/AbstractPhysicalJoin.java |  5 +---
 .../trees/plans/physical/PhysicalCTEAnchor.java    | 10 +++-----
 .../trees/plans/physical/PhysicalCTEProducer.java  | 10 +++-----
 .../PhysicalDeferMaterializeResultSink.java        |  9 +++----
 .../trees/plans/physical/PhysicalGenerate.java     |  5 +---
 .../trees/plans/physical/PhysicalResultSink.java   |  7 ++----
 .../apache/doris/nereids/util/MemoValidator.java   |  8 +++---
 14 files changed, 24 insertions(+), 88 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/AbstractPlan.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/AbstractPlan.java
index cfe4b31aaf..839fd425e5 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/AbstractPlan.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/AbstractPlan.java
@@ -22,7 +22,6 @@ import org.apache.doris.nereids.memo.GroupExpression;
 import org.apache.doris.nereids.properties.LogicalProperties;
 import org.apache.doris.nereids.properties.UnboundLogicalProperties;
 import org.apache.doris.nereids.trees.AbstractTreeNode;
-import org.apache.doris.nereids.trees.TreeNode;
 import org.apache.doris.nereids.trees.expressions.ExprId;
 import org.apache.doris.nereids.trees.expressions.Slot;
 import org.apache.doris.nereids.util.MutableState;
@@ -140,25 +139,6 @@ public abstract class AbstractPlan extends 
AbstractTreeNode<Plan> implements Pla
         return json;
     }
 
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (o == null || getClass() != o.getClass()) {
-            return false;
-        }
-        AbstractPlan that = (AbstractPlan) o;
-        // stats should don't need.
-        return Objects.equals(getLogicalProperties(), 
that.getLogicalProperties());
-    }
-
-    @Override
-    public int hashCode() {
-        // stats should don't need.
-        return Objects.hash(getLogicalProperties());
-    }
-
     @Override
     public List<Slot> getOutput() {
         return getLogicalProperties().getOutput();
@@ -208,13 +188,4 @@ public abstract class AbstractPlan extends 
AbstractTreeNode<Plan> implements Pla
     public void setMutableState(String key, Object state) {
         this.mutableState = this.mutableState.set(key, state);
     }
-
-    @Override
-    public boolean deepEquals(TreeNode o) {
-        AbstractPlan that = (AbstractPlan) o;
-        if (Objects.equals(getLogicalProperties(), 
that.getLogicalProperties())) {
-            return super.deepEquals(o);
-        }
-        return false;
-    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalCTEProducer.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalCTEProducer.java
index 089f1ec9fa..64f2831d07 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalCTEProducer.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalCTEProducer.java
@@ -102,15 +102,12 @@ public class LogicalCTEProducer<CHILD_TYPE extends Plan> 
extends LogicalUnary<CH
         if (o == null || getClass() != o.getClass()) {
             return false;
         }
-        if (!super.equals(o)) {
-            return false;
-        }
         LogicalCTEProducer<?> that = (LogicalCTEProducer<?>) o;
         return Objects.equals(cteId, that.cteId);
     }
 
     @Override
     public int hashCode() {
-        return Objects.hash(super.hashCode(), cteId);
+        return Objects.hash(cteId);
     }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalDeferMaterializeResultSink.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalDeferMaterializeResultSink.java
index 48ea072045..5dfbd4eba9 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalDeferMaterializeResultSink.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalDeferMaterializeResultSink.java
@@ -122,9 +122,6 @@ public class LogicalDeferMaterializeResultSink<CHILD_TYPE 
extends Plan>
         if (o == null || getClass() != o.getClass()) {
             return false;
         }
-        if (!super.equals(o)) {
-            return false;
-        }
         LogicalDeferMaterializeResultSink<?> that = 
(LogicalDeferMaterializeResultSink<?>) o;
         return selectedIndexId == that.selectedIndexId && 
Objects.equals(logicalResultSink,
                 that.logicalResultSink) && Objects.equals(olapTable, 
that.olapTable);
@@ -132,7 +129,7 @@ public class LogicalDeferMaterializeResultSink<CHILD_TYPE 
extends Plan>
 
     @Override
     public int hashCode() {
-        return Objects.hash(super.hashCode(), logicalResultSink, olapTable, 
selectedIndexId);
+        return Objects.hash(logicalResultSink, olapTable, selectedIndexId);
     }
 
     @Override
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalGenerate.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalGenerate.java
index c35879f969..8036afe256 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalGenerate.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalGenerate.java
@@ -130,9 +130,6 @@ public class LogicalGenerate<CHILD_TYPE extends Plan> 
extends LogicalUnary<CHILD
         if (o == null || getClass() != o.getClass()) {
             return false;
         }
-        if (!super.equals(o)) {
-            return false;
-        }
         LogicalGenerate<?> that = (LogicalGenerate<?>) o;
         return generators.equals(that.generators)
                 && generatorOutput.equals(that.generatorOutput);
@@ -140,6 +137,6 @@ public class LogicalGenerate<CHILD_TYPE extends Plan> 
extends LogicalUnary<CHILD
 
     @Override
     public int hashCode() {
-        return Objects.hash(super.hashCode(), generators, generatorOutput);
+        return Objects.hash(generators, generatorOutput);
     }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalJoin.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalJoin.java
index 98a86a43dc..485111ff0e 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalJoin.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalJoin.java
@@ -234,9 +234,6 @@ public class LogicalJoin<LEFT_CHILD_TYPE extends Plan, 
RIGHT_CHILD_TYPE extends
         if (o == null || getClass() != o.getClass()) {
             return false;
         }
-        if (!super.equals(o)) {
-            return false;
-        }
         LogicalJoin<?, ?> that = (LogicalJoin<?, ?>) o;
         return joinType == that.joinType
                 && hint == that.hint
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalLimit.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalLimit.java
index f03f335f01..ef61758083 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalLimit.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalLimit.java
@@ -104,7 +104,7 @@ public class LogicalLimit<CHILD_TYPE extends Plan> extends 
LogicalUnary<CHILD_TY
         if (o == null || getClass() != o.getClass()) {
             return false;
         }
-        LogicalLimit that = (LogicalLimit) o;
+        LogicalLimit<?> that = (LogicalLimit<?>) o;
         return limit == that.limit && offset == that.offset && phase == 
that.phase;
     }
 
@@ -117,10 +117,6 @@ public class LogicalLimit<CHILD_TYPE extends Plan> extends 
LogicalUnary<CHILD_TY
         return ImmutableList.of();
     }
 
-    public LogicalLimit<Plan> withLimitPhase(LimitPhase phase) {
-        return new LogicalLimit<>(limit, offset, phase, child());
-    }
-
     @Override
     public Plan withGroupExpression(Optional<GroupExpression> groupExpression) 
{
         return new LogicalLimit<>(limit, offset, phase, groupExpression, 
Optional.of(getLogicalProperties()), child());
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalResultSink.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalResultSink.java
index eb7b2556d3..cc2eb0cf37 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalResultSink.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalResultSink.java
@@ -108,15 +108,12 @@ public class LogicalResultSink<CHILD_TYPE extends Plan> 
extends LogicalSink<CHIL
         if (o == null || getClass() != o.getClass()) {
             return false;
         }
-        if (!super.equals(o)) {
-            return false;
-        }
         LogicalResultSink<?> that = (LogicalResultSink<?>) o;
         return Objects.equals(outputExprs, that.outputExprs);
     }
 
     @Override
     public int hashCode() {
-        return Objects.hash(super.hashCode(), outputExprs);
+        return Objects.hash(outputExprs);
     }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/AbstractPhysicalJoin.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/AbstractPhysicalJoin.java
index f67123522c..eb9ed7cfc9 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/AbstractPhysicalJoin.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/AbstractPhysicalJoin.java
@@ -146,9 +146,6 @@ public abstract class AbstractPhysicalJoin<
         if (o == null || getClass() != o.getClass()) {
             return false;
         }
-        if (!super.equals(o)) {
-            return false;
-        }
         AbstractPhysicalJoin<?, ?> that = (AbstractPhysicalJoin<?, ?>) o;
         return joinType == that.joinType
                 && hashJoinConjuncts.equals(that.hashJoinConjuncts)
@@ -159,7 +156,7 @@ public abstract class AbstractPhysicalJoin<
 
     @Override
     public int hashCode() {
-        return Objects.hash(super.hashCode(), joinType, hashJoinConjuncts, 
otherJoinConjuncts, markJoinSlotReference);
+        return Objects.hash(joinType, hashJoinConjuncts, otherJoinConjuncts, 
markJoinSlotReference);
     }
 
     /**
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalCTEAnchor.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalCTEAnchor.java
index 88908abe30..d3659e7177 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalCTEAnchor.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalCTEAnchor.java
@@ -77,18 +77,16 @@ public class PhysicalCTEAnchor<
         if (this == o) {
             return true;
         }
-
-        if (!super.equals(o)) {
+        if (o == null || getClass() != o.getClass()) {
             return false;
         }
-
-        PhysicalCTEAnchor that = (PhysicalCTEAnchor) o;
-        return Objects.equals(cteId, that.cteId);
+        PhysicalCTEAnchor<?, ?> that = (PhysicalCTEAnchor<?, ?>) o;
+        return cteId.equals(that.cteId);
     }
 
     @Override
     public int hashCode() {
-        return Objects.hash(super.hashCode(), cteId);
+        return Objects.hash(cteId);
     }
 
     @Override
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalCTEProducer.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalCTEProducer.java
index 8614aa26d8..53ff3e3025 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalCTEProducer.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalCTEProducer.java
@@ -74,18 +74,16 @@ public class PhysicalCTEProducer<CHILD_TYPE extends Plan> 
extends PhysicalUnary<
         if (this == o) {
             return true;
         }
-
-        if (!super.equals(o)) {
+        if (o == null || getClass() != o.getClass()) {
             return false;
         }
-
-        PhysicalCTEProducer that = (PhysicalCTEProducer) o;
-        return Objects.equals(cteId, that.cteId);
+        PhysicalCTEProducer<?> that = (PhysicalCTEProducer<?>) o;
+        return cteId.equals(that.cteId);
     }
 
     @Override
     public int hashCode() {
-        return Objects.hash(super.hashCode(), cteId);
+        return Objects.hash(cteId);
     }
 
     @Override
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalDeferMaterializeResultSink.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalDeferMaterializeResultSink.java
index ee07133006..955c441157 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalDeferMaterializeResultSink.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalDeferMaterializeResultSink.java
@@ -143,17 +143,14 @@ public class 
PhysicalDeferMaterializeResultSink<CHILD_TYPE extends Plan>
         if (o == null || getClass() != o.getClass()) {
             return false;
         }
-        if (!super.equals(o)) {
-            return false;
-        }
         PhysicalDeferMaterializeResultSink<?> that = 
(PhysicalDeferMaterializeResultSink<?>) o;
-        return selectedIndexId == that.selectedIndexId && 
Objects.equals(physicalResultSink,
-                that.physicalResultSink) && Objects.equals(olapTable, 
that.olapTable);
+        return selectedIndexId == that.selectedIndexId && 
physicalResultSink.equals(that.physicalResultSink)
+                && olapTable.equals(that.olapTable);
     }
 
     @Override
     public int hashCode() {
-        return Objects.hash(super.hashCode(), physicalResultSink, olapTable, 
selectedIndexId);
+        return Objects.hash(physicalResultSink, olapTable, selectedIndexId);
     }
 
     @Override
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalGenerate.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalGenerate.java
index d75402fb21..5cd8bd238c 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalGenerate.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalGenerate.java
@@ -106,9 +106,6 @@ public class PhysicalGenerate<CHILD_TYPE extends Plan> 
extends PhysicalUnary<CHI
         if (o == null || getClass() != o.getClass()) {
             return false;
         }
-        if (!super.equals(o)) {
-            return false;
-        }
         PhysicalGenerate<?> that = (PhysicalGenerate<?>) o;
         return generators.equals(that.generators)
                 && generatorOutput.equals(that.generatorOutput);
@@ -116,7 +113,7 @@ public class PhysicalGenerate<CHILD_TYPE extends Plan> 
extends PhysicalUnary<CHI
 
     @Override
     public int hashCode() {
-        return Objects.hash(super.hashCode(), generators, generatorOutput);
+        return Objects.hash(generators, generatorOutput);
     }
 
     @Override
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalResultSink.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalResultSink.java
index 9126ccc3ba..553b47d29b 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalResultSink.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalResultSink.java
@@ -109,16 +109,13 @@ public class PhysicalResultSink<CHILD_TYPE extends Plan> 
extends PhysicalSink<CH
         if (o == null || getClass() != o.getClass()) {
             return false;
         }
-        if (!super.equals(o)) {
-            return false;
-        }
         PhysicalResultSink<?> that = (PhysicalResultSink<?>) o;
-        return Objects.equals(outputExprs, that.outputExprs);
+        return outputExprs.equals(that.outputExprs);
     }
 
     @Override
     public int hashCode() {
-        return Objects.hash(super.hashCode(), outputExprs);
+        return Objects.hash(outputExprs);
     }
 
     @Override
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/nereids/util/MemoValidator.java 
b/fe/fe-core/src/test/java/org/apache/doris/nereids/util/MemoValidator.java
index 5e8fe59db4..1bd8f2aaf8 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/nereids/util/MemoValidator.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/util/MemoValidator.java
@@ -17,6 +17,7 @@
 
 package org.apache.doris.nereids.util;
 
+import org.apache.doris.nereids.analyzer.UnboundResultSink;
 import org.apache.doris.nereids.memo.Group;
 import org.apache.doris.nereids.memo.GroupExpression;
 import org.apache.doris.nereids.memo.GroupId;
@@ -40,10 +41,6 @@ public class MemoValidator {
     public final IdentityHashMap<Group, Void> visitedGroups = new 
IdentityHashMap<>();
     public final IdentityHashMap<GroupExpression, Void> visitedExpressions = 
new IdentityHashMap<>();
 
-    public static MemoValidator validateInitState(Memo memo) {
-        return validateInitState(memo, null);
-    }
-
     public static MemoValidator validateInitState(Memo memo, Plan initPlan) {
         Assertions.assertEquals(memo.getGroups().size(), 
memo.getGroupExpressions().size());
 
@@ -55,6 +52,9 @@ public class MemoValidator {
 
         MemoValidator validator = validate(memo);
         if (initPlan != null) {
+            if (initPlan instanceof UnboundResultSink) {
+                return validator;
+            }
             Assertions.assertEquals(initPlan, 
memo.getRoot().getLogicalExpression().getPlan());
         }
         return validator;


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

Reply via email to