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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]