From e047959014a60f71db815cf3f769867376af9fe2 Mon Sep 17 00:00:00 2001 From: wenyh <44251917+wenyh1@users.noreply.github.com> Date: Fri, 12 Aug 2022 15:26:09 +0800 Subject: [PATCH] [inner-1844] Fix the round/truncate function problem (cherry pick) (#3351) --- .../item/function/mathsfunc/ItemFuncRoundOrTruncate.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/actiontech/dble/plan/common/item/function/mathsfunc/ItemFuncRoundOrTruncate.java b/src/main/java/com/actiontech/dble/plan/common/item/function/mathsfunc/ItemFuncRoundOrTruncate.java index 937e777ca..904edd52b 100644 --- a/src/main/java/com/actiontech/dble/plan/common/item/function/mathsfunc/ItemFuncRoundOrTruncate.java +++ b/src/main/java/com/actiontech/dble/plan/common/item/function/mathsfunc/ItemFuncRoundOrTruncate.java @@ -55,8 +55,7 @@ public abstract class ItemFuncRoundOrTruncate extends ItemFuncNum1 { @Override public BigDecimal decimalOp() { hybridType = ItemResult.DECIMAL_RESULT; - if (args.get(0).isNull() || args.get(1).isNull()) { - this.nullValue = true; + if (nullValue = (args.get(0).isNull() || args.get(1).isNull())) { return BigDecimal.ZERO; } BigDecimal val0 = args.get(0).valDecimal(); @@ -130,7 +129,7 @@ public abstract class ItemFuncRoundOrTruncate extends ItemFuncNum1 { BigInteger bi = value.toBigInteger(); return new BigDecimal(getIntRound(bi, round)); } else { - return value.setScale(round, RoundingMode.FLOOR); + return value.setScale(round, truncate ? RoundingMode.FLOOR : RoundingMode.HALF_UP); } } }