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 994d563f52 [fix](nereids) cannot collect decimal column stats (#13961)
994d563f52 is described below

commit 994d563f52229bcbc23c761e45c08c352640d60b
Author: minghong <minghong.z...@163.com>
AuthorDate: Thu Nov 10 11:06:38 2022 +0800

    [fix](nereids) cannot collect decimal column stats (#13961)
    
    When execute analyze table, doris fails on decimal columns.
    The root cause is the scale in decimalV2 is 9, but 2 in schema.
    There is no need to check scale for decimalV2, since it is not a float 
point type.
---
 fe/fe-core/src/main/java/org/apache/doris/analysis/ColumnDef.java | 3 +++
 .../src/main/java/org/apache/doris/analysis/DecimalLiteral.java   | 8 +++++---
 .../src/main/java/org/apache/doris/statistics/ColumnStat.java     | 2 ++
 .../java/org/apache/doris/statistics/StatisticsTaskScheduler.java | 2 +-
 4 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/ColumnDef.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/ColumnDef.java
index 170ceaea4c..bae7ff7e5c 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/ColumnDef.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/ColumnDef.java
@@ -348,6 +348,9 @@ public class ColumnDef {
                 new FloatLiteral(defaultValue);
                 break;
             case DECIMALV2:
+                //no need to check precision and scale, since V2 is fixed point
+                new DecimalLiteral(defaultValue);
+                break;
             case DECIMAL32:
             case DECIMAL64:
             case DECIMAL128:
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DecimalLiteral.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DecimalLiteral.java
index 1969c4bbed..26077c2d7f 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DecimalLiteral.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DecimalLiteral.java
@@ -110,10 +110,10 @@ public class DecimalLiteral extends LiteralExpr {
 
     public void checkPrecisionAndScale(int precision, int scale) throws 
AnalysisException {
         Preconditions.checkNotNull(this.value);
+        int realPrecision = this.value.precision();
+        int realScale = this.value.scale();
         boolean valid = true;
         if (precision != -1 && scale != -1) {
-            int realPrecision = this.value.precision();
-            int realScale = this.value.scale();
             if (precision < realPrecision || scale < realScale) {
                 valid = false;
             }
@@ -122,7 +122,9 @@ public class DecimalLiteral extends LiteralExpr {
         }
 
         if (!valid) {
-            throw new AnalysisException("Invalid precision and scale: " + 
precision + ", " + scale);
+            throw new AnalysisException(
+                    String.format("Invalid precision and scale - expect (%d, 
%d), but (%d, %d)",
+                            precision, scale, realPrecision, realScale));
         }
     }
 
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/statistics/ColumnStat.java 
b/fe/fe-core/src/main/java/org/apache/doris/statistics/ColumnStat.java
index 2029fcb5ec..ac4939f32b 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/statistics/ColumnStat.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/ColumnStat.java
@@ -407,6 +407,8 @@ public class ColumnStat {
             case DOUBLE:
                 return new FloatLiteral(columnValue);
             case DECIMALV2:
+                //no need to check precision and scale, since V2 is fixed point
+                return new DecimalLiteral(columnValue);
             case DECIMAL32:
             case DECIMAL64:
             case DECIMAL128:
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/statistics/StatisticsTaskScheduler.java
 
b/fe/fe-core/src/main/java/org/apache/doris/statistics/StatisticsTaskScheduler.java
index 6bac7d9e79..b94f6d3175 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/statistics/StatisticsTaskScheduler.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/statistics/StatisticsTaskScheduler.java
@@ -166,7 +166,7 @@ public class StatisticsTaskScheduler extends MasterDaemon {
                         } catch (TimeoutException | ExecutionException | 
InterruptedException
                                 | CancellationException e) {
                             errorMsg = e.getMessage();
-                            LOG.info("Failed to get statistics. jobId: {}, 
taskId: {}, e: {}", jobId, taskId, e);
+                            LOG.error("Failed to get statistics. jobId: {}, 
taskId: {}, e: {}", jobId, taskId, e);
                         }
 
                         try {


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

Reply via email to