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]

Reply via email to