You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by mo...@apache.org on 2023/01/10 13:29:22 UTC

[doris] branch master updated: [fix](nereids) fix bug in estimation of min/max of Year (#15712)

This is an automated email from the ASF dual-hosted git repository.

morrysnow 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 542542a4b2 [fix](nereids) fix bug in estimation of min/max of Year (#15712)
542542a4b2 is described below

commit 542542a4b211281809ff20bc82da09a4f7ffb0fb
Author: minghong <en...@gmail.com>
AuthorDate: Tue Jan 10 21:29:16 2023 +0800

    [fix](nereids) fix bug in estimation of min/max of Year (#15712)
    
    1. fix bug in estimation of min/max of Year
    2. remove Utils.getLocalDatetimeFromLong(Long). this method is will throw exception if input parameter is too big. And this method is not used any more when we fix the above bug
---
 .../org/apache/doris/nereids/stats/ExpressionEstimation.java     | 9 ++++-----
 .../src/main/java/org/apache/doris/nereids/util/Utils.java       | 7 -------
 2 files changed, 4 insertions(+), 12 deletions(-)

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 c65df40433..6722e7ea69 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
@@ -42,13 +42,14 @@ import org.apache.doris.nereids.trees.expressions.functions.scalar.WeekOfYear;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.Year;
 import org.apache.doris.nereids.trees.expressions.literal.Literal;
 import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
-import org.apache.doris.nereids.util.Utils;
 import org.apache.doris.statistics.ColumnStatistic;
 import org.apache.doris.statistics.ColumnStatisticBuilder;
 import org.apache.doris.statistics.StatsDeriveResult;
 
 import com.google.common.base.Preconditions;
 
+import java.time.LocalDateTime;
+
 /**
  * Used to estimate for expressions that not producing boolean value.
  */
@@ -240,10 +241,8 @@ public class ExpressionEstimation extends ExpressionVisitor<ColumnStatistic, Sta
     @Override
     public ColumnStatistic visitYear(Year year, StatsDeriveResult context) {
         ColumnStatistic childStat = year.child().accept(this, context);
-        double maxVal = childStat.maxValue;
-        double minVal = childStat.minValue;
-        long minYear = Utils.getLocalDatetimeFromLong((long) minVal).getYear();
-        long maxYear = Utils.getLocalDatetimeFromLong((long) maxVal).getYear();
+        long minYear = LocalDateTime.MIN.getYear();
+        long maxYear = LocalDateTime.MAX.getYear();
         return new ColumnStatisticBuilder().setCount(childStat.count).setNdv(childStat.ndv).setAvgSizeByte(4)
                 .setNumNulls(childStat.numNulls).setDataSize(maxYear - minYear + 1).setMinValue(minYear)
                 .setMaxValue(maxYear).setSelectivity(1.0).setMinExpr(null).build();
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/util/Utils.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/util/Utils.java
index c8b7791671..a48aac5d2f 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/util/Utils.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/util/Utils.java
@@ -27,9 +27,6 @@ import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
 import org.apache.commons.lang3.StringUtils;
 
-import java.time.Instant;
-import java.time.LocalDateTime;
-import java.time.ZoneId;
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
@@ -213,10 +210,6 @@ public class Utils {
                 expr -> expr.anyMatch(slots::contains)));
     }
 
-    public static LocalDateTime getLocalDatetimeFromLong(long dateTime) {
-        return LocalDateTime.ofInstant(Instant.ofEpochSecond(dateTime), ZoneId.systemDefault());
-    }
-
     public static <T> void replaceList(List<T> list, T oldItem, T newItem) {
         for (int i = 0; i < list.size(); i++) {
             if (list.get(i) == oldItem) {


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