This is an automated email from the ASF dual-hosted git repository.
englefly 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 223d7a36eb adjust distribution stats derive, fix bug in join
estimation (#17916)
223d7a36eb is described below
commit 223d7a36ebdad1436e11a43fc2d3d9fac2feca64
Author: minghong <[email protected]>
AuthorDate: Mon Mar 20 13:04:29 2023 +0800
adjust distribution stats derive, fix bug in join estimation (#17916)
---
.../org/apache/doris/nereids/cost/CostModelV1.java | 23 +++++++++++-----------
.../java/org/apache/doris/nereids/cost/CostV1.java | 5 +++--
.../apache/doris/nereids/stats/JoinEstimation.java | 4 ++--
3 files changed, 16 insertions(+), 16 deletions(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/cost/CostModelV1.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/cost/CostModelV1.java
index e415543bfa..e36a1b2aa6 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/cost/CostModelV1.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/cost/CostModelV1.java
@@ -60,8 +60,12 @@ class CostModelV1 extends PlanVisitor<Cost, PlanContext> {
public static Cost addChildCost(Plan plan, Cost planCost, Cost childCost,
int index) {
Preconditions.checkArgument(childCost instanceof CostV1 && planCost
instanceof CostV1);
- double cost = planCost.getValue() + childCost.getValue();
- return new CostV1(cost);
+ CostV1 childCostV1 = (CostV1) childCost;
+ CostV1 planCostV1 = (CostV1) planCost;
+ return new CostV1(childCostV1.getCpuCost() + planCostV1.getCpuCost(),
+ childCostV1.getMemoryCost() + planCostV1.getMemoryCost(),
+ childCostV1.getNetworkCost() + planCostV1.getNetworkCost(),
+ childCostV1.getPenalty() + planCostV1.getPenalty());
}
@Override
@@ -170,22 +174,17 @@ class CostModelV1 extends PlanVisitor<Cost, PlanContext> {
|| childStatistics.getRowCount() > rowsLimit) {
return CostV1.of(Double.MAX_VALUE, Double.MAX_VALUE,
Double.MAX_VALUE);
}
- /*
- TODOļ¼
- srcBeNum and destBeNum are not available, assume
destBeNum/srcBeNum = 1
- 1. cpu: row * destBeNum/srcBeNum
- 2. network: rows send = rows/srcBeNum * destBeNum.
- */
return CostV1.of(
- childStatistics.getRowCount(), // TODO:should multiply by
destBeNum/srcBeNum
- childStatistics.getRowCount(), // only consider one BE,
not the whole system.
- childStatistics.getRowCount() * instanceNumber); // TODO:
remove instanceNumber when BE updated
+ 0,
+ 0,
+ childStatistics.getRowCount());
+
}
// gather
if (spec instanceof DistributionSpecGather) {
return CostV1.of(
- childStatistics.getRowCount(),
+ 0,
0,
childStatistics.getRowCount());
}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/cost/CostV1.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/cost/CostV1.java
index 0b425d91c8..2747346390 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/cost/CostV1.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/cost/CostV1.java
@@ -105,8 +105,9 @@ class CostV1 implements Cost {
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
- sb.append((long) cpuCost).append("/").append((long)
memoryCost).append("/").append((long) networkCost)
- .append("/").append((long) penalty);
+ sb.append(cost).append("[").append((long) cpuCost).append("/")
+ .append((long) memoryCost).append("/").append((long)
networkCost)
+ .append("/").append((long) penalty).append("]");
return sb.toString();
}
}
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/stats/JoinEstimation.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/stats/JoinEstimation.java
index e77c060bba..0e8516e00c 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/stats/JoinEstimation.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/stats/JoinEstimation.java
@@ -39,9 +39,9 @@ public class JoinEstimation {
.sorted((a, b) -> {
double sub = a.second - b.second;
if (sub > 0) {
- return -1;
- } else if (sub < 0) {
return 1;
+ } else if (sub < 0) {
+ return -1;
} else {
return 0;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]