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]