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 609d20de8c [refactor](nereids)remove ColumnStatistics.selectivity
(#23039)
609d20de8c is described below
commit 609d20de8c5fb7c82a5bf70d59d682576bc3ca0f
Author: minghong <[email protected]>
AuthorDate: Fri Aug 18 16:45:54 2023 +0800
[refactor](nereids)remove ColumnStatistics.selectivity (#23039)
---
.../processor/post/RuntimeFilterPruner.java | 3 +-
.../doris/nereids/stats/ExpressionEstimation.java | 14 +++---
.../trees/expressions/functions/table/Numbers.java | 2 +-
.../apache/doris/statistics/ColumnStatistic.java | 35 ++------------
.../doris/statistics/ColumnStatisticBuilder.java | 17 ++-----
.../doris/nereids/stats/FilterEstimationTest.java | 55 +++++++---------------
.../doris/nereids/util/HyperGraphBuilder.java | 2 +-
.../org/apache/doris/statistics/CacheTest.java | 2 +-
.../doris/statistics/StatsDeriveResultTest.java | 4 +-
9 files changed, 34 insertions(+), 100 deletions(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/RuntimeFilterPruner.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/RuntimeFilterPruner.java
index aa1f10aa47..873e58c29f 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/RuntimeFilterPruner.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/RuntimeFilterPruner.java
@@ -199,8 +199,7 @@ public class RuntimeFilterPruner extends PlanPostProcessor {
if (probeColumnStat.isUnKnown || buildColumnStat.isUnKnown) {
return true;
}
- return buildColumnStat.selectivity < 1
- || probeColumnStat.notEnclosed(buildColumnStat)
+ return probeColumnStat.notEnclosed(buildColumnStat)
|| buildColumnStat.ndv < probeColumnStat.ndv * 0.95;
}
}
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/stats/ExpressionEstimation.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/stats/ExpressionEstimation.java
index 5324fce9e6..5103f787d7 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/stats/ExpressionEstimation.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/stats/ExpressionEstimation.java
@@ -222,13 +222,13 @@ public class ExpressionEstimation extends
ExpressionVisitor<ColumnStatistic, Sta
if (binaryArithmetic instanceof Add) {
return new
ColumnStatisticBuilder().setCount(rowCount).setNdv(ndv).setAvgSizeByte(leftColStats.avgSizeByte)
.setNumNulls(numNulls).setDataSize(dataSize).setMinValue(leftMin + rightMin)
- .setMaxValue(leftMax + rightMax).setSelectivity(1.0)
+ .setMaxValue(leftMax + rightMax)
.setMinExpr(null).setMaxExpr(null).build();
}
if (binaryArithmetic instanceof Subtract) {
return new
ColumnStatisticBuilder().setCount(rowCount).setNdv(ndv).setAvgSizeByte(leftColStats.avgSizeByte)
.setNumNulls(numNulls).setDataSize(dataSize).setMinValue(leftMin - rightMax)
- .setMaxValue(leftMax -
rightMin).setSelectivity(1.0).setMinExpr(null)
+ .setMaxValue(leftMax - rightMin).setMinExpr(null)
.setMaxExpr(null).build();
}
// TODO: stat for multiply and divide produced by below algorithm may
have huge deviation with reality.
@@ -244,7 +244,7 @@ public class ExpressionEstimation extends
ExpressionVisitor<ColumnStatistic, Sta
leftMax * rightMin),
leftMax * rightMax);
return new
ColumnStatisticBuilder().setCount(rowCount).setNdv(ndv).setAvgSizeByte(leftColStats.avgSizeByte)
-
.setNumNulls(numNulls).setDataSize(dataSize).setMinValue(min).setMaxValue(max).setSelectivity(1.0)
+
.setNumNulls(numNulls).setDataSize(dataSize).setMinValue(min).setMaxValue(max)
.setMaxExpr(null).setMinExpr(null).build();
}
if (binaryArithmetic instanceof Divide || binaryArithmetic instanceof
IntegralDivide) {
@@ -260,7 +260,7 @@ public class ExpressionEstimation extends
ExpressionVisitor<ColumnStatistic, Sta
leftMax / noneZeroDivisor(rightMax));
return new
ColumnStatisticBuilder().setCount(rowCount).setNdv(ndv).setAvgSizeByte(leftColStats.avgSizeByte)
.setNumNulls(numNulls).setDataSize(binaryArithmetic.getDataType().width()).setMinValue(min)
- .setMaxValue(max).setSelectivity(1.0).build();
+ .setMaxValue(max).build();
}
if (binaryArithmetic instanceof Mod) {
double min = -Math.max(Math.abs(rightMin), Math.abs(rightMax));
@@ -320,7 +320,7 @@ public class ExpressionEstimation extends
ExpressionVisitor<ColumnStatistic, Sta
public ColumnStatistic visitCount(Count count, Statistics context) {
double width = count.getDataType().width();
return new
ColumnStatisticBuilder().setCount(1D).setAvgSizeByte(width).setNumNulls(0)
-
.setDataSize(width).setMinValue(0).setMaxValue(context.getRowCount()).setSelectivity(1.0)
+
.setDataSize(width).setMinValue(0).setMaxValue(context.getRowCount())
.setMaxExpr(null).setMinExpr(null).build();
}
@@ -348,7 +348,7 @@ public class ExpressionEstimation extends
ExpressionVisitor<ColumnStatistic, Sta
.setNumNulls(childStat.numNulls)
.setDataSize(4 * childStat.count)
.setMinValue(minYear)
-
.setMaxValue(maxYear).setSelectivity(1.0).setMinExpr(null).build();
+ .setMaxValue(maxYear).setMinExpr(null).build();
}
@Override
@@ -359,7 +359,7 @@ public class ExpressionEstimation extends
ExpressionVisitor<ColumnStatistic, Sta
.setNdv(54)
.setAvgSizeByte(width)
.setNumNulls(childStat.numNulls)
-
.setDataSize(1).setMinValue(1).setMaxValue(53).setSelectivity(1.0).setMinExpr(null)
+ .setDataSize(1).setMinValue(1).setMaxValue(53).setMinExpr(null)
.build();
}
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/table/Numbers.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/table/Numbers.java
index 5cc5954c4a..e5af7477a2 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/table/Numbers.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/table/Numbers.java
@@ -72,7 +72,7 @@ public class Numbers extends TableValuedFunction {
Map<Expression, ColumnStatistic> columnToStatistics =
Maps.newHashMap();
ColumnStatistic columnStat = new ColumnStatisticBuilder()
.setCount(rowNum).setNdv(rowNum).setAvgSizeByte(8).setNumNulls(0).setDataSize(8).setMinValue(0)
- .setMaxValue(rowNum - 1).setSelectivity(1.0 / rowNum)
+ .setMaxValue(rowNum - 1)
.setMinExpr(new IntLiteral(0, Type.BIGINT))
.setMaxExpr(new IntLiteral(rowNum - 1, Type.BIGINT))
.build();
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/statistics/ColumnStatistic.java
b/fe/fe-core/src/main/java/org/apache/doris/statistics/ColumnStatistic.java
index c3ce951d79..735b5f640b 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/statistics/ColumnStatistic.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/ColumnStatistic.java
@@ -49,12 +49,11 @@ public class ColumnStatistic {
public static ColumnStatistic UNKNOWN = new
ColumnStatisticBuilder().setAvgSizeByte(1).setNdv(1)
.setNumNulls(1).setCount(1).setMaxValue(Double.POSITIVE_INFINITY).setMinValue(Double.NEGATIVE_INFINITY)
- .setSelectivity(1.0).setIsUnknown(true).setUpdatedTime("")
+ .setIsUnknown(true).setUpdatedTime("")
.build();
public static ColumnStatistic ZERO = new
ColumnStatisticBuilder().setAvgSizeByte(0).setNdv(0)
.setNumNulls(0).setCount(0).setMaxValue(Double.NaN).setMinValue(Double.NaN)
- .setSelectivity(0)
.build();
public static final Set<Type> UNSUPPORTED_TYPE = new HashSet<>();
@@ -89,19 +88,6 @@ public class ColumnStatistic {
@SerializedName("maxValue")
public final double maxValue;
public final boolean isUnKnown;
- /*
- selectivity of Column T1.A:
- if T1.A = T2.B is the inner join condition, for a given `b` in B, b in
- intersection of range(A) and range(B), selectivity means the probability
that
- the equation can be satisfied.
- We take tpch as example.
- l_orderkey = o_orderkey and o_orderstatus='o'
- there are 3 distinct o_orderstatus in orders table. filter
o_orderstatus='o' reduces orders table by 1/3
- because o_orderkey is primary key, thus the o_orderkey.selectivity =
1/3,
- and after join(l_orderkey = o_orderkey), lineitem is reduced by 1/3.
- But after filter, other columns' selectivity is still 1.0
- */
- public final double selectivity;
/*
originalNdv is the ndv in stats of ScanNode. ndv may be changed after
filter or join,
@@ -126,7 +112,7 @@ public class ColumnStatistic {
public ColumnStatistic(double count, double ndv, ColumnStatistic original,
double avgSizeByte,
double numNulls, double dataSize, double minValue, double maxValue,
- double selectivity, LiteralExpr minExpr, LiteralExpr maxExpr,
boolean isUnKnown, Histogram histogram,
+ LiteralExpr minExpr, LiteralExpr maxExpr, boolean isUnKnown,
Histogram histogram,
String updatedTime, PartitionInfo partitionInfo) {
this.count = count;
this.ndv = ndv;
@@ -136,7 +122,6 @@ public class ColumnStatistic {
this.dataSize = dataSize;
this.minValue = minValue;
this.maxValue = maxValue;
- this.selectivity = selectivity;
this.minExpr = minExpr;
this.maxExpr = maxExpr;
this.isUnKnown = isUnKnown;
@@ -207,7 +192,6 @@ public class ColumnStatistic {
} else {
columnStatisticBuilder.setMaxValue(Double.MAX_VALUE);
}
- columnStatisticBuilder.setSelectivity(1.0);
columnStatisticBuilder.setUpdatedTime(resultRow.getColumnValue("update_time"));
return columnStatisticBuilder.build();
} catch (Exception e) {
@@ -224,7 +208,7 @@ public class ColumnStatistic {
return new
ColumnStatisticBuilder().setCount(count).setNdv(ndv).setAvgSizeByte(avgSizeByte)
.setNumNulls(numNulls).setDataSize(dataSize).setMinValue(minValue)
.setMaxValue(maxValue).setMinExpr(minExpr).setMaxExpr(maxExpr)
- .setSelectivity(selectivity).setIsUnknown(isUnKnown).build();
+ .setIsUnknown(isUnKnown).build();
}
public ColumnStatistic updateByLimit(long limit, double rowCount) {
@@ -233,12 +217,6 @@ public class ColumnStatistic {
ratio = limit / rowCount;
}
double newNdv = Math.ceil(Math.min(ndv, limit));
- double newSelectivity = selectivity;
- if (newNdv != 0) {
- newSelectivity = newSelectivity * newNdv / ndv;
- } else {
- newSelectivity = 0;
- }
return new ColumnStatisticBuilder()
.setCount(Math.ceil(limit))
.setNdv(newNdv)
@@ -249,7 +227,6 @@ public class ColumnStatistic {
.setMaxValue(maxValue)
.setMinExpr(minExpr)
.setMaxExpr(maxExpr)
- .setSelectivity(newSelectivity)
.setIsUnknown(isUnKnown)
.build();
}
@@ -265,14 +242,11 @@ public class ColumnStatistic {
ColumnStatisticBuilder builder = new ColumnStatisticBuilder(this);
Double rowsAfterFilter = rowCount * selectivity;
if (isAlmostUnique(ndv, rowCount)) {
- builder.setSelectivity(this.selectivity * selectivity);
builder.setNdv(ndv * selectivity);
} else {
if (ndv > rowsAfterFilter) {
- builder.setSelectivity(this.selectivity * rowsAfterFilter /
ndv);
builder.setNdv(rowsAfterFilter);
} else {
- builder.setSelectivity(this.selectivity);
builder.setNdv(this.ndv);
}
}
@@ -338,12 +312,10 @@ public class ColumnStatistic {
statistic.put("MaxValueType", "Normal");
statistic.put("MaxValue", maxValue);
}
- statistic.put("Selectivity", selectivity);
statistic.put("Count", count);
statistic.put("AvgSizeByte", avgSizeByte);
statistic.put("NumNulls", numNulls);
statistic.put("DataSize", dataSize);
- statistic.put("Selectivity", selectivity);
statistic.put("MinExpr", minExpr);
statistic.put("MaxExpr", maxExpr);
statistic.put("IsUnKnown", isUnKnown);
@@ -394,7 +366,6 @@ public class ColumnStatistic {
stat.getDouble("DataSize"),
minValue,
maxValue,
- stat.getDouble("Selectivity"),
null,
null,
stat.getBoolean("IsUnKnown"),
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/statistics/ColumnStatisticBuilder.java
b/fe/fe-core/src/main/java/org/apache/doris/statistics/ColumnStatisticBuilder.java
index feae54e3d6..4a3af054df 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/statistics/ColumnStatisticBuilder.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/statistics/ColumnStatisticBuilder.java
@@ -31,7 +31,6 @@ public class ColumnStatisticBuilder {
private double dataSize;
private double minValue;
private double maxValue;
- private double selectivity = 1.0;
private LiteralExpr minExpr;
private LiteralExpr maxExpr;
@@ -67,7 +66,6 @@ public class ColumnStatisticBuilder {
this.dataSize = columnStatistic.dataSize;
this.minValue = columnStatistic.minValue;
this.maxValue = columnStatistic.maxValue;
- this.selectivity = columnStatistic.selectivity;
this.minExpr = columnStatistic.minExpr;
this.maxExpr = columnStatistic.maxExpr;
this.isUnknown = columnStatistic.isUnKnown;
@@ -118,11 +116,6 @@ public class ColumnStatisticBuilder {
return this;
}
- public ColumnStatisticBuilder setSelectivity(double selectivity) {
- this.selectivity = selectivity;
- return this;
- }
-
public ColumnStatisticBuilder setMinExpr(LiteralExpr minExpr) {
this.minExpr = minExpr;
return this;
@@ -166,10 +159,6 @@ public class ColumnStatisticBuilder {
return maxValue;
}
- public double getSelectivity() {
- return selectivity;
- }
-
public LiteralExpr getMinExpr() {
return minExpr;
}
@@ -202,14 +191,14 @@ public class ColumnStatisticBuilder {
public ColumnStatistic build() {
dataSize = Math.max((count - numNulls + 1) * avgSizeByte, 0);
- if (original == null) {
+ if (original == null && !isUnknown) {
original = new ColumnStatistic(count, ndv, null, avgSizeByte,
numNulls,
- dataSize, minValue, maxValue, selectivity, minExpr,
maxExpr,
+ dataSize, minValue, maxValue, minExpr, maxExpr,
isUnknown, histogram, updatedTime, partitionInfo);
original.partitionIdToColStats.putAll(partitionIdToColStats);
}
ColumnStatistic colStats = new ColumnStatistic(count, ndv, original,
avgSizeByte, numNulls,
- dataSize, minValue, maxValue, selectivity, minExpr, maxExpr,
+ dataSize, minValue, maxValue, minExpr, maxExpr,
isUnknown, histogram, updatedTime, partitionInfo);
colStats.partitionIdToColStats.putAll(partitionIdToColStats);
return colStats;
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/nereids/stats/FilterEstimationTest.java
b/fe/fe-core/src/test/java/org/apache/doris/nereids/stats/FilterEstimationTest.java
index 394dacdee8..228d2745a2 100644
---
a/fe/fe-core/src/test/java/org/apache/doris/nereids/stats/FilterEstimationTest.java
+++
b/fe/fe-core/src/test/java/org/apache/doris/nereids/stats/FilterEstimationTest.java
@@ -166,7 +166,6 @@ class FilterEstimationTest {
ColumnStatistic aStatsEst = result.findColumnStatistics(a);
Assertions.assertEquals(100, aStatsEst.minValue);
Assertions.assertEquals(200, aStatsEst.maxValue);
- Assertions.assertEquals(1.0, aStatsEst.selectivity);
Assertions.assertEquals(10, aStatsEst.ndv);
}
@@ -470,22 +469,19 @@ class FilterEstimationTest {
.setAvgSizeByte(4)
.setNumNulls(0)
.setMinValue(1000)
- .setMaxValue(10000)
- .setSelectivity(1.0);
+ .setMaxValue(10000);
ColumnStatisticBuilder builderB = new ColumnStatisticBuilder()
.setNdv(100)
.setAvgSizeByte(4)
.setNumNulls(0)
.setMinValue(0)
- .setMaxValue(500)
- .setSelectivity(1.0);
+ .setMaxValue(500);
ColumnStatisticBuilder builderC = new ColumnStatisticBuilder()
.setNdv(100)
.setAvgSizeByte(4)
.setNumNulls(0)
.setMinValue(0)
- .setMaxValue(200)
- .setSelectivity(1.0);
+ .setMaxValue(200);
slotToColumnStat.put(a, builderA.build());
slotToColumnStat.put(b, builderB.build());
slotToColumnStat.put(c, builderC.build());
@@ -527,22 +523,19 @@ class FilterEstimationTest {
.setAvgSizeByte(4)
.setNumNulls(0)
.setMinValue(0)
- .setMaxValue(100)
- .setSelectivity(1.0);
+ .setMaxValue(100);
ColumnStatisticBuilder builderB = new ColumnStatisticBuilder()
.setNdv(20)
.setAvgSizeByte(4)
.setNumNulls(0)
.setMinValue(0)
- .setMaxValue(500)
- .setSelectivity(1.0);
+ .setMaxValue(500);
ColumnStatisticBuilder builderC = new ColumnStatisticBuilder()
.setNdv(40)
.setAvgSizeByte(4)
.setNumNulls(0)
.setMinValue(0)
- .setMaxValue(40)
- .setSelectivity(1.0);
+ .setMaxValue(40);
slotToColumnStat.put(a, builderA.build());
slotToColumnStat.put(b, builderB.build());
slotToColumnStat.put(c, builderC.build());
@@ -560,13 +553,11 @@ class FilterEstimationTest {
Assertions.assertEquals(15.6, statsB.ndv, 0.1);
Assertions.assertEquals(0, statsB.minValue);
Assertions.assertEquals(500, statsB.maxValue);
- Assertions.assertEquals(1.0, statsB.selectivity);
ColumnStatistic statsC = estimated.findColumnStatistics(c);
Assertions.assertEquals(10, statsC.ndv);
Assertions.assertEquals(10, statsC.minValue);
Assertions.assertEquals(20, statsC.maxValue);
- Assertions.assertEquals(1.0, statsC.selectivity);
}
@@ -591,22 +582,19 @@ class FilterEstimationTest {
.setAvgSizeByte(4)
.setNumNulls(0)
.setMinValue(10000)
- .setMaxValue(1000)
- .setSelectivity(1.0);
+ .setMaxValue(1000);
ColumnStatisticBuilder builderB = new ColumnStatisticBuilder()
.setNdv(100)
.setAvgSizeByte(4)
.setNumNulls(0)
.setMinValue(0)
- .setMaxValue(500)
- .setSelectivity(1.0);
+ .setMaxValue(500);
ColumnStatisticBuilder builderC = new ColumnStatisticBuilder()
.setNdv(100)
.setAvgSizeByte(4)
.setNumNulls(0)
.setMinValue(0)
- .setMaxValue(200)
- .setSelectivity(1.0);
+ .setMaxValue(200);
slotToColumnStat.put(a, builderA.build());
slotToColumnStat.put(b, builderB.build());
slotToColumnStat.put(c, builderC.build());
@@ -663,22 +651,19 @@ class FilterEstimationTest {
.setAvgSizeByte(4)
.setNumNulls(0)
.setMinValue(0)
- .setMaxValue(100)
- .setSelectivity(1.0);
+ .setMaxValue(100);
ColumnStatisticBuilder builderB = new ColumnStatisticBuilder()
.setNdv(20)
.setAvgSizeByte(4)
.setNumNulls(0)
.setMinValue(0)
- .setMaxValue(500)
- .setSelectivity(1.0);
+ .setMaxValue(500);
ColumnStatisticBuilder builderC = new ColumnStatisticBuilder()
.setNdv(40)
.setAvgSizeByte(4)
.setNumNulls(0)
.setMinValue(0)
- .setMaxValue(40)
- .setSelectivity(1.0);
+ .setMaxValue(40);
slotToColumnStat.put(a, builderA.build());
slotToColumnStat.put(b, builderB.build());
slotToColumnStat.put(c, builderC.build());
@@ -735,7 +720,6 @@ class FilterEstimationTest {
.setNumNulls(0)
.setMinValue(0)
.setMaxValue(100)
- .setSelectivity(1.0)
.setCount(100);
ColumnStatisticBuilder builderB = new ColumnStatisticBuilder()
.setCount(100)
@@ -743,16 +727,14 @@ class FilterEstimationTest {
.setAvgSizeByte(4)
.setNumNulls(0)
.setMinValue(0)
- .setMaxValue(500)
- .setSelectivity(1.0);
+ .setMaxValue(500);
ColumnStatisticBuilder builderC = new ColumnStatisticBuilder()
.setCount(100)
.setNdv(40)
.setAvgSizeByte(4)
.setNumNulls(0)
.setMinValue(0)
- .setMaxValue(40)
- .setSelectivity(1.0);
+ .setMaxValue(40);
slotToColumnStat.put(a, builderA.build());
slotToColumnStat.put(b, builderB.build());
slotToColumnStat.put(c, builderC.build());
@@ -807,7 +789,6 @@ class FilterEstimationTest {
.setNumNulls(0)
.setMinValue(0)
.setMaxValue(100)
- .setSelectivity(1.0)
.setCount(100);
ColumnStatisticBuilder builderB = new ColumnStatisticBuilder()
.setCount(100)
@@ -815,16 +796,14 @@ class FilterEstimationTest {
.setAvgSizeByte(4)
.setNumNulls(0)
.setMinValue(0)
- .setMaxValue(500)
- .setSelectivity(1.0);
+ .setMaxValue(500);
ColumnStatisticBuilder builderC = new ColumnStatisticBuilder()
.setCount(100)
.setNdv(40)
.setAvgSizeByte(4)
.setNumNulls(0)
.setMinValue(0)
- .setMaxValue(40)
- .setSelectivity(1.0);
+ .setMaxValue(40);
slotToColumnStat.put(a, builderA.build());
slotToColumnStat.put(b, builderB.build());
slotToColumnStat.put(c, builderC.build());
@@ -856,7 +835,6 @@ class FilterEstimationTest {
.setNumNulls(0)
.setMaxValue(100)
.setMinValue(0)
- .setSelectivity(1.0)
.setCount(100);
DoubleLiteral begin = new DoubleLiteral(40.0);
DoubleLiteral end = new DoubleLiteral(50.0);
@@ -884,7 +862,6 @@ class FilterEstimationTest {
.setNumNulls(0)
.setMaxValue(to.getDouble())
.setMinValue(from.getDouble())
- .setSelectivity(1.0)
.setCount(100);
DateLiteral mid = new DateLiteral("1999-01-01");
GreaterThan greaterThan = new GreaterThan(a, mid);
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/nereids/util/HyperGraphBuilder.java
b/fe/fe-core/src/test/java/org/apache/doris/nereids/util/HyperGraphBuilder.java
index 885afe93f9..ac867003a3 100644
---
a/fe/fe-core/src/test/java/org/apache/doris/nereids/util/HyperGraphBuilder.java
+++
b/fe/fe-core/src/test/java/org/apache/doris/nereids/util/HyperGraphBuilder.java
@@ -327,7 +327,7 @@ public class HyperGraphBuilder {
for (Slot slot : scanPlan.getOutput()) {
slotIdToColumnStats.put(slot,
new ColumnStatistic(count, count, null, 1, 0, 0, 0,
- count, 1, null, null, true, null,
+ count, null, null, true, null,
new Date().toString(), null));
}
return new Statistics(count, slotIdToColumnStats);
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/statistics/CacheTest.java
b/fe/fe-core/src/test/java/org/apache/doris/statistics/CacheTest.java
index 197bdc11c5..ccf13711e1 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/statistics/CacheTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/statistics/CacheTest.java
@@ -290,7 +290,7 @@ public class CacheTest extends TestWithFeService {
table.getColumnStatistic("col");
result = new ColumnStatistic(1, 2,
- null, 3, 4, 5, 6, 7, 8,
+ null, 3, 4, 5, 6, 7,
null, null, false, null, new Date().toString(), null);
}
};
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/statistics/StatsDeriveResultTest.java
b/fe/fe-core/src/test/java/org/apache/doris/statistics/StatsDeriveResultTest.java
index e9736d861e..a1ff5b1358 100644
---
a/fe/fe-core/src/test/java/org/apache/doris/statistics/StatsDeriveResultTest.java
+++
b/fe/fe-core/src/test/java/org/apache/doris/statistics/StatsDeriveResultTest.java
@@ -29,7 +29,7 @@ public class StatsDeriveResultTest {
public void testUpdateRowCountByLimit() {
StatsDeriveResult stats = new StatsDeriveResult(100);
ColumnStatistic a = new ColumnStatistic(100, 10, null, 1, 5, 10,
- 1, 100, 0.5, null, null, false, null,
+ 1, 100, null, null, false, null,
new Date().toString(), null);
Id id = new Id(1);
stats.addColumnStats(id, a);
@@ -43,7 +43,6 @@ public class StatsDeriveResultTest {
Assertions.assertEquals(1, resColStats.dataSize);
Assertions.assertEquals(1, resColStats.minValue);
Assertions.assertEquals(100, resColStats.maxValue);
- Assertions.assertEquals(0, resColStats.selectivity);
Assertions.assertEquals(false, resColStats.isUnKnown);
res = stats.updateByLimit(1);
@@ -54,7 +53,6 @@ public class StatsDeriveResultTest {
Assertions.assertEquals(1, resColStats.dataSize);
Assertions.assertEquals(1, resColStats.minValue);
Assertions.assertEquals(100, resColStats.maxValue);
- Assertions.assertEquals(0.05, resColStats.selectivity);
Assertions.assertEquals(false, resColStats.isUnKnown);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]