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 d8a31405c4 [refactor](Nereids): remove Penalty (#23321)
d8a31405c4 is described below

commit d8a31405c4060c4ce08c1c556150ee6556b6cb3b
Author: jakevin <jakevin...@gmail.com>
AuthorDate: Wed Aug 23 13:31:01 2023 +0800

    [refactor](Nereids): remove Penalty (#23321)
---
 .../org/apache/doris/nereids/cost/CostModelV1.java | 12 +----
 .../doris/nereids/rules/rewrite/MultiJoin.java     |  2 +-
 .../apache/doris/nereids/stats/JoinEstimation.java | 12 ++---
 .../doris/nereids/stats/StatsCalculator.java       |  8 ++--
 .../doris/nereids/trees/AbstractTreeNode.java      | 12 +----
 .../doris/nereids/trees/plans/AbstractPlan.java    | 22 ++-------
 .../nereids/trees/plans/commands/Command.java      |  6 ++-
 .../trees/plans/logical/AbstractLogicalPlan.java   | 10 ++--
 .../trees/plans/logical/LogicalSetOperation.java   |  4 +-
 .../nereids/trees/plans/logical/LogicalUnary.java  |  4 +-
 .../trees/plans/physical/AbstractPhysicalPlan.java |  2 +-
 .../apache/doris/statistics/ColumnStatistic.java   | 22 ++-------
 .../org/apache/doris/statistics/Statistics.java    | 54 +---------------------
 .../apache/doris/statistics/StatisticsBuilder.java |  2 +-
 14 files changed, 39 insertions(+), 133 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 07a8e591ab..6b07b22fab 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
@@ -287,17 +287,11 @@ class CostModelV1 extends PlanVisitor<Cost, PlanContext> {
         pattern2: (L join1 Agg1) join2 agg2
         in pattern2, join1 and join2 takes more time, but Agg1 and agg2 can be 
processed in parallel.
         */
-        double penalty = HEAVY_OPERATOR_PUNISH_FACTOR
-                * Math.min(probeStats.getPenalty(), buildStats.getPenalty());
-        if (buildStats.getWidth() >= 2) {
-            //penalty for right deep tree
-            penalty += rightRowCount;
-        }
         if (physicalHashJoin.getJoinType().isCrossJoin()) {
             return CostV1.of(leftRowCount + rightRowCount + outputRowCount,
                     0,
-                    leftRowCount + rightRowCount,
-                    penalty);
+                    leftRowCount + rightRowCount
+            );
         }
 
         if (context.isBroadcastJoin()) {
@@ -320,13 +314,11 @@ class CostModelV1 extends PlanVisitor<Cost, PlanContext> {
             // will refine this in next generation cost model.
             return CostV1.of(leftRowCount + rightRowCount * buildSideFactor + 
outputRowCount * probeSideFactor,
                     rightRowCount,
-                    0,
                     0
             );
         }
         return CostV1.of(leftRowCount + rightRowCount + outputRowCount,
                 rightRowCount,
-                0,
                 0
         );
     }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/MultiJoin.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/MultiJoin.java
index 4255648c31..6f25e90320 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/MultiJoin.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/MultiJoin.java
@@ -72,7 +72,7 @@ public class MultiJoin extends AbstractLogicalPlan {
 
     public MultiJoin(List<Plan> inputs, List<Expression> joinFilter, JoinType 
joinType,
             List<Expression> notInnerJoinConditions) {
-        super(PlanType.LOGICAL_MULTI_JOIN, inputs.toArray(new Plan[0]));
+        super(PlanType.LOGICAL_MULTI_JOIN, inputs);
         this.joinFilter = Objects.requireNonNull(joinFilter);
         this.joinType = joinType;
         this.notInnerJoinConditions = 
Objects.requireNonNull(notInnerJoinConditions);
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 98084e6829..9443972262 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
@@ -120,7 +120,7 @@ public class JoinEstimation {
                 .putColumnStatistics(rightStats.columnStatistics())
                 .build();
 
-        double outputRowCount = 1;
+        double outputRowCount;
         if (!trustableConditions.isEmpty()) {
             List<Double> joinConditionSels = trustableConditions.stream()
                     .map(expression -> 
estimateJoinConditionSel(crossJoinStats, expression))
@@ -129,21 +129,20 @@ public class JoinEstimation {
 
             double sel = 1.0;
             double denominator = 1.0;
-            for (int i = 0; i < joinConditionSels.size(); i++) {
-                sel *= Math.pow(joinConditionSels.get(i), 1 / denominator);
+            for (Double joinConditionSel : joinConditionSels) {
+                sel *= Math.pow(joinConditionSel, 1 / denominator);
                 denominator *= 2;
             }
             outputRowCount = Math.max(1, crossJoinStats.getRowCount() * sel);
             outputRowCount = outputRowCount * Math.pow(0.9, 
unTrustableCondition.size());
-            innerJoinStats = crossJoinStats.updateRowCountOnly(outputRowCount);
         } else {
             outputRowCount = Math.max(leftStats.getRowCount(), 
rightStats.getRowCount());
             Optional<Double> ratio = 
unTrustEqualRatio.stream().max(Double::compareTo);
             if (ratio.isPresent()) {
                 outputRowCount = Math.max(1, outputRowCount * ratio.get());
             }
-            innerJoinStats = crossJoinStats.updateRowCountOnly(outputRowCount);
         }
+        innerJoinStats = crossJoinStats.updateRowCountOnly(outputRowCount);
         return innerJoinStats;
     }
 
@@ -181,9 +180,6 @@ public class JoinEstimation {
                 innerJoinStats = new 
StatisticsBuilder(innerJoinStats).setRowCount(1).build();
             }
         }
-
-        innerJoinStats.setWidth(leftStats.getWidth() + rightStats.getWidth());
-        innerJoinStats.setPenalty(0);
         return innerJoinStats;
     }
 
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/stats/StatsCalculator.java 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/stats/StatsCalculator.java
index 380d34dd1d..10bb0b759b 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/stats/StatsCalculator.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/stats/StatsCalculator.java
@@ -780,8 +780,7 @@ public class StatsCalculator extends 
DefaultPlanVisitor<Statistics, Void> {
             builder.setDataSize(rowCount * 
outputExpression.getDataType().width());
             slotToColumnStats.put(outputExpression.toSlot(), columnStat);
         }
-        return new Statistics(rowCount, slotToColumnStats, 
childStats.getWidth(),
-                childStats.getPenalty() + childStats.getRowCount());
+        return new Statistics(rowCount, slotToColumnStats);
         // TODO: Update ColumnStats properly, add new mapping from output slot 
to ColumnStats
     }
 
@@ -800,8 +799,7 @@ public class StatsCalculator extends 
DefaultPlanVisitor<Statistics, Void> {
                             .setDataSize(stats.dataSize < 0 ? stats.dataSize : 
stats.dataSize * groupingSetNum);
                     return Pair.of(kv.getKey(), 
columnStatisticBuilder.build());
                 }).collect(Collectors.toMap(Pair::key, Pair::value));
-        return new Statistics(rowCount < 0 ? rowCount : rowCount * 
groupingSetNum, columnStatisticMap,
-                childStats.getWidth(), childStats.getPenalty());
+        return new Statistics(rowCount < 0 ? rowCount : rowCount * 
groupingSetNum, columnStatisticMap);
     }
 
     private Statistics computeProject(Project project) {
@@ -811,7 +809,7 @@ public class StatsCalculator extends 
DefaultPlanVisitor<Statistics, Void> {
             ColumnStatistic columnStatistic = 
ExpressionEstimation.estimate(projection, childStats);
             return new SimpleEntry<>(projection.toSlot(), columnStatistic);
         }).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, 
(item1, item2) -> item1));
-        return new Statistics(childStats.getRowCount(), columnsStats, 
childStats.getWidth(), childStats.getPenalty());
+        return new Statistics(childStats.getRowCount(), columnsStats);
     }
 
     private Statistics computeOneRowRelation(List<NamedExpression> projects) {
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/AbstractTreeNode.java 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/AbstractTreeNode.java
index 990c87bb8c..08bd198e44 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/AbstractTreeNode.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/AbstractTreeNode.java
@@ -40,17 +40,7 @@ public abstract class AbstractTreeNode<NODE_TYPE extends 
TreeNode<NODE_TYPE>>
     // https://github.com/apache/doris/pull/9807#discussion_r884829067
 
     public AbstractTreeNode(NODE_TYPE... children) {
-        this(Optional.empty(), children);
-    }
-
-    /**
-     * Constructor for plan node.
-     *
-     * @param groupExpression group expression related to the plan of this node
-     * @param children children of this node
-     */
-    public AbstractTreeNode(Optional<GroupExpression> groupExpression, 
NODE_TYPE... children) {
-        this.children = ImmutableList.copyOf(children);
+        this(Optional.empty(), ImmutableList.copyOf(children));
     }
 
     public AbstractTreeNode(Optional<GroupExpression> groupExpression, 
List<NODE_TYPE> children) {
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 0f7ca0706f..86ae62e122 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
@@ -31,6 +31,7 @@ import org.apache.doris.statistics.Statistics;
 
 import com.google.common.base.Supplier;
 import com.google.common.base.Suppliers;
+import com.google.common.collect.ImmutableList;
 import org.json.JSONArray;
 import org.json.JSONObject;
 
@@ -58,29 +59,14 @@ public abstract class AbstractPlan extends 
AbstractTreeNode<Plan> implements Pla
     // difficult to locate.
     private MutableState mutableState = EmptyMutableState.INSTANCE;
 
-    public AbstractPlan(PlanType type, Plan... children) {
-        this(type, Optional.empty(), Optional.empty(), null, children);
+    protected AbstractPlan(PlanType type, List<Plan> children) {
+        this(type, Optional.empty(), Optional.empty(), null, 
ImmutableList.copyOf(children));
     }
 
     /**
      * all parameter constructor.
      */
-    public AbstractPlan(PlanType type, Optional<GroupExpression> 
groupExpression,
-            Optional<LogicalProperties> optLogicalProperties, @Nullable 
Statistics statistics,
-            Plan... children) {
-        super(groupExpression, children);
-        this.type = Objects.requireNonNull(type, "type can not be null");
-        this.groupExpression = Objects.requireNonNull(groupExpression, 
"groupExpression can not be null");
-        Objects.requireNonNull(optLogicalProperties, "logicalProperties can 
not be null");
-        this.logicalPropertiesSupplier = Suppliers.memoize(() -> 
optLogicalProperties.orElseGet(
-                this::computeLogicalProperties));
-        this.statistics = statistics;
-    }
-
-    /**
-     * all parameter constructor.
-     */
-    public AbstractPlan(PlanType type, Optional<GroupExpression> 
groupExpression,
+    protected AbstractPlan(PlanType type, Optional<GroupExpression> 
groupExpression,
             Optional<LogicalProperties> optLogicalProperties, @Nullable 
Statistics statistics,
             List<Plan> children) {
         super(groupExpression, children);
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/Command.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/Command.java
index ac3a077821..af48fe3425 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/Command.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/Command.java
@@ -28,6 +28,8 @@ import 
org.apache.doris.nereids.trees.plans.logical.LogicalPlan;
 import org.apache.doris.qe.ConnectContext;
 import org.apache.doris.qe.StmtExecutor;
 
+import com.google.common.collect.ImmutableList;
+
 import java.util.List;
 import java.util.Optional;
 
@@ -36,8 +38,8 @@ import java.util.Optional;
  */
 public abstract class Command extends AbstractPlan implements LogicalPlan {
 
-    public Command(PlanType type, Plan... children) {
-        super(type, children);
+    protected Command(PlanType type) {
+        super(type, ImmutableList.of());
     }
 
     public void run(ConnectContext ctx, StmtExecutor executor) throws 
Exception {
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/AbstractLogicalPlan.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/AbstractLogicalPlan.java
index 738486f448..e2a65770f5 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/AbstractLogicalPlan.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/AbstractLogicalPlan.java
@@ -25,6 +25,8 @@ import org.apache.doris.nereids.trees.plans.Plan;
 import org.apache.doris.nereids.trees.plans.PlanType;
 import org.apache.doris.qe.ConnectContext;
 
+import com.google.common.collect.ImmutableList;
+
 import java.util.List;
 import java.util.Optional;
 
@@ -32,16 +34,16 @@ import java.util.Optional;
  * Abstract class for all concrete logical plan.
  */
 public abstract class AbstractLogicalPlan extends AbstractPlan implements 
LogicalPlan, Explainable {
-    public AbstractLogicalPlan(PlanType type, Plan... children) {
+    protected AbstractLogicalPlan(PlanType type, List<Plan> children) {
         super(type, children);
     }
 
-    public AbstractLogicalPlan(PlanType type, Optional<GroupExpression> 
groupExpression,
+    protected AbstractLogicalPlan(PlanType type, Optional<GroupExpression> 
groupExpression,
             Optional<LogicalProperties> logicalProperties, Plan... children) {
-        super(type, groupExpression, logicalProperties, null, children);
+        super(type, groupExpression, logicalProperties, null, 
ImmutableList.copyOf(children));
     }
 
-    public AbstractLogicalPlan(PlanType type, Optional<GroupExpression> 
groupExpression,
+    protected AbstractLogicalPlan(PlanType type, Optional<GroupExpression> 
groupExpression,
             Optional<LogicalProperties> logicalProperties, List<Plan> 
children) {
         super(type, groupExpression, logicalProperties, null, children);
     }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalSetOperation.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalSetOperation.java
index 68088d8289..ade619b322 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalSetOperation.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalSetOperation.java
@@ -62,7 +62,7 @@ public abstract class LogicalSetOperation extends 
AbstractLogicalPlan implements
     protected final List<NamedExpression> outputs;
 
     public LogicalSetOperation(PlanType planType, Qualifier qualifier, 
List<Plan> inputs) {
-        super(planType, inputs.toArray(new Plan[0]));
+        super(planType, inputs);
         this.qualifier = qualifier;
         this.outputs = ImmutableList.of();
     }
@@ -70,7 +70,7 @@ public abstract class LogicalSetOperation extends 
AbstractLogicalPlan implements
     public LogicalSetOperation(PlanType planType, Qualifier qualifier,
                                List<NamedExpression> outputs,
                                List<Plan> inputs) {
-        super(planType, inputs.toArray(new Plan[0]));
+        super(planType, inputs);
         this.qualifier = qualifier;
         this.outputs = ImmutableList.copyOf(outputs);
     }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalUnary.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalUnary.java
index 3cf666dedf..70b5ec12bc 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalUnary.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalUnary.java
@@ -24,6 +24,8 @@ import org.apache.doris.nereids.trees.plans.Plan;
 import org.apache.doris.nereids.trees.plans.PlanType;
 import org.apache.doris.nereids.trees.plans.UnaryPlan;
 
+import com.google.common.collect.ImmutableList;
+
 import java.util.List;
 import java.util.Optional;
 
@@ -35,7 +37,7 @@ public abstract class LogicalUnary<CHILD_TYPE extends Plan>
         implements UnaryPlan<CHILD_TYPE> {
 
     public LogicalUnary(PlanType type, CHILD_TYPE child) {
-        super(type, child);
+        super(type, ImmutableList.of(child));
     }
 
     public LogicalUnary(PlanType type, Optional<GroupExpression> 
groupExpression,
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/AbstractPhysicalPlan.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/AbstractPhysicalPlan.java
index d0b4391661..c00cd8c168 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/AbstractPhysicalPlan.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/AbstractPhysicalPlan.java
@@ -65,7 +65,7 @@ public abstract class AbstractPhysicalPlan extends 
AbstractPlan implements Physi
             Statistics statistics, Plan... children) {
         super(type, groupExpression,
                 logicalProperties == null ? Optional.empty() : 
Optional.of(logicalProperties),
-                statistics, children);
+                statistics, ImmutableList.copyOf(children));
         this.physicalProperties =
                 physicalProperties == null ? PhysicalProperties.ANY : 
physicalProperties;
     }
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 44b048baa2..85965e9513 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
@@ -24,13 +24,13 @@ import org.apache.doris.catalog.Type;
 import org.apache.doris.statistics.util.StatisticsUtil;
 
 import com.google.common.base.Preconditions;
+import com.google.common.collect.Sets;
 import com.google.gson.annotations.SerializedName;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 import org.json.JSONObject;
 
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -55,22 +55,10 @@ public class ColumnStatistic {
             
.setNumNulls(0).setCount(0).setMaxValue(Double.NaN).setMinValue(Double.NaN)
             .build();
 
-    public static final Set<Type> UNSUPPORTED_TYPE = new HashSet<>();
-
-    static {
-        UNSUPPORTED_TYPE.add(Type.HLL);
-        UNSUPPORTED_TYPE.add(Type.BITMAP);
-        UNSUPPORTED_TYPE.add(Type.ARRAY);
-        UNSUPPORTED_TYPE.add(Type.STRUCT);
-        UNSUPPORTED_TYPE.add(Type.MAP);
-        UNSUPPORTED_TYPE.add(Type.QUANTILE_STATE);
-        UNSUPPORTED_TYPE.add(Type.AGG_STATE);
-        UNSUPPORTED_TYPE.add(Type.JSONB);
-        UNSUPPORTED_TYPE.add(Type.VARIANT);
-        UNSUPPORTED_TYPE.add(Type.TIME);
-        UNSUPPORTED_TYPE.add(Type.TIMEV2);
-        UNSUPPORTED_TYPE.add(Type.LAMBDA_FUNCTION);
-    }
+    public static final Set<Type> UNSUPPORTED_TYPE = Sets.newHashSet(
+            Type.HLL, Type.BITMAP, Type.ARRAY, Type.STRUCT, Type.MAP, 
Type.QUANTILE_STATE, Type.AGG_STATE, Type.JSONB,
+            Type.VARIANT, Type.TIME, Type.TIMEV2, Type.LAMBDA_FUNCTION
+    );
 
     @SerializedName("count")
     public final double count;
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/statistics/Statistics.java 
b/fe/fe-core/src/main/java/org/apache/doris/statistics/Statistics.java
index daf566109a..3675c04e8c 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/statistics/Statistics.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/Statistics.java
@@ -17,7 +17,6 @@
 
 package org.apache.doris.statistics;
 
-import org.apache.doris.nereids.stats.ExpressionEstimation;
 import org.apache.doris.nereids.stats.StatsMathUtil;
 import org.apache.doris.nereids.trees.expressions.Expression;
 
@@ -27,7 +26,7 @@ import java.util.Map;
 import java.util.Map.Entry;
 
 public class Statistics {
-    private static int K_BYTES = 1024;
+    private static final int K_BYTES = 1024;
 
     private final double rowCount;
 
@@ -36,12 +35,6 @@ public class Statistics {
     // the byte size of one tuple
     private double tupleSize;
 
-    @Deprecated
-    private double width;
-
-    @Deprecated
-    private double penalty;
-
     /**
      * after filter, compute the new ndv of a column
      * @param ndv original ndv of column
@@ -62,8 +55,6 @@ public class Statistics {
         this.rowCount = another.rowCount;
         this.expressionToColumnStats = new 
HashMap<>(another.expressionToColumnStats);
         this.tupleSize = another.tupleSize;
-        this.width = another.width;
-        this.penalty = another.penalty;
     }
 
     public Statistics(double rowCount, Map<Expression, ColumnStatistic> 
expressionToColumnStats) {
@@ -71,14 +62,6 @@ public class Statistics {
         this.expressionToColumnStats = expressionToColumnStats;
     }
 
-    public Statistics(double rowCount, Map<Expression, ColumnStatistic> 
expressionToColumnStats, double width,
-            double penalty) {
-        this.rowCount = rowCount;
-        this.expressionToColumnStats = expressionToColumnStats;
-        this.width = width;
-        this.penalty = penalty;
-    }
-
     public ColumnStatistic findColumnStatistics(Expression expression) {
         return expressionToColumnStats.get(expression);
     }
@@ -98,7 +81,7 @@ public class Statistics {
         if (Double.isNaN(rowCount)) {
             return this;
         }
-        Statistics statistics = new Statistics(rowCount, new 
HashMap<>(expressionToColumnStats), width, penalty);
+        Statistics statistics = new Statistics(rowCount, new 
HashMap<>(expressionToColumnStats));
         statistics.fix(rowCount, StatsMathUtil.nonZeroDivisor(this.rowCount));
         return statistics;
     }
@@ -183,22 +166,6 @@ public class Statistics {
         return format.format(rowCount);
     }
 
-    public void setWidth(double width) {
-        this.width = width;
-    }
-
-    public void setPenalty(double penalty) {
-        this.penalty = penalty;
-    }
-
-    public double getWidth() {
-        return width;
-    }
-
-    public double getPenalty() {
-        return penalty;
-    }
-
     public int getBENumber() {
         return 1;
     }
@@ -211,25 +178,8 @@ public class Statistics {
         return zero;
     }
 
-    public boolean almostUniqueExpression(Expression expr) {
-        ExpressionEstimation estimator = new ExpressionEstimation();
-        double ndvErrorThreshold = 0.9;
-        ColumnStatistic colStats = expr.accept(estimator, this);
-        if (colStats.ndv > colStats.count * ndvErrorThreshold) {
-            return true;
-        }
-        return false;
-    }
-
-    public boolean isStatsUnknown(Expression expr) {
-        ExpressionEstimation estimator = new ExpressionEstimation();
-        ColumnStatistic colStats = expr.accept(estimator, this);
-        return colStats.isUnKnown;
-    }
-
     /**
      * merge this and other colStats.ndv, choose min
-     * @param other
      */
     public void updateNdv(Statistics other) {
         for (Expression expr : expressionToColumnStats.keySet()) {
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/statistics/StatisticsBuilder.java 
b/fe/fe-core/src/main/java/org/apache/doris/statistics/StatisticsBuilder.java
index 3622006542..a0e75f7df3 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/statistics/StatisticsBuilder.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/statistics/StatisticsBuilder.java
@@ -26,7 +26,7 @@ public class StatisticsBuilder {
 
     private double rowCount;
 
-    private Map<Expression, ColumnStatistic> expressionToColumnStats;
+    private final Map<Expression, ColumnStatistic> expressionToColumnStats;
 
     public StatisticsBuilder() {
         expressionToColumnStats = new HashMap<>();


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

Reply via email to