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

starocean999 pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-2.0 by this push:
     new 4c85fab1701 [fix](nereids)change the decimal's precision and scale for 
cast(xx as decimal) (#36315)
4c85fab1701 is described below

commit 4c85fab1701c0dc417b959f8ee63a423d8a49e56
Author: starocean999 <[email protected]>
AuthorDate: Mon Jun 17 10:52:00 2024 +0800

    [fix](nereids)change the decimal's precision and scale for cast(xx as 
decimal) (#36315)
    
    pick from master https://github.com/apache/doris/pull/36316
---
 .../expressions/functions/executable/ExecutableFunctions.java     | 2 +-
 .../trees/expressions/functions/executable/NumericArithmetic.java | 8 ++++----
 .../src/main/java/org/apache/doris/nereids/types/DataType.java    | 2 +-
 .../nereids/rules/expression/rules/SimplifyCastRuleTest.java      | 8 ++++----
 regression-test/data/nereids_p0/datatype/test_cast.out            | 2 +-
 5 files changed, 11 insertions(+), 11 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/executable/ExecutableFunctions.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/executable/ExecutableFunctions.java
index abed55a1ff4..91a7e5ab353 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/executable/ExecutableFunctions.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/executable/ExecutableFunctions.java
@@ -76,7 +76,7 @@ public class ExecutableFunctions {
         return new DoubleLiteral(Math.abs(literal.getValue()));
     }
 
-    @ExecFunction(name = "abs", argTypes = {"DECIMAL"}, returnType = "DECIMAL")
+    @ExecFunction(name = "abs", argTypes = {"DECIMALV2"}, returnType = 
"DECIMALV2")
     public static Expression abs(DecimalLiteral literal) {
         return new DecimalLiteral(literal.getValue().abs());
     }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/executable/NumericArithmetic.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/executable/NumericArithmetic.java
index f0fb57c76d5..7016c456ebc 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/executable/NumericArithmetic.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/executable/NumericArithmetic.java
@@ -197,7 +197,7 @@ public class NumericArithmetic {
         return new DoubleLiteral(result);
     }
 
-    @ExecFunction(name = "add", argTypes = {"DECIMAL", "DECIMAL"}, returnType 
= "DECIMAL")
+    @ExecFunction(name = "add", argTypes = {"DECIMALV2", "DECIMALV2"}, 
returnType = "DECIMALV2")
     public static Expression addDecimalDecimal(DecimalLiteral first, 
DecimalLiteral second) {
         BigDecimal result = first.getValue().add(second.getValue());
         return new DecimalLiteral(result);
@@ -368,7 +368,7 @@ public class NumericArithmetic {
         return new DoubleLiteral(result);
     }
 
-    @ExecFunction(name = "subtract", argTypes = {"DECIMAL", "DECIMAL"}, 
returnType = "DECIMAL")
+    @ExecFunction(name = "subtract", argTypes = {"DECIMALV2", "DECIMALV2"}, 
returnType = "DECIMALV2")
     public static Expression subtractDecimalDecimal(DecimalLiteral first, 
DecimalLiteral second) {
         BigDecimal result = first.getValue().subtract(second.getValue());
         return new DecimalLiteral(result);
@@ -539,7 +539,7 @@ public class NumericArithmetic {
         return new DoubleLiteral(result);
     }
 
-    @ExecFunction(name = "multiply", argTypes = {"DECIMAL", "DECIMAL"}, 
returnType = "DECIMAL")
+    @ExecFunction(name = "multiply", argTypes = {"DECIMALV2", "DECIMALV2"}, 
returnType = "DECIMALV2")
     public static Expression multiplyDecimalDecimal(DecimalLiteral first, 
DecimalLiteral second) {
         BigDecimal result = first.getValue().multiply(second.getValue());
         return new DecimalLiteral(result);
@@ -570,7 +570,7 @@ public class NumericArithmetic {
         return new DoubleLiteral(result);
     }
 
-    @ExecFunction(name = "divide", argTypes = {"DECIMAL", "DECIMAL"}, 
returnType = "DECIMAL")
+    @ExecFunction(name = "divide", argTypes = {"DECIMALV2", "DECIMALV2"}, 
returnType = "DECIMALV2")
     public static Expression divideDecimal(DecimalLiteral first, 
DecimalLiteral second) {
         if (first.getValue().compareTo(BigDecimal.ZERO) == 0) {
             return new NullLiteral(first.getDataType());
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/types/DataType.java 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/types/DataType.java
index 9a1e58502b1..ba5d2b70eba 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/types/DataType.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/types/DataType.java
@@ -135,7 +135,7 @@ public abstract class DataType implements AbstractDataType {
                 if (Config.enable_decimal_conversion && tryConvert) {
                     switch (types.size()) {
                         case 1:
-                            return DecimalV3Type.CATALOG_DEFAULT;
+                            return DecimalV3Type.createDecimalV3Type(38, 9);
                         case 2:
                             return DecimalV3Type
                                     
.createDecimalV3Type(Integer.parseInt(types.get(1)));
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/expression/rules/SimplifyCastRuleTest.java
 
b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/expression/rules/SimplifyCastRuleTest.java
index 8c07b3e972c..658775cedad 100644
--- 
a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/expression/rules/SimplifyCastRuleTest.java
+++ 
b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/expression/rules/SimplifyCastRuleTest.java
@@ -38,10 +38,10 @@ class SimplifyCastRuleTest extends 
ExpressionRewriteTestHelper {
                 StringType.INSTANCE);
         assertRewriteAfterSimplify("CAST('1' AS VARCHAR)", "'1'",
                 VarcharType.createVarcharType(-1));
-        assertRewriteAfterSimplify("CAST(1 AS DECIMAL)", "1",
-                DecimalV3Type.createDecimalV3Type(9, 0));
-        assertRewriteAfterSimplify("CAST(1000 AS DECIMAL)", "1000",
-                DecimalV3Type.createDecimalV3Type(9, 0));
+        assertRewriteAfterSimplify("CAST(1 AS DECIMAL)", "1.000000000",
+                DecimalV3Type.createDecimalV3Type(38, 9));
+        assertRewriteAfterSimplify("CAST(1000 AS DECIMAL)", "1000.000000000",
+                DecimalV3Type.createDecimalV3Type(38, 9));
         assertRewriteAfterSimplify("CAST(1 AS DECIMALV3)", "1",
                 DecimalV3Type.createDecimalV3Type(9, 0));
         assertRewriteAfterSimplify("CAST(1000 AS DECIMALV3)", "1000",
diff --git a/regression-test/data/nereids_p0/datatype/test_cast.out 
b/regression-test/data/nereids_p0/datatype/test_cast.out
index 2e8095935a3..1b6de583d04 100644
--- a/regression-test/data/nereids_p0/datatype/test_cast.out
+++ b/regression-test/data/nereids_p0/datatype/test_cast.out
@@ -1,4 +1,4 @@
 -- This file is automatically generated. You should know what you did if you 
want to edit this
 -- !select --
-2.21
+2.310000000
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to