This is an automated email from the ASF dual-hosted git repository.
kxiao 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 1de847e77f7 [fix](nereids) fix wrong result precision for add/sub
(#25751) (#26218)
1de847e77f7 is described below
commit 1de847e77f74faa13e1b610b4386e37594e11923
Author: TengJianPing <[email protected]>
AuthorDate: Wed Nov 1 22:04:15 2023 +0800
[fix](nereids) fix wrong result precision for add/sub (#25751) (#26218)
---
.../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 6b229a16fe2..78a028624f0 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
@@ -726,12 +726,12 @@ public class TypeCoercionUtilsTest {
new DecimalV3Literal(new BigDecimal("123.45")));
expression = TypeCoercionUtils.processBinaryArithmetic(add,
add.left(), add.right());
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,
sub.left(), sub.right());
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]