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]

Reply via email to