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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]