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 1e39636fbfd  [fix](nereids) fix wrong result precision for add/sub 
(#25751)
1e39636fbfd is described below

commit 1e39636fbfd3e981c0cc65f0dff9e2f72fe06c5d
Author: TengJianPing <[email protected]>
AuthorDate: Thu Oct 26 21:28:34 2023 +0800

     [fix](nereids) fix wrong result precision for add/sub (#25751)
---
 .../src/main/java/org/apache/doris/nereids/trees/expressions/Add.java | 4 +++-
 .../java/org/apache/doris/nereids/trees/expressions/Subtract.java     | 4 +++-
 .../java/org/apache/doris/nereids/util/TypeCoercionUtilsTest.java     | 4 ++--
 3 files changed, 8 insertions(+), 4 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/Add.java 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/Add.java
index 2633a23388e..2be8a3c2c0c 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/Add.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/Add.java
@@ -49,7 +49,9 @@ public class Add extends BinaryArithmetic implements 
CheckOverflowNullable {
 
     @Override
     public DecimalV3Type getDataTypeForDecimalV3(DecimalV3Type t1, 
DecimalV3Type t2) {
-        return (DecimalV3Type) DecimalV3Type.widerDecimalV3Type(t1, t2, false);
+        DecimalV3Type decimalV3Type = (DecimalV3Type) 
DecimalV3Type.widerDecimalV3Type(t1, t2, false);
+        return (DecimalV3Type) 
DecimalV3Type.createDecimalV3Type(decimalV3Type.getPrecision() + 1,
+                decimalV3Type.getScale());
     }
 
     @Override
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/Subtract.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/Subtract.java
index a7367142ec4..1536d88d028 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/Subtract.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/Subtract.java
@@ -49,7 +49,9 @@ public class Subtract extends BinaryArithmetic implements 
CheckOverflowNullable
 
     @Override
     public DecimalV3Type getDataTypeForDecimalV3(DecimalV3Type t1, 
DecimalV3Type t2) {
-        return (DecimalV3Type) DecimalV3Type.widerDecimalV3Type(t1, t2, false);
+        DecimalV3Type decimalV3Type = (DecimalV3Type) 
DecimalV3Type.widerDecimalV3Type(t1, t2, false);
+        return (DecimalV3Type) 
DecimalV3Type.createDecimalV3Type(decimalV3Type.getPrecision() + 1,
+                decimalV3Type.getScale());
     }
 
     @Override
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/nereids/util/TypeCoercionUtilsTest.java
 
b/fe/fe-core/src/test/java/org/apache/doris/nereids/util/TypeCoercionUtilsTest.java
index 07404033735..a30d67d4d31 100644
--- 
a/fe/fe-core/src/test/java/org/apache/doris/nereids/util/TypeCoercionUtilsTest.java
+++ 
b/fe/fe-core/src/test/java/org/apache/doris/nereids/util/TypeCoercionUtilsTest.java
@@ -727,12 +727,12 @@ public class TypeCoercionUtilsTest {
                 new DecimalV3Literal(new BigDecimal("123.45")));
         expression = TypeCoercionUtils.processBinaryArithmetic(add);
         Assertions.assertEquals(expression.child(0),
-                new Cast(multiply.child(0), 
DecimalV3Type.createDecimalV3Type(9, 3)));
+                new Cast(multiply.child(0), 
DecimalV3Type.createDecimalV3Type(10, 3)));
 
         Subtract sub = new Subtract(new DecimalLiteral(new 
BigDecimal("987654.321")),
                 new DecimalV3Literal(new BigDecimal("123.45")));
         expression = TypeCoercionUtils.processBinaryArithmetic(sub);
         Assertions.assertEquals(expression.child(0),
-                new Cast(multiply.child(0), 
DecimalV3Type.createDecimalV3Type(9, 3)));
+                new Cast(multiply.child(0), 
DecimalV3Type.createDecimalV3Type(10, 3)));
     }
 }


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

Reply via email to