This is an automated email from the ASF dual-hosted git repository.
lijibing 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 1537a05c0cb Cast min/max in partition stats table to double for
numeric column to get correct table level min/max value. (#34919)
1537a05c0cb is described below
commit 1537a05c0cbd901043421d019fdab201a486cfa3
Author: Jibing-Li <[email protected]>
AuthorDate: Fri May 17 22:28:24 2024 +0800
Cast min/max in partition stats table to double for numeric column to get
correct table level min/max value. (#34919)
---
.../java/org/apache/doris/catalog/ScalarType.java | 6 +++---
.../org/apache/doris/statistics/BaseAnalysisTask.java | 19 ++++++++++++++++---
2 files changed, 19 insertions(+), 6 deletions(-)
diff --git
a/fe/fe-common/src/main/java/org/apache/doris/catalog/ScalarType.java
b/fe/fe-common/src/main/java/org/apache/doris/catalog/ScalarType.java
index 4b4155c3d77..8b0ed24c926 100644
--- a/fe/fe-common/src/main/java/org/apache/doris/catalog/ScalarType.java
+++ b/fe/fe-common/src/main/java/org/apache/doris/catalog/ScalarType.java
@@ -635,13 +635,13 @@ public class ScalarType extends Type {
break;
case DECIMALV2:
if (Strings.isNullOrEmpty(precisionStr)) {
-
stringBuilder.append("DECIMAL").append("(").append(precision)
+
stringBuilder.append("DECIMALV2").append("(").append(precision)
.append(", ").append(scale).append(")");
} else if (!Strings.isNullOrEmpty(precisionStr) &&
!Strings.isNullOrEmpty(scaleStr)) {
-
stringBuilder.append("DECIMAL").append("(`").append(precisionStr)
+
stringBuilder.append("DECIMALV2").append("(`").append(precisionStr)
.append("`, `").append(scaleStr).append("`)");
} else {
-
stringBuilder.append("DECIMAL").append("(`").append(precisionStr).append("`)");
+
stringBuilder.append("DECIMALV2").append("(`").append(precisionStr).append("`)");
}
break;
case DECIMAL32:
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/statistics/BaseAnalysisTask.java
b/fe/fe-core/src/main/java/org/apache/doris/statistics/BaseAnalysisTask.java
index ef5909fa2d3..600434c0709 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/statistics/BaseAnalysisTask.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/BaseAnalysisTask.java
@@ -22,6 +22,7 @@ import org.apache.doris.catalog.Column;
import org.apache.doris.catalog.DatabaseIf;
import org.apache.doris.catalog.Env;
import org.apache.doris.catalog.TableIf;
+import org.apache.doris.catalog.Type;
import org.apache.doris.common.util.DebugUtil;
import org.apache.doris.datasource.CatalogIf;
import org.apache.doris.qe.AuditLogHelper;
@@ -181,8 +182,8 @@ public abstract class BaseAnalysisTask {
+ "SUM(count) AS `row_count`, "
+ "HLL_CARDINALITY(HLL_UNION(ndv)) AS `ndv`, "
+ "SUM(null_count) AS `null_count`, "
- + "MIN(min) AS `min`, "
- + "MAX(max) AS `max`, "
+ + "MIN(${min}) AS `min`, "
+ + "MAX(${max}) AS `max`, "
+ "SUM(data_size_in_bytes) AS `data_size`, "
+ "NOW() AS `update_time` FROM "
+ StatisticConstants.FULL_QUALIFIED_PARTITION_STATS_TBL_NAME
@@ -376,7 +377,10 @@ public abstract class BaseAnalysisTask {
+ Joiner.on(" UNION ALL ").join(sqls);
runInsert(sql);
}
- StringSubstitutor stringSubstitutor = new
StringSubstitutor(buildSqlParams());
+ params = buildSqlParams();
+ params.put("min", castToNumeric("min"));
+ params.put("max", castToNumeric("max"));
+ StringSubstitutor stringSubstitutor = new StringSubstitutor(params);
runQuery(stringSubstitutor.replace(MERGE_PARTITION_TEMPLATE));
}
@@ -388,6 +392,15 @@ public abstract class BaseAnalysisTask {
return Maps.newHashMap();
}
+ protected String castToNumeric(String colName) {
+ Type type = col.getType();
+ if (type.isNumericType()) {
+ return "CAST(" + colName + " AS " + type.toSql() + ")";
+ } else {
+ return colName;
+ }
+ }
+
protected void runQuery(String sql) {
long startTime = System.currentTimeMillis();
String queryId = "";
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]