You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ha...@apache.org on 2013/10/14 04:54:33 UTC

svn commit: r1531781 - in /hive/trunk: common/src/java/org/apache/hadoop/hive/common/type/ ql/src/java/org/apache/hadoop/hive/ql/io/orc/ ql/src/java/org/apache/hadoop/hive/ql/udf/ ql/src/java/org/apache/hadoop/hive/ql/udf/generic/ ql/src/test/org/apach...

Author: hashutosh
Date: Mon Oct 14 02:54:33 2013
New Revision: 1531781

URL: http://svn.apache.org/r1531781
Log:
HIVE-5220 : Use factory methods to instantiate HiveDecimal instead of constructors (Xuefu Zhang via Ashutosh Chauhan)

Modified:
    hive/trunk/common/src/java/org/apache/hadoop/hive/common/type/HiveDecimal.java
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/orc/ColumnStatisticsImpl.java
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/orc/RecordReaderImpl.java
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPMinus.java
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPMod.java
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPMultiply.java
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPPlus.java
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFPosMod.java
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFPower.java
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRound.java
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFAverage.java
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFSum.java
    hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcFile.java
    hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcSerDeStats.java
    hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/udf/TestGenericUDFAbs.java
    hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/RegexSerDe.java
    hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/binarysortable/BinarySortableSerDe.java
    hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/io/HiveDecimalWritable.java
    hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyHiveDecimal.java
    hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaHiveDecimalObjectInspector.java
    hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/PrimitiveObjectInspectorConverter.java
    hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/PrimitiveObjectInspectorUtils.java
    hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/WritableHiveDecimalObjectInspector.java
    hive/trunk/serde/src/test/org/apache/hadoop/hive/serde2/binarysortable/TestBinarySortableSerDe.java
    hive/trunk/serde/src/test/org/apache/hadoop/hive/serde2/io/TestTimestampWritable.java
    hive/trunk/serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/TestObjectInspectorConverters.java

Modified: hive/trunk/common/src/java/org/apache/hadoop/hive/common/type/HiveDecimal.java
URL: http://svn.apache.org/viewvc/hive/trunk/common/src/java/org/apache/hadoop/hive/common/type/HiveDecimal.java?rev=1531781&r1=1531780&r2=1531781&view=diff
==============================================================================
--- hive/trunk/common/src/java/org/apache/hadoop/hive/common/type/HiveDecimal.java (original)
+++ hive/trunk/common/src/java/org/apache/hadoop/hive/common/type/HiveDecimal.java Mon Oct 14 02:54:33 2013
@@ -43,44 +43,47 @@ public class HiveDecimal implements Comp
 
   private BigDecimal bd = BigDecimal.ZERO;
 
-  public HiveDecimal(BigDecimal b) {
-    this(b, false);
+  private HiveDecimal(BigDecimal bd) {
+    this.bd = bd;
   }
 
-  public HiveDecimal(BigDecimal b, boolean allowRounding) {
-    bd = this.normalize(b, MAX_PRECISION, allowRounding);
-    if (bd == null) {
-      throw new NumberFormatException("Assignment would result in truncation");
-    }
+  public static HiveDecimal create(BigDecimal b) {
+    return create(b, false);
   }
 
-  public HiveDecimal(BigInteger unscaled, int scale) {
-    bd = this.normalize(new BigDecimal(unscaled, scale), MAX_PRECISION, false);
-    if (bd == null) {
-      throw new NumberFormatException("Assignment would result in truncation");
-    }
+  public static HiveDecimal create(BigDecimal b, boolean allowRounding) {
+    BigDecimal bd = normalize(b, HiveDecimal.MAX_PRECISION, allowRounding);
+    return bd == null ? null : new HiveDecimal(bd);
   }
 
-  public HiveDecimal(String dec) {
-    bd = this.normalize(new BigDecimal(dec), MAX_PRECISION, false);
-    if (bd == null) {
-      throw new NumberFormatException("Assignment would result in truncation");
-    }
+  public static HiveDecimal create(BigInteger unscaled, int scale) {
+    BigDecimal bd = normalize(new BigDecimal(unscaled, scale), HiveDecimal.MAX_PRECISION, false);
+    return bd == null ? null : new HiveDecimal(bd);
   }
 
-  public HiveDecimal(BigInteger bi) {
-    bd = this.normalize(new BigDecimal(bi), MAX_PRECISION, false);
-    if (bd == null) {
-      throw new NumberFormatException("Assignment would result in truncation");
+  public static HiveDecimal create(String dec) {
+    BigDecimal bd;
+    try {
+      bd = new BigDecimal(dec);
+    } catch (NumberFormatException ex) {
+      return null;
     }
+
+    bd = normalize(bd, HiveDecimal.MAX_PRECISION, false);
+    return bd == null ? null : new HiveDecimal(bd);
+  }
+
+  public static HiveDecimal create(BigInteger bi) {
+    BigDecimal bd = normalize(new BigDecimal(bi), HiveDecimal.MAX_PRECISION, false);
+    return bd == null ? null : new HiveDecimal(bd);
   }
 
-  public HiveDecimal(int i) {
-    bd = new BigDecimal(i);
+  public static HiveDecimal create(int i) {
+    return new HiveDecimal(new BigDecimal(i));
   }
 
-  public HiveDecimal(long l) {
-    bd = new BigDecimal(l);
+  public static HiveDecimal create(long l) {
+    return new HiveDecimal(new BigDecimal(l));
   }
 
   @Override
@@ -147,15 +150,15 @@ public class HiveDecimal implements Comp
   }
 
   public HiveDecimal setScale(int adjustedScale, int rm) {
-    return new HiveDecimal(bd.setScale(adjustedScale, rm));
+    return create(bd.setScale(adjustedScale, rm));
   }
 
   public HiveDecimal subtract(HiveDecimal dec) {
-    return new HiveDecimal(bd.subtract(dec.bd));
+    return create(bd.subtract(dec.bd));
   }
 
   public HiveDecimal multiply(HiveDecimal dec) {
-    return new HiveDecimal(bd.multiply(dec.bd));
+    return create(bd.multiply(dec.bd));
   }
 
   public BigInteger unscaledValue() {
@@ -163,34 +166,34 @@ public class HiveDecimal implements Comp
   }
 
   public HiveDecimal scaleByPowerOfTen(int n) {
-    return new HiveDecimal(bd.scaleByPowerOfTen(n));
+    return create(bd.scaleByPowerOfTen(n));
   }
 
   public HiveDecimal abs() {
-    return new HiveDecimal(bd.abs());
+    return create(bd.abs());
   }
 
   public HiveDecimal negate() {
-    return new HiveDecimal(bd.negate());
+    return create(bd.negate());
   }
 
   public HiveDecimal add(HiveDecimal dec) {
-    return new HiveDecimal(bd.add(dec.bd));
+    return create(bd.add(dec.bd));
   }
 
   public HiveDecimal pow(int n) {
-    return new HiveDecimal(bd.pow(n));
+    return create(bd.pow(n));
   }
 
   public HiveDecimal remainder(HiveDecimal dec) {
-    return new HiveDecimal(bd.remainder(dec.bd));
+    return create(bd.remainder(dec.bd));
   }
 
   public HiveDecimal divide(HiveDecimal dec) {
-    return new HiveDecimal(bd.divide(dec.bd, MAX_PRECISION, RoundingMode.HALF_UP), true);
+    return create(bd.divide(dec.bd, MAX_PRECISION, RoundingMode.HALF_UP), true);
   }
 
-  private BigDecimal trim(BigDecimal d) {
+  private static BigDecimal trim(BigDecimal d) {
     if (d.compareTo(BigDecimal.ZERO) == 0) {
       // Special case for 0, because java doesn't strip zeros correctly on that number.
       d = BigDecimal.ZERO;
@@ -204,7 +207,7 @@ public class HiveDecimal implements Comp
     return d;
   }
 
-  private BigDecimal normalize(BigDecimal d, int precision, boolean allowRounding) {
+  private static BigDecimal normalize(BigDecimal d, int precision, boolean allowRounding) {
     if (d == null) {
       return null;
     }

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/orc/ColumnStatisticsImpl.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/orc/ColumnStatisticsImpl.java?rev=1531781&r1=1531780&r2=1531781&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/orc/ColumnStatisticsImpl.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/orc/ColumnStatisticsImpl.java Mon Oct 14 02:54:33 2013
@@ -510,13 +510,13 @@ class ColumnStatisticsImpl implements Co
       super(stats);
       OrcProto.DecimalStatistics dec = stats.getDecimalStatistics();
       if (dec.hasMaximum()) {
-        maximum = new HiveDecimal(dec.getMaximum());
+        maximum = HiveDecimal.create(dec.getMaximum());
       }
       if (dec.hasMinimum()) {
-        minimum = new HiveDecimal(dec.getMinimum());
+        minimum = HiveDecimal.create(dec.getMinimum());
       }
       if (dec.hasSum()) {
-        sum = new HiveDecimal(dec.getSum());
+        sum = HiveDecimal.create(dec.getSum());
       } else {
         sum = null;
       }
@@ -541,11 +541,7 @@ class ColumnStatisticsImpl implements Co
         maximum = value;
       }
       if (sum != null) {
-        try {
-          sum = sum.add(value);
-        } catch (NumberFormatException nfe) {
-          sum = null;
-        }
+        sum = sum.add(value);
       }
     }
 

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/orc/RecordReaderImpl.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/orc/RecordReaderImpl.java?rev=1531781&r1=1531780&r2=1531781&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/orc/RecordReaderImpl.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/orc/RecordReaderImpl.java Mon Oct 14 02:54:33 2013
@@ -1057,7 +1057,7 @@ class RecordReaderImpl implements Record
     Object next(Object previous) throws IOException {
       super.next(previous);
       if (valuePresent) {
-        return new HiveDecimal(SerializationUtils.readBigInteger(valueStream),
+        return HiveDecimal.create(SerializationUtils.readBigInteger(valueStream),
             (int) scaleStream.next());
       }
       return null;
@@ -1726,6 +1726,7 @@ class RecordReaderImpl implements Record
           "NextVector is not supported operation for List type");
     }
 
+    @Override
     void checkEncoding(OrcProto.ColumnEncoding encoding) throws IOException {
       if ((encoding.getKind() != OrcProto.ColumnEncoding.Kind.DIRECT) &&
           (encoding.getKind() != OrcProto.ColumnEncoding.Kind.DIRECT_V2)) {
@@ -1819,6 +1820,7 @@ class RecordReaderImpl implements Record
           "NextVector is not supported operation for Map type");
     }
 
+    @Override
     void checkEncoding(OrcProto.ColumnEncoding encoding) throws IOException {
       if ((encoding.getKind() != OrcProto.ColumnEncoding.Kind.DIRECT) &&
           (encoding.getKind() != OrcProto.ColumnEncoding.Kind.DIRECT_V2)) {

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPMinus.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPMinus.java?rev=1531781&r1=1531780&r2=1531781&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPMinus.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPMinus.java Mon Oct 14 02:54:33 2013
@@ -18,6 +18,7 @@
 
 package org.apache.hadoop.hive.ql.udf;
 
+import org.apache.hadoop.hive.common.type.HiveDecimal;
 import org.apache.hadoop.hive.ql.exec.Description;
 import org.apache.hadoop.hive.serde2.io.ByteWritable;
 import org.apache.hadoop.hive.serde2.io.DoubleWritable;
@@ -111,17 +112,16 @@ public class UDFOPMinus extends UDFBaseN
 
   @Override
   public HiveDecimalWritable evaluate(HiveDecimalWritable a, HiveDecimalWritable b) {
-
     if ((a == null) || (b == null)) {
       return null;
     }
 
-    try {
-      decimalWritable.set(a.getHiveDecimal().subtract(b.getHiveDecimal()));
-    } catch (NumberFormatException e) {
+    HiveDecimal dec = a.getHiveDecimal().subtract(b.getHiveDecimal());
+    if (dec == null) {
       return null;
     }
 
+    decimalWritable.set(dec);
     return decimalWritable;
   }
 }

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPMod.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPMod.java?rev=1531781&r1=1531780&r2=1531781&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPMod.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPMod.java Mon Oct 14 02:54:33 2013
@@ -123,12 +123,12 @@ public class UDFOPMod extends UDFBaseNum
       return null;
     }
 
-    try {
-      decimalWritable.set(av.remainder(bv));
-    } catch(NumberFormatException e) {
+    HiveDecimal dec = av.remainder(bv);
+    if (dec == null) {
       return null;
     }
 
+    decimalWritable.set(dec);
     return decimalWritable;
   }
 }

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPMultiply.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPMultiply.java?rev=1531781&r1=1531780&r2=1531781&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPMultiply.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPMultiply.java Mon Oct 14 02:54:33 2013
@@ -18,6 +18,7 @@
 
 package org.apache.hadoop.hive.ql.udf;
 
+import org.apache.hadoop.hive.common.type.HiveDecimal;
 import org.apache.hadoop.hive.ql.exec.Description;
 import org.apache.hadoop.hive.serde2.io.ByteWritable;
 import org.apache.hadoop.hive.serde2.io.DoubleWritable;
@@ -115,12 +116,12 @@ public class UDFOPMultiply extends UDFBa
       return null;
     }
 
-    try {
-      decimalWritable.set(a.getHiveDecimal().multiply(b.getHiveDecimal()));
-    } catch (NumberFormatException e) {
+    HiveDecimal dec = a.getHiveDecimal().multiply(b.getHiveDecimal());
+    if (dec == null) {
       return null;
     }
 
+    decimalWritable.set(dec);
     return decimalWritable;
   }
 }

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPPlus.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPPlus.java?rev=1531781&r1=1531780&r2=1531781&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPPlus.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPPlus.java Mon Oct 14 02:54:33 2013
@@ -18,6 +18,7 @@
 
 package org.apache.hadoop.hive.ql.udf;
 
+import org.apache.hadoop.hive.common.type.HiveDecimal;
 import org.apache.hadoop.hive.ql.exec.Description;
 import org.apache.hadoop.hive.serde2.io.ByteWritable;
 import org.apache.hadoop.hive.serde2.io.DoubleWritable;
@@ -120,11 +121,12 @@ public class UDFOPPlus extends UDFBaseNu
       return null;
     }
 
-    try {
-      decimalWritable.set(a.getHiveDecimal().add(b.getHiveDecimal()));
-    } catch(NumberFormatException e) {
-      return null;
-    }
+      HiveDecimal dec = a.getHiveDecimal().add(b.getHiveDecimal());
+      if (dec == null) {
+        return null;
+      }
+
+      decimalWritable.set(dec);
     return decimalWritable;
   }
 

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFPosMod.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFPosMod.java?rev=1531781&r1=1531780&r2=1531781&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFPosMod.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFPosMod.java Mon Oct 14 02:54:33 2013
@@ -124,12 +124,12 @@ public class UDFPosMod extends UDFBaseNu
       return null;
     }
 
-    try {
-      decimalWritable.set(av.remainder(bv).add(bv).remainder(bv));
-    } catch (NumberFormatException e) {
+    HiveDecimal dec = av.remainder(bv).add(bv).remainder(bv);
+    if (dec == null) {
       return null;
     }
 
+    decimalWritable.set(dec);
     return decimalWritable;
   }
 }

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFPower.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFPower.java?rev=1531781&r1=1531780&r2=1531781&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFPower.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFPower.java Mon Oct 14 02:54:33 2013
@@ -18,6 +18,7 @@
 
 package org.apache.hadoop.hive.ql.udf;
 
+import org.apache.hadoop.hive.common.type.HiveDecimal;
 import org.apache.hadoop.hive.ql.exec.Description;
 import org.apache.hadoop.hive.ql.exec.UDF;
 import org.apache.hadoop.hive.serde2.io.DoubleWritable;
@@ -69,14 +70,15 @@ public class UDFPower extends UDF {
   public HiveDecimalWritable evaluate(HiveDecimalWritable a, IntWritable b) {
     if (a == null || b == null) {
       return null;
-    } else {
-      try {
-        resultHiveDecimal.set(a.getHiveDecimal().pow(b.get()));
-      } catch (NumberFormatException e) {
-        return null;
-      }
-      return resultHiveDecimal;
     }
+
+    HiveDecimal dec = a.getHiveDecimal().pow(b.get());
+    if (dec == null) {
+      return null;
+    }
+
+    resultHiveDecimal.set(dec);
+    return resultHiveDecimal;
   }
 
 }

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRound.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRound.java?rev=1531781&r1=1531780&r2=1531781&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRound.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRound.java Mon Oct 14 02:54:33 2013
@@ -79,12 +79,13 @@ public class UDFRound extends UDF {
     if (n == null) {
       return null;
     }
+
     HiveDecimal bd = n.getHiveDecimal();
-    try {
-      bd = n.getHiveDecimal().setScale(i, HiveDecimal.ROUND_HALF_UP);
-    } catch (NumberFormatException e) {
+    bd = n.getHiveDecimal().setScale(i, HiveDecimal.ROUND_HALF_UP);
+    if (bd == null) {
       return null;
     }
+
     decimalWritable.set(bd);
     return decimalWritable;
   }

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFAverage.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFAverage.java?rev=1531781&r1=1531780&r2=1531781&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFAverage.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFAverage.java Mon Oct 14 02:54:33 2013
@@ -173,11 +173,7 @@ public class GenericUDAFAverage extends 
       HiveDecimal value = PrimitiveObjectInspectorUtils.getHiveDecimal(parameter, oi);
       aggregation.count++;
       if (aggregation.sum != null) {
-        try {
-          aggregation.sum = aggregation.sum.add(value);
-        } catch (NumberFormatException e) {
-          aggregation.sum = null;
-        }
+        aggregation.sum = aggregation.sum.add(value);
       }
     }
 
@@ -190,11 +186,7 @@ public class GenericUDAFAverage extends 
       }
       aggregation.count += partialCount;
       if (aggregation.sum != null) {
-        try {
-          aggregation.sum = aggregation.sum.add(value);
-        } catch (NumberFormatException e) {
-          aggregation.sum = null;
-        }
+        aggregation.sum = aggregation.sum.add(value);
       }
     }
 
@@ -217,11 +209,7 @@ public class GenericUDAFAverage extends 
         return null;
       } else {
         HiveDecimalWritable result = new HiveDecimalWritable(HiveDecimal.ZERO);
-        try {
-          result.set(aggregation.sum.divide(new HiveDecimal(aggregation.count)));
-        } catch (NumberFormatException e) {
-          result = null;
-        }
+        result.set(aggregation.sum.divide(HiveDecimal.create(aggregation.count)));
         return result;
       }
     }

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFSum.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFSum.java?rev=1531781&r1=1531780&r2=1531781&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFSum.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFSum.java Mon Oct 14 02:54:33 2013
@@ -151,13 +151,7 @@ public class GenericUDAFSum extends Abst
         }
 
         myagg.empty = false;
-
-        try {
-          myagg.sum = myagg.sum.add(
-            PrimitiveObjectInspectorUtils.getHiveDecimal(partial, inputOI));
-        } catch (NumberFormatException e) {
-          myagg.sum = null;
-        }
+        myagg.sum = myagg.sum.add(PrimitiveObjectInspectorUtils.getHiveDecimal(partial, inputOI));
       }
     }
 

Modified: hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcFile.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcFile.java?rev=1531781&r1=1531780&r2=1531781&view=diff
==============================================================================
--- hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcFile.java (original)
+++ hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcFile.java Mon Oct 14 02:54:33 2013
@@ -363,7 +363,7 @@ public class TestOrcFile {
     assertEquals(Timestamp.valueOf("2000-03-12 15:00:00"),
         tso.getPrimitiveJavaObject(readerInspector.getStructFieldData(row,
             fields.get(12))));
-    assertEquals(new HiveDecimal("12345678.6547456"),
+    assertEquals(HiveDecimal.create("12345678.6547456"),
         dco.getPrimitiveJavaObject(readerInspector.getStructFieldData(row,
             fields.get(13))));
 
@@ -445,7 +445,7 @@ public class TestOrcFile {
     assertEquals(Timestamp.valueOf("2000-03-12 15:00:01"),
         tso.getPrimitiveJavaObject(readerInspector.getStructFieldData(row,
             fields.get(12))));
-    assertEquals(new HiveDecimal("12345678.6547457"),
+    assertEquals(HiveDecimal.create("12345678.6547457"),
         dco.getPrimitiveJavaObject(readerInspector.getStructFieldData(row,
             fields.get(13))));
 
@@ -965,7 +965,7 @@ public class TestOrcFile {
     synchronized (TestOrcFile.class) {
       inspector = OrcStruct.createObjectInspector(0, types);
     }
-    HiveDecimal maxValue = new HiveDecimal("100000000000000000000");
+    HiveDecimal maxValue = HiveDecimal.create("100000000000000000000");
     Writer writer = OrcFile.createWriter(testFilePath,
                                          OrcFile.writerOptions(conf)
                                          .inspector(inspector)
@@ -977,13 +977,13 @@ public class TestOrcFile {
     OrcUnion union = new OrcUnion();
     row.setFieldValue(1, union);
     row.setFieldValue(0, Timestamp.valueOf("2000-03-12 15:00:00"));
-    HiveDecimal value = new HiveDecimal("12345678.6547456");
+    HiveDecimal value = HiveDecimal.create("12345678.6547456");
     row.setFieldValue(2, value);
     union.set((byte) 0, new IntWritable(42));
     writer.addRow(row);
     row.setFieldValue(0, Timestamp.valueOf("2000-03-20 12:00:00.123456789"));
     union.set((byte) 1, new Text("hello"));
-    value = new HiveDecimal("-5643.234");
+    value = HiveDecimal.create("-5643.234");
     row.setFieldValue(2, value);
     writer.addRow(row);
     row.setFieldValue(0, null);
@@ -997,7 +997,7 @@ public class TestOrcFile {
     writer.addRow(row);
     union.set((byte) 0, new IntWritable(200000));
     row.setFieldValue(0, Timestamp.valueOf("1900-01-01 00:00:00"));
-    value = new HiveDecimal("100000000000000000000");
+    value = HiveDecimal.create("100000000000000000000");
     row.setFieldValue(2, value);
     writer.addRow(row);
     Random rand = new Random(42);
@@ -1008,7 +1008,7 @@ public class TestOrcFile {
       } else {
         union.set((byte) 1, new Text(new Integer(i*i).toString()));
       }
-      value = new HiveDecimal(new BigInteger(118, rand),
+      value = HiveDecimal.create(new BigInteger(118, rand),
           rand.nextInt(36));
       row.setFieldValue(2, value);
       if (maxValue.compareTo(value) < 0) {
@@ -1036,7 +1036,7 @@ public class TestOrcFile {
     DecimalColumnStatistics stats =
         (DecimalColumnStatistics) reader.getStatistics()[5];
     assertEquals(303, stats.getNumberOfValues());
-    assertEquals(new HiveDecimal("-5643.234"), stats.getMinimum());
+    assertEquals(HiveDecimal.create("-5643.234"), stats.getMinimum());
     assertEquals(maxValue, stats.getMaximum());
     assertEquals(null, stats.getSum());
     int stripeCount = 0;
@@ -1069,14 +1069,14 @@ public class TestOrcFile {
     union = (OrcUnion) row.getFieldValue(1);
     assertEquals(0, union.getTag());
     assertEquals(new IntWritable(42), union.getObject());
-    assertEquals(new HiveDecimal("12345678.6547456"), row.getFieldValue(2));
+    assertEquals(HiveDecimal.create("12345678.6547456"), row.getFieldValue(2));
     row = (OrcStruct) rows.next(row);
     assertEquals(2, rows.getRowNumber());
     assertEquals(Timestamp.valueOf("2000-03-20 12:00:00.123456789"),
         row.getFieldValue(0));
     assertEquals(1, union.getTag());
     assertEquals(new Text("hello"), union.getObject());
-    assertEquals(new HiveDecimal("-5643.234"), row.getFieldValue(2));
+    assertEquals(HiveDecimal.create("-5643.234"), row.getFieldValue(2));
     row = (OrcStruct) rows.next(row);
     assertEquals(null, row.getFieldValue(0));
     assertEquals(null, row.getFieldValue(1));
@@ -1096,7 +1096,7 @@ public class TestOrcFile {
     assertEquals(Timestamp.valueOf("1900-01-01 00:00:00"),
         row.getFieldValue(0));
     assertEquals(new IntWritable(200000), union.getObject());
-    assertEquals(new HiveDecimal("100000000000000000000"),
+    assertEquals(HiveDecimal.create("100000000000000000000"),
                  row.getFieldValue(2));
     rand = new Random(42);
     for(int i=1900; i < 2200; ++i) {
@@ -1110,7 +1110,7 @@ public class TestOrcFile {
         assertEquals(1, union.getTag());
         assertEquals(new Text(new Integer(i*i).toString()), union.getObject());
       }
-      assertEquals(new HiveDecimal(new BigInteger(118, rand),
+      assertEquals(HiveDecimal.create(new BigInteger(118, rand),
                                    rand.nextInt(36)), row.getFieldValue(2));
     }
     for(int i=0; i < 5000; ++i) {
@@ -1132,7 +1132,7 @@ public class TestOrcFile {
         row.getFieldValue(0));
     assertEquals(1, union.getTag());
     assertEquals(new Text("hello"), union.getObject());
-    assertEquals(new HiveDecimal("-5643.234"), row.getFieldValue(2));
+    assertEquals(HiveDecimal.create("-5643.234"), row.getFieldValue(2));
     rows.close();
   }
 

Modified: hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcSerDeStats.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcSerDeStats.java?rev=1531781&r1=1531780&r2=1531781&view=diff
==============================================================================
--- hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcSerDeStats.java (original)
+++ hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcSerDeStats.java Mon Oct 14 02:54:33 2013
@@ -397,7 +397,7 @@ public class TestOrcSerDeStats {
         Long.MAX_VALUE, (float) 1.0, -15.0, bytes(0, 1, 2, 3, 4), "hi",
         new MiddleStruct(inner(1, "bye"), inner(2, "sigh")),
         list(inner(3, "good"), inner(4, "bad")),
-        map(), Timestamp.valueOf("2000-03-12 15:00:00"), new HiveDecimal(
+        map(), Timestamp.valueOf("2000-03-12 15:00:00"), HiveDecimal.create(
             "12345678.6547456")));
     // 1 + 2 + 4 + 8 + 4 + 8 + 3 + 4 + 3 + 4 + 4 + 4 + 3 + 4 + 2 + 4 + 3 + 5 + 4 + 5 + 7 + 4 + 7 =
     // 97
@@ -406,7 +406,7 @@ public class TestOrcSerDeStats {
         new MiddleStruct(inner(1, "bye"), inner(2, "sigh")),
         list(inner(100000000, "cat"), inner(-100000, "in"), inner(1234, "hat")),
         map(inner(5, "chani"), inner(1, "mauddib")), Timestamp.valueOf("2000-03-11 15:00:00"),
-        new HiveDecimal("12345678.6547452")));
+        HiveDecimal.create("12345678.6547452")));
     writer.close();
     long rowCount = writer.getNumberOfRows();
     long rawDataSize = writer.getRawDataSize();
@@ -490,7 +490,7 @@ public class TestOrcSerDeStats {
         Long.MAX_VALUE, (float) 1.0, -15.0, bytes(0, 1, 2, 3, 4), "hi",
         new MiddleStruct(inner(1, "bye"), inner(2, "sigh")),
         list(inner(3, "good"), inner(4, "bad")),
-        map(), Timestamp.valueOf("2000-03-12 15:00:00"), new HiveDecimal(
+        map(), Timestamp.valueOf("2000-03-12 15:00:00"), HiveDecimal.create(
             "12345678.6547456")));
     // 1 + 2 + 4 + 8 + 4 + 8 + 3 + 4 + 3 + 4 + 4 + 4 + 3 + 4 + 2 + 4 + 3 + 5 + 4 + 5 + 7 + 4 + 7 =
     // 97
@@ -499,7 +499,7 @@ public class TestOrcSerDeStats {
         new MiddleStruct(inner(1, "bye"), inner(2, "sigh")),
         list(inner(100000000, "cat"), inner(-100000, "in"), inner(1234, "hat")),
         map(inner(5, "chani"), inner(1, "mauddib")), Timestamp.valueOf("2000-03-11 15:00:00"),
-        new HiveDecimal("12345678.6547452")));
+        HiveDecimal.create("12345678.6547452")));
     writer.close();
     long rowCount = writer.getNumberOfRows();
     long rawDataSize = writer.getRawDataSize();

Modified: hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/udf/TestGenericUDFAbs.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/udf/TestGenericUDFAbs.java?rev=1531781&r1=1531780&r2=1531781&view=diff
==============================================================================
--- hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/udf/TestGenericUDFAbs.java (original)
+++ hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/udf/TestGenericUDFAbs.java Mon Oct 14 02:54:33 2013
@@ -139,7 +139,7 @@ public class TestGenericUDFAbs extends T
     ObjectInspector[] arguments = {valueOI};
 
     udf.initialize(arguments);
-    DeferredObject valueObj = new DeferredJavaObject(new HiveDecimalWritable(new HiveDecimal(
+    DeferredObject valueObj = new DeferredJavaObject(new HiveDecimalWritable(HiveDecimal.create(
         "107.123456789")));
     DeferredObject[] args = {valueObj};
     HiveDecimalWritable output = (HiveDecimalWritable) udf.evaluate(args);
@@ -147,7 +147,7 @@ public class TestGenericUDFAbs extends T
     assertEquals("abs() test for HiveDecimal failed ", 107.123456789, output.getHiveDecimal()
         .doubleValue());
 
-    valueObj = new DeferredJavaObject(new HiveDecimalWritable(new HiveDecimal("-107.123456789")));
+    valueObj = new DeferredJavaObject(new HiveDecimalWritable(HiveDecimal.create("-107.123456789")));
     args[0] = valueObj;
     output = (HiveDecimalWritable) udf.evaluate(args);
 

Modified: hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/RegexSerDe.java
URL: http://svn.apache.org/viewvc/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/RegexSerDe.java?rev=1531781&r1=1531780&r2=1531781&view=diff
==============================================================================
--- hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/RegexSerDe.java (original)
+++ hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/RegexSerDe.java Mon Oct 14 02:54:33 2013
@@ -126,7 +126,7 @@ public class RegexSerDe extends Abstract
       TypeInfo typeInfo = columnTypes.get(c);
       if (typeInfo instanceof PrimitiveTypeInfo) {
         PrimitiveTypeInfo pti = (PrimitiveTypeInfo) columnTypes.get(c);
-        AbstractPrimitiveJavaObjectInspector oi = 
+        AbstractPrimitiveJavaObjectInspector oi =
             PrimitiveObjectInspectorFactory.getPrimitiveJavaObjectInspector(pti);
         columnOIs.add(oi);
       } else {
@@ -232,8 +232,7 @@ public class RegexSerDe extends Abstract
           d = Date.valueOf(t);
           row.set(c, d);
         } else if (typeName.equals(serdeConstants.DECIMAL_TYPE_NAME)) {
-          HiveDecimal bd;
-          bd = new HiveDecimal(t);
+          HiveDecimal bd = HiveDecimal.create(t);
           row.set(c, bd);
         } else if (typeInfo instanceof VarcharTypeInfo) {
           HiveVarchar hv = new HiveVarchar(t, ((VarcharTypeInfo)typeInfo).getLength());

Modified: hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/binarysortable/BinarySortableSerDe.java
URL: http://svn.apache.org/viewvc/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/binarysortable/BinarySortableSerDe.java?rev=1531781&r1=1531780&r2=1531781&view=diff
==============================================================================
--- hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/binarysortable/BinarySortableSerDe.java (original)
+++ hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/binarysortable/BinarySortableSerDe.java Mon Oct 14 02:54:33 2013
@@ -405,7 +405,7 @@ public class BinarySortableSerDe extends
 
         String digits = new String(decimalBuffer, 0, length, decimalCharSet);
         BigInteger bi = new BigInteger(digits);
-        HiveDecimal bd = new HiveDecimal(bi).scaleByPowerOfTen(factor-length);
+        HiveDecimal bd = HiveDecimal.create(bi).scaleByPowerOfTen(factor-length);
 
         if (!positive) {
           bd = bd.negate();

Modified: hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/io/HiveDecimalWritable.java
URL: http://svn.apache.org/viewvc/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/io/HiveDecimalWritable.java?rev=1531781&r1=1531780&r2=1531781&view=diff
==============================================================================
--- hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/io/HiveDecimalWritable.java (original)
+++ hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/io/HiveDecimalWritable.java Mon Oct 14 02:54:33 2013
@@ -81,7 +81,7 @@ public class HiveDecimalWritable impleme
   }
 
   public HiveDecimal getHiveDecimal() {
-    return new HiveDecimal(new BigInteger(internalStorage), scale);
+    return HiveDecimal.create(new BigInteger(internalStorage), scale);
   }
 
   @Override

Modified: hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyHiveDecimal.java
URL: http://svn.apache.org/viewvc/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyHiveDecimal.java?rev=1531781&r1=1531780&r2=1531781&view=diff
==============================================================================
--- hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyHiveDecimal.java (original)
+++ hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyHiveDecimal.java Mon Oct 14 02:54:33 2013
@@ -52,15 +52,20 @@ public class LazyHiveDecimal extends Laz
     String byteData = null;
     try {
       byteData = Text.decode(bytes.getData(), start, length);
-      data.set(new HiveDecimal(byteData));
-      isNull = false;
-    } catch (NumberFormatException e) {
-      isNull = true;
-      LOG.debug("Data not in the HiveDecimal data type range so converted to null. Given data is :"
-          + byteData, e);
     } catch (CharacterCodingException e) {
       isNull = true;
       LOG.debug("Data not in the HiveDecimal data type range so converted to null.", e);
+      return;
+    }
+
+    HiveDecimal dec = HiveDecimal.create(byteData);
+    if (dec != null) {
+      data.set(dec);
+      isNull = false;
+    } else {
+      LOG.debug("Data not in the HiveDecimal data type range so converted to null. Given data is :"
+          + byteData);
+      isNull = true;
     }
   }
 

Modified: hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaHiveDecimalObjectInspector.java
URL: http://svn.apache.org/viewvc/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaHiveDecimalObjectInspector.java?rev=1531781&r1=1531780&r2=1531781&view=diff
==============================================================================
--- hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaHiveDecimalObjectInspector.java (original)
+++ hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaHiveDecimalObjectInspector.java Mon Oct 14 02:54:33 2013
@@ -38,12 +38,12 @@ public class JavaHiveDecimalObjectInspec
     }
 
     if (o instanceof String) {
-      try {
-        o = new HiveDecimal((String)o);
-      } catch(NumberFormatException e) {
+      o = HiveDecimal.create((String)o);
+      if (o == null) {
         return null;
       }
     }
+
     return new HiveDecimalWritable((HiveDecimal) o);
   }
 
@@ -54,7 +54,7 @@ public class JavaHiveDecimalObjectInspec
 
   @Override
   public Object set(Object o, byte[] bytes, int scale) {
-    return new HiveDecimal(new BigInteger(bytes), scale);
+    return HiveDecimal.create(new BigInteger(bytes), scale);
   }
 
   @Override
@@ -69,20 +69,16 @@ public class JavaHiveDecimalObjectInspec
 
   @Override
   public Object create(byte[] bytes, int scale) {
-    try {
-      return new HiveDecimal(new BigInteger(bytes), scale);
-    } catch (NumberFormatException e) {
-      return null;
-    }
+    return HiveDecimal.create(new BigInteger(bytes), scale);
   }
 
   @Override
   public Object create(HiveDecimal t) {
-    try {
-      return t == null ? null : new HiveDecimal(t.unscaledValue(), t.scale());
-    } catch(NumberFormatException e) {
+    if (t == null) {
       return null;
     }
+
+    return HiveDecimal.create(t.unscaledValue(), t.scale());
   }
 
 }

Modified: hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/PrimitiveObjectInspectorConverter.java
URL: http://svn.apache.org/viewvc/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/PrimitiveObjectInspectorConverter.java?rev=1531781&r1=1531780&r2=1531781&view=diff
==============================================================================
--- hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/PrimitiveObjectInspectorConverter.java (original)
+++ hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/PrimitiveObjectInspectorConverter.java Mon Oct 14 02:54:33 2013
@@ -301,12 +301,7 @@ public class PrimitiveObjectInspectorCon
         return null;
       }
 
-      try {
-        return outputOI.set(r, PrimitiveObjectInspectorUtils.getHiveDecimal(input,
-            inputOI));
-      } catch (NumberFormatException e) {
-        return null;
-      }
+      return outputOI.set(r, PrimitiveObjectInspectorUtils.getHiveDecimal(input, inputOI));
     }
   }
 

Modified: hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/PrimitiveObjectInspectorUtils.java
URL: http://svn.apache.org/viewvc/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/PrimitiveObjectInspectorUtils.java?rev=1531781&r1=1531780&r2=1531781&view=diff
==============================================================================
--- hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/PrimitiveObjectInspectorUtils.java (original)
+++ hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/PrimitiveObjectInspectorUtils.java Mon Oct 14 02:54:33 2013
@@ -882,35 +882,35 @@ public final class PrimitiveObjectInspec
         HiveDecimal.ONE : HiveDecimal.ZERO;
       break;
     case BYTE:
-      result = new HiveDecimal(((ByteObjectInspector) oi).get(o));
+      result = HiveDecimal.create(((ByteObjectInspector) oi).get(o));
       break;
     case SHORT:
-      result = new HiveDecimal(((ShortObjectInspector) oi).get(o));
+      result = HiveDecimal.create(((ShortObjectInspector) oi).get(o));
       break;
     case INT:
-      result = new HiveDecimal(((IntObjectInspector) oi).get(o));
+      result = HiveDecimal.create(((IntObjectInspector) oi).get(o));
       break;
     case LONG:
-      result = new HiveDecimal(((LongObjectInspector) oi).get(o));
+      result = HiveDecimal.create(((LongObjectInspector) oi).get(o));
       break;
     case FLOAT:
       Float f = ((FloatObjectInspector) oi).get(o);
-      result = new HiveDecimal(f.toString());
+      result = HiveDecimal.create(f.toString());
       break;
     case DOUBLE:
       Double d = ((DoubleObjectInspector) oi).get(o);
-      result = new HiveDecimal(d.toString());
+      result = HiveDecimal.create(d.toString());
       break;
     case STRING:
-      result = new HiveDecimal(((StringObjectInspector) oi).getPrimitiveJavaObject(o));
+      result = HiveDecimal.create(((StringObjectInspector) oi).getPrimitiveJavaObject(o));
       break;
     case VARCHAR:
-      result = new HiveDecimal(getString(o, oi));
+      result = HiveDecimal.create(getString(o, oi));
       break;
     case TIMESTAMP:
       Double ts = ((TimestampObjectInspector) oi).getPrimitiveWritableObject(o)
         .getDouble();
-      result = new HiveDecimal(ts.toString());
+      result = HiveDecimal.create(ts.toString());
       break;
     case DECIMAL:
       result = ((HiveDecimalObjectInspector) oi).getPrimitiveJavaObject(o);

Modified: hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/WritableHiveDecimalObjectInspector.java
URL: http://svn.apache.org/viewvc/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/WritableHiveDecimalObjectInspector.java?rev=1531781&r1=1531780&r2=1531781&view=diff
==============================================================================
--- hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/WritableHiveDecimalObjectInspector.java (original)
+++ hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/WritableHiveDecimalObjectInspector.java Mon Oct 14 02:54:33 2013
@@ -53,12 +53,20 @@ public class WritableHiveDecimalObjectIn
 
   @Override
   public Object set(Object o, HiveDecimal t) {
+    if (t == null) {
+      return null;
+    }
+
     ((HiveDecimalWritable) o).set(t);
     return o;
   }
 
   @Override
   public Object set(Object o, HiveDecimalWritable t) {
+    if (t == null) {
+      return null;
+    }
+
     ((HiveDecimalWritable) o).set(t);
     return o;
   }
@@ -70,6 +78,10 @@ public class WritableHiveDecimalObjectIn
 
   @Override
   public Object create(HiveDecimal t) {
+    if (t == null) {
+      return null;
+    }
+
     return new HiveDecimalWritable(t);
   }
 

Modified: hive/trunk/serde/src/test/org/apache/hadoop/hive/serde2/binarysortable/TestBinarySortableSerDe.java
URL: http://svn.apache.org/viewvc/hive/trunk/serde/src/test/org/apache/hadoop/hive/serde2/binarysortable/TestBinarySortableSerDe.java?rev=1531781&r1=1531780&r2=1531781&view=diff
==============================================================================
--- hive/trunk/serde/src/test/org/apache/hadoop/hive/serde2/binarysortable/TestBinarySortableSerDe.java (original)
+++ hive/trunk/serde/src/test/org/apache/hadoop/hive/serde2/binarysortable/TestBinarySortableSerDe.java Mon Oct 14 02:54:33 2013
@@ -150,7 +150,7 @@ public class TestBinarySortableSerDe ext
       sb.append(getRandString(r, DECIMAL_CHARS, l2));
     }
 
-    HiveDecimal bd = new HiveDecimal(sb.toString());
+    HiveDecimal bd = HiveDecimal.create(sb.toString());
     return bd;
   }
 

Modified: hive/trunk/serde/src/test/org/apache/hadoop/hive/serde2/io/TestTimestampWritable.java
URL: http://svn.apache.org/viewvc/hive/trunk/serde/src/test/org/apache/hadoop/hive/serde2/io/TestTimestampWritable.java?rev=1531781&r1=1531780&r2=1531781&view=diff
==============================================================================
--- hive/trunk/serde/src/test/org/apache/hadoop/hive/serde2/io/TestTimestampWritable.java (original)
+++ hive/trunk/serde/src/test/org/apache/hadoop/hive/serde2/io/TestTimestampWritable.java Mon Oct 14 02:54:33 2013
@@ -315,7 +315,7 @@ public class TestTimestampWritable exten
         // decimalToTimestamp should be consistent with doubleToTimestamp for this level of
         // precision.
         assertEquals(ts, TimestampWritable.decimalToTimestamp(
-            new HiveDecimal(BigDecimal.valueOf(asDouble))));
+            HiveDecimal.create(BigDecimal.valueOf(asDouble))));
       }
     }
   }
@@ -323,7 +323,7 @@ public class TestTimestampWritable exten
   private static HiveDecimal timestampToDecimal(Timestamp ts) {
     BigDecimal d = new BigDecimal(getSeconds(ts));
     d = d.add(new BigDecimal(ts.getNanos()).divide(new BigDecimal(BILLION)));
-    return new HiveDecimal(d);
+    return HiveDecimal.create(d);
   }
 
   public void testDecimalToTimestampRandomly() {

Modified: hive/trunk/serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/TestObjectInspectorConverters.java
URL: http://svn.apache.org/viewvc/hive/trunk/serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/TestObjectInspectorConverters.java?rev=1531781&r1=1531780&r2=1531781&view=diff
==============================================================================
--- hive/trunk/serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/TestObjectInspectorConverters.java (original)
+++ hive/trunk/serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/TestObjectInspectorConverters.java Mon Oct 14 02:54:33 2013
@@ -149,7 +149,7 @@ public class TestObjectInspectorConverte
           PrimitiveObjectInspectorFactory.javaHiveDecimalObjectInspector,
           PrimitiveObjectInspectorFactory.writableStringObjectInspector);
       assertEquals("TextConverter", new Text("100.001"), textConverter
-	  .convert(new HiveDecimal("100.001")));
+	  .convert(HiveDecimal.create("100.001")));
       assertEquals("TextConverter", null, textConverter.convert(null));
 
       // Binary