diff --git common/src/java/org/apache/hadoop/hive/common/type/HiveDecimal.java common/src/java/org/apache/hadoop/hive/common/type/HiveDecimal.java index bdf6b0c..f13f770 100644 --- common/src/java/org/apache/hadoop/hive/common/type/HiveDecimal.java +++ common/src/java/org/apache/hadoop/hive/common/type/HiveDecimal.java @@ -150,7 +150,7 @@ public HiveDecimal subtract(HiveDecimal dec) { } public HiveDecimal multiply(HiveDecimal dec) { - return new HiveDecimal(bd.multiply(dec.bd)); + return new HiveDecimal(bd.multiply(dec.bd), true); } public BigInteger unscaledValue() { diff --git common/src/test/org/apache/hadoop/hive/common/type/TestHiveDecimal.java common/src/test/org/apache/hadoop/hive/common/type/TestHiveDecimal.java new file mode 100644 index 0000000..abc63f6 --- /dev/null +++ common/src/test/org/apache/hadoop/hive/common/type/TestHiveDecimal.java @@ -0,0 +1,18 @@ +package org.apache.hadoop.hive.common.type; + +import org.junit.Test; + +import java.math.BigDecimal; +import java.math.RoundingMode; + +public class TestHiveDecimal { + @Test + public void testHiveDecimalDivide() { + HiveDecimal a = new HiveDecimal("4.53"); + HiveDecimal b = new HiveDecimal("25.86"); + HiveDecimal c = new HiveDecimal("0.087"); + + // It threw a NumberFormatException on HiveDecimal#multiply before edit. + a.divide(b).multiply(c); + } +}