You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by xu...@apache.org on 2013/11/20 20:58:01 UTC

svn commit: r1543916 [1/2] - in /hive/trunk: common/src/java/org/apache/hadoop/hive/common/type/ common/src/test/org/apache/hadoop/hive/common/type/ jdbc/src/java/org/apache/hive/jdbc/ ql/src/java/org/apache/hadoop/hive/ql/exec/ ql/src/java/org/apache/...

Author: xuefu
Date: Wed Nov 20 19:58:00 2013
New Revision: 1543916

URL: http://svn.apache.org/r1543916
Log:
HIVE-5565: Limit Hive decimal type maximum precision and scale to 38 (reviewed by Brock)

Modified:
    hive/trunk/common/src/java/org/apache/hadoop/hive/common/type/HiveDecimal.java
    hive/trunk/common/src/test/org/apache/hadoop/hive/common/type/TestHiveDecimal.java
    hive/trunk/jdbc/src/java/org/apache/hive/jdbc/HiveQueryResultSet.java
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcStruct.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/parse/ParseUtils.java
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFBridge.java
    hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/exec/TestFunctionRegistry.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/parse/TestHiveDecimalParse.java
    hive/trunk/ql/src/test/queries/clientpositive/decimal_3.q
    hive/trunk/ql/src/test/queries/clientpositive/decimal_precision.q
    hive/trunk/ql/src/test/queries/clientpositive/decimal_udf.q
    hive/trunk/ql/src/test/queries/clientpositive/serde_regex.q
    hive/trunk/ql/src/test/queries/clientpositive/udf_case.q
    hive/trunk/ql/src/test/queries/clientpositive/udf_when.q
    hive/trunk/ql/src/test/results/clientnegative/invalid_cast_from_binary_1.q.out
    hive/trunk/ql/src/test/results/clientnegative/invalid_cast_from_binary_2.q.out
    hive/trunk/ql/src/test/results/clientnegative/invalid_cast_from_binary_3.q.out
    hive/trunk/ql/src/test/results/clientnegative/invalid_cast_from_binary_4.q.out
    hive/trunk/ql/src/test/results/clientnegative/invalid_cast_from_binary_5.q.out
    hive/trunk/ql/src/test/results/clientnegative/invalid_cast_from_binary_6.q.out
    hive/trunk/ql/src/test/results/clientnegative/wrong_column_type.q.out
    hive/trunk/ql/src/test/results/clientpositive/decimal_3.q.out
    hive/trunk/ql/src/test/results/clientpositive/decimal_precision.q.out
    hive/trunk/ql/src/test/results/clientpositive/decimal_udf.q.out
    hive/trunk/ql/src/test/results/clientpositive/literal_decimal.q.out
    hive/trunk/ql/src/test/results/clientpositive/ql_rewrite_gbtoidx.q.out
    hive/trunk/ql/src/test/results/clientpositive/serde_regex.q.out
    hive/trunk/ql/src/test/results/clientpositive/udf7.q.out
    hive/trunk/ql/src/test/results/clientpositive/udf_case.q.out
    hive/trunk/ql/src/test/results/clientpositive/udf_when.q.out
    hive/trunk/ql/src/test/results/clientpositive/vectorization_short_regress.q.out
    hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/TypeInfoFactory.java
    hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/TypeInfoUtils.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=1543916&r1=1543915&r2=1543916&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 Wed Nov 20 19:58:00 2013
@@ -28,10 +28,22 @@ import java.math.RoundingMode;
  *
  */
 public class HiveDecimal implements Comparable<HiveDecimal> {
-  public static final int MAX_PRECISION = 65;
-  public static final int MAX_SCALE = 30;
-  public static final int DEFAULT_PRECISION = 10;
-  public static final int DEFAULT_SCALE = 0;
+  public static final int MAX_PRECISION = 38;
+  public static final int MAX_SCALE = 38;
+
+  /**
+   * Default precision/scale when user doesn't specify in the column metadata, such as
+   * decimal and decimal(8).
+   */
+  public static final int USER_DEFAULT_PRECISION = 10;
+  public static final int USER_DEFAULT_SCALE = 0;
+
+  /**
+   *  Default precision/scale when system is not able to determine them, such as in case
+   *  of a non-generic udf.
+   */
+  public static final int SYSTEM_DEFAULT_PRECISION = 38;
+  public static final int SYSTEM_DEFAULT_SCALE = 18;
 
   public static final HiveDecimal ZERO = new HiveDecimal(BigDecimal.ZERO);
   public static final HiveDecimal ONE = new HiveDecimal(BigDecimal.ONE);

Modified: hive/trunk/common/src/test/org/apache/hadoop/hive/common/type/TestHiveDecimal.java
URL: http://svn.apache.org/viewvc/hive/trunk/common/src/test/org/apache/hadoop/hive/common/type/TestHiveDecimal.java?rev=1543916&r1=1543915&r2=1543916&view=diff
==============================================================================
--- hive/trunk/common/src/test/org/apache/hadoop/hive/common/type/TestHiveDecimal.java (original)
+++ hive/trunk/common/src/test/org/apache/hadoop/hive/common/type/TestHiveDecimal.java Wed Nov 20 19:58:00 2013
@@ -28,16 +28,17 @@ public class TestHiveDecimal {
   public void testPrecisionScaleEnforcement() {
     String decStr = "1786135888657847525803324040144343378.09799306448796128931113691624";
     HiveDecimal dec = HiveDecimal.create(decStr);
-    Assert.assertEquals("1786135888657847525803324040144343378.0979930644879612893111369162", dec.toString());
+    Assert.assertEquals("1786135888657847525803324040144343378.1", dec.toString());
     Assert.assertTrue("Decimal precision should not go above maximum",
         dec.precision() <= HiveDecimal.MAX_PRECISION);
     Assert.assertTrue("Decimal scale should not go above maximum", dec.scale() <= HiveDecimal.MAX_SCALE);
 
+    decStr = "57847525803324040144343378.09799306448796128931113691624";
     BigDecimal bd = new BigDecimal(decStr);
     BigDecimal bd1 = HiveDecimal.enforcePrecisionScale(bd, 20, 5);
     Assert.assertNull(bd1);
-    bd1 = HiveDecimal.enforcePrecisionScale(bd, 45, 5);
-    Assert.assertEquals("1786135888657847525803324040144343378.09799", bd1.toString());
+    bd1 = HiveDecimal.enforcePrecisionScale(bd, 35, 5);
+    Assert.assertEquals("57847525803324040144343378.09799", bd1.toString());
     bd1 = HiveDecimal.enforcePrecisionScale(bd, 45, 20);
     Assert.assertNull(bd1);
 
@@ -45,7 +46,7 @@ public class TestHiveDecimal {
     Assert.assertNull(dec);
 
     dec = HiveDecimal.create("-1786135888657847525803324040144343378.09799306448796128931113691624");
-    Assert.assertEquals("-1786135888657847525803324040144343378.0979930644879612893111369162", dec.toString());
+    Assert.assertEquals("-1786135888657847525803324040144343378.1", dec.toString());
 
     dec = HiveDecimal.create("005.34000");
     Assert.assertEquals(dec.precision(), 3);
@@ -54,21 +55,21 @@ public class TestHiveDecimal {
     dec = HiveDecimal.create("178613588865784752580332404014434337809799306448796128931113691624");
     Assert.assertNull(dec);
   }
-  
+
   @Test
   public void testTrailingZeroRemovalAfterEnforcement() {
-    String decStr = "8.0900000000000000000000000000000123456";
+    String decStr = "8.090000000000000000000000000000000000000123456";
     HiveDecimal dec = HiveDecimal.create(decStr);
     Assert.assertEquals("8.09", dec.toString());
   }
-  
+
   @Test
   public void testMultiply() {
-    HiveDecimal dec1 = HiveDecimal.create("0.1786135888657847525803");
-    HiveDecimal dec2 = HiveDecimal.create("3.123456789");
+    HiveDecimal dec1 = HiveDecimal.create("0.00001786135888657847525803");
+    HiveDecimal dec2 = HiveDecimal.create("3.0000123456789");
     Assert.assertNull(dec1.multiply(dec2));
 
-    dec1 = HiveDecimal.create("1786135888657847525803232322323234442321.4");
+    dec1 = HiveDecimal.create("178613588865784752580323232232323444.4");
     dec2 = HiveDecimal.create("178613588865784752580302323232.3");
     Assert.assertNull(dec1.multiply(dec2));
 
@@ -79,10 +80,10 @@ public class TestHiveDecimal {
 
   @Test
   public void testPow() {
-    HiveDecimal dec = HiveDecimal.create("3.1415926");
+    HiveDecimal dec = HiveDecimal.create("3.00001415926");
     Assert.assertEquals(dec.pow(2), dec.multiply(dec));
 
-    HiveDecimal dec1 = HiveDecimal.create("0.17861358882");
+    HiveDecimal dec1 = HiveDecimal.create("0.000017861358882");
     dec1 = dec1.pow(3);
     Assert.assertNull(dec1);
   }

Modified: hive/trunk/jdbc/src/java/org/apache/hive/jdbc/HiveQueryResultSet.java
URL: http://svn.apache.org/viewvc/hive/trunk/jdbc/src/java/org/apache/hive/jdbc/HiveQueryResultSet.java?rev=1543916&r1=1543915&r2=1543916&view=diff
==============================================================================
--- hive/trunk/jdbc/src/java/org/apache/hive/jdbc/HiveQueryResultSet.java (original)
+++ hive/trunk/jdbc/src/java/org/apache/hive/jdbc/HiveQueryResultSet.java Wed Nov 20 19:58:00 2013
@@ -193,8 +193,8 @@ public class HiveQueryResultSet extends 
         case DECIMAL_TYPE:
           TTypeQualifierValue prec = tq.getQualifiers().get(TCLIServiceConstants.PRECISION);
           TTypeQualifierValue scale = tq.getQualifiers().get(TCLIServiceConstants.SCALE);
-          ret = new JdbcColumnAttributes(prec == null ? HiveDecimal.DEFAULT_PRECISION : prec.getI32Value(),
-              scale == null ? HiveDecimal.DEFAULT_SCALE : scale.getI32Value());
+          ret = new JdbcColumnAttributes(prec == null ? HiveDecimal.USER_DEFAULT_PRECISION : prec.getI32Value(),
+              scale == null ? HiveDecimal.USER_DEFAULT_SCALE : scale.getI32Value());
           break;
         default:
           break;

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java?rev=1543916&r1=1543915&r2=1543916&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java Wed Nov 20 19:58:00 2013
@@ -2870,8 +2870,8 @@ public class DDLTask extends Task<DDLWor
   private static void fixDecimalColumnTypeName(List<FieldSchema> cols) {
     for (FieldSchema col : cols) {
       if (serdeConstants.DECIMAL_TYPE_NAME.equals(col.getType())) {
-        col.setType(DecimalTypeInfo.getQualifiedName(HiveDecimal.DEFAULT_PRECISION,
-            HiveDecimal.DEFAULT_SCALE));
+        col.setType(DecimalTypeInfo.getQualifiedName(HiveDecimal.USER_DEFAULT_PRECISION,
+            HiveDecimal.USER_DEFAULT_SCALE));
       }
     }
   }

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcStruct.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcStruct.java?rev=1543916&r1=1543915&r2=1543916&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcStruct.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcStruct.java Wed Nov 20 19:58:00 2013
@@ -545,8 +545,8 @@ final class OrcStruct implements Writabl
       case DATE:
         return PrimitiveObjectInspectorFactory.javaDateObjectInspector;
       case DECIMAL:
-        int precision = type.hasPrecision() ? type.getPrecision() : HiveDecimal.MAX_PRECISION;
-        int scale =  type.hasScale()? type.getScale() : HiveDecimal.MAX_SCALE;
+        int precision = type.hasPrecision() ? type.getPrecision() : HiveDecimal.SYSTEM_DEFAULT_PRECISION;
+        int scale =  type.hasScale()? type.getScale() : HiveDecimal.SYSTEM_DEFAULT_SCALE;
         return PrimitiveObjectInspectorFactory.getPrimitiveJavaObjectInspector(
             TypeInfoFactory.getDecimalTypeInfo(precision, scale));
       case STRUCT:

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=1543916&r1=1543915&r2=1543916&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 Wed Nov 20 19:58:00 2013
@@ -1899,8 +1899,8 @@ class RecordReaderImpl implements Record
       case DATE:
         return new DateTreeReader(path, columnId);
       case DECIMAL:
-        int precision = type.hasPrecision() ? type.getPrecision() : HiveDecimal.MAX_PRECISION;
-        int scale =  type.hasScale()? type.getScale() : HiveDecimal.MAX_SCALE;
+        int precision = type.hasPrecision() ? type.getPrecision() : HiveDecimal.SYSTEM_DEFAULT_PRECISION;
+        int scale =  type.hasScale()? type.getScale() : HiveDecimal.SYSTEM_DEFAULT_SCALE;
         return new DecimalTreeReader(path, columnId, precision, scale);
       case STRUCT:
         return new StructTreeReader(path, columnId, types, included);

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/ParseUtils.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/ParseUtils.java?rev=1543916&r1=1543915&r2=1543916&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/ParseUtils.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/ParseUtils.java Wed Nov 20 19:58:00 2013
@@ -200,8 +200,8 @@ public final class ParseUtils {
         throw new SemanticException("Bad params for type decimal");
       }
 
-      int precision = HiveDecimal.DEFAULT_PRECISION;
-      int scale = HiveDecimal.DEFAULT_SCALE;
+      int precision = HiveDecimal.USER_DEFAULT_PRECISION;
+      int scale = HiveDecimal.USER_DEFAULT_SCALE;
 
       if (node.getChildCount() >= 1) {
         String precStr = node.getChild(0).getText();

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFBridge.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFBridge.java?rev=1543916&r1=1543915&r2=1543916&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFBridge.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFBridge.java Wed Nov 20 19:58:00 2013
@@ -185,7 +185,7 @@ public class GenericUDFBridge extends Ge
     // If the returned value is HiveDecimal, we assume maximum precision/scale.
     if (result != null && result instanceof HiveDecimalWritable) {
       result = HiveDecimalUtils.enforcePrecisionScale((HiveDecimalWritable) result,
-          HiveDecimal.MAX_PRECISION, HiveDecimal.MAX_SCALE);
+          HiveDecimal.SYSTEM_DEFAULT_PRECISION, HiveDecimal.SYSTEM_DEFAULT_SCALE);
     }
 
     return result;

Modified: hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/exec/TestFunctionRegistry.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/exec/TestFunctionRegistry.java?rev=1543916&r1=1543915&r2=1543916&view=diff
==============================================================================
--- hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/exec/TestFunctionRegistry.java (original)
+++ hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/exec/TestFunctionRegistry.java Wed Nov 20 19:58:00 2013
@@ -222,7 +222,7 @@ public class TestFunctionRegistry extend
     common(TypeInfoFactory.stringTypeInfo, TypeInfoFactory.decimalTypeInfo,
            TypeInfoFactory.stringTypeInfo);
     common(TypeInfoFactory.doubleTypeInfo, TypeInfoFactory.decimalTypeInfo,
-           TypeInfoFactory.getDecimalTypeInfo(65, 30));
+           TypeInfoFactory.decimalTypeInfo);
     common(TypeInfoFactory.doubleTypeInfo, TypeInfoFactory.stringTypeInfo,
            TypeInfoFactory.stringTypeInfo);
 
@@ -244,7 +244,7 @@ public class TestFunctionRegistry extend
     comparison(TypeInfoFactory.stringTypeInfo, TypeInfoFactory.decimalTypeInfo,
                TypeInfoFactory.decimalTypeInfo);
     comparison(TypeInfoFactory.doubleTypeInfo, TypeInfoFactory.decimalTypeInfo,
-               TypeInfoFactory.getDecimalTypeInfo(65, 30));
+               TypeInfoFactory.decimalTypeInfo);
     comparison(TypeInfoFactory.doubleTypeInfo, TypeInfoFactory.stringTypeInfo,
                TypeInfoFactory.doubleTypeInfo);
 
@@ -319,7 +319,7 @@ public class TestFunctionRegistry extend
     unionAll(TypeInfoFactory.stringTypeInfo, TypeInfoFactory.decimalTypeInfo,
         TypeInfoFactory.decimalTypeInfo);
     unionAll(TypeInfoFactory.doubleTypeInfo, TypeInfoFactory.decimalTypeInfo,
-        TypeInfoFactory.getDecimalTypeInfo(65, 30));
+        TypeInfoFactory.decimalTypeInfo);
     unionAll(TypeInfoFactory.doubleTypeInfo, TypeInfoFactory.stringTypeInfo,
         TypeInfoFactory.stringTypeInfo);
 

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=1543916&r1=1543915&r2=1543916&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 Wed Nov 20 19:58:00 2013
@@ -268,7 +268,7 @@ public class TestOrcFile {
         + "binary,string1:string,middle:struct<list:array<struct<int1:int,"
         + "string1:string>>>,list:array<struct<int1:int,string1:string>>,"
         + "map:map<string,struct<int1:int,string1:string>>,ts:timestamp,"
-        + "decimal1:decimal(65,30)>", readerInspector.getTypeName());
+        + "decimal1:decimal(38,18)>", readerInspector.getTypeName());
     List<? extends StructField> fields = readerInspector
         .getAllStructFieldRefs();
     BooleanObjectInspector bo = (BooleanObjectInspector) readerInspector
@@ -1030,7 +1030,7 @@ public class TestOrcFile {
     synchronized (TestOrcFile.class) {
       inspector = OrcStruct.createObjectInspector(0, types);
     }
-    HiveDecimal maxValue = HiveDecimal.create("100000000000000000000");
+    HiveDecimal maxValue = HiveDecimal.create("10000000000000000000");
     Writer writer = OrcFile.createWriter(testFilePath,
                                          OrcFile.writerOptions(conf)
                                          .inspector(inspector)
@@ -1062,7 +1062,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 = HiveDecimal.create("100000000000000000000");
+    value = HiveDecimal.create("10000000000000000000");
     row.setFieldValue(2, value);
     writer.addRow(row);
     Random rand = new Random(42);
@@ -1073,8 +1073,8 @@ public class TestOrcFile {
       } else {
         union.set((byte) 1, new Text(new Integer(i*i).toString()));
       }
-      value = HiveDecimal.create(new BigInteger(104, rand),
-          rand.nextInt(28));
+      value = HiveDecimal.create(new BigInteger(64, rand),
+          rand.nextInt(18));
       row.setFieldValue(2, value);
       if (maxValue.compareTo(value) < 0) {
         maxValue = value;
@@ -1128,7 +1128,7 @@ public class TestOrcFile {
     row = (OrcStruct) rows.next(null);
     assertEquals(1, rows.getRowNumber());
     inspector = reader.getObjectInspector();
-    assertEquals("struct<time:timestamp,union:uniontype<int,string>,decimal:decimal(65,30)>",
+    assertEquals("struct<time:timestamp,union:uniontype<int,string>,decimal:decimal(38,18)>",
         inspector.getTypeName());
     assertEquals(Timestamp.valueOf("2000-03-12 15:00:00"),
         row.getFieldValue(0));
@@ -1162,7 +1162,7 @@ public class TestOrcFile {
     assertEquals(Timestamp.valueOf("1900-01-01 00:00:00"),
         row.getFieldValue(0));
     assertEquals(new IntWritable(200000), union.getObject());
-    assertEquals(HiveDecimal.create("100000000000000000000"),
+    assertEquals(HiveDecimal.create("10000000000000000000"),
                  row.getFieldValue(2));
     rand = new Random(42);
     for(int i=1900; i < 2200; ++i) {
@@ -1176,8 +1176,8 @@ public class TestOrcFile {
         assertEquals(1, union.getTag());
         assertEquals(new Text(new Integer(i*i).toString()), union.getObject());
       }
-      assertEquals(HiveDecimal.create(new BigInteger(104, rand),
-                                   rand.nextInt(28)), row.getFieldValue(2));
+      assertEquals(HiveDecimal.create(new BigInteger(64, rand),
+                                   rand.nextInt(18)), row.getFieldValue(2));
     }
     for(int i=0; i < 5000; ++i) {
       row = (OrcStruct) rows.next(row);

Modified: hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/parse/TestHiveDecimalParse.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/parse/TestHiveDecimalParse.java?rev=1543916&r1=1543915&r2=1543916&view=diff
==============================================================================
--- hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/parse/TestHiveDecimalParse.java (original)
+++ hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/parse/TestHiveDecimalParse.java Wed Nov 20 19:58:00 2013
@@ -61,7 +61,7 @@ public class TestHiveDecimalParse {
     int rc = driver.compile(query);
     Assert.assertTrue("Got " + rc + ", expected not zero", rc != 0);
     Assert.assertTrue(driver.getErrorMsg(),
-        driver.getErrorMsg().contains("Decimal precision out of allowed range [1,65]"));
+        driver.getErrorMsg().contains("Decimal precision out of allowed range [1,38]"));
   }
 
   @Test
@@ -72,7 +72,7 @@ public class TestHiveDecimalParse {
     int rc = driver.compile(query);
     Assert.assertTrue("Got " + rc + ", expected not zero", rc != 0);
     Assert.assertTrue(driver.getErrorMsg(),
-        driver.getErrorMsg().contains("Decimal precision out of allowed range [1,65]"));
+        driver.getErrorMsg().contains("Decimal precision out of allowed range [1,38]"));
   }
 
   @Test
@@ -83,7 +83,7 @@ public class TestHiveDecimalParse {
     int rc = driver.compile(query);
     Assert.assertTrue("Got " + rc + ", expected not zero", rc != 0);
     Assert.assertTrue(driver.getErrorMsg(),
-        driver.getErrorMsg().contains("Decimal scale out of allowed range [0,30]"));
+        driver.getErrorMsg().contains("Decimal scale must be less than or equal to precision"));
   }
 
   @Test

Modified: hive/trunk/ql/src/test/queries/clientpositive/decimal_3.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientpositive/decimal_3.q?rev=1543916&r1=1543915&r2=1543916&view=diff
==============================================================================
--- hive/trunk/ql/src/test/queries/clientpositive/decimal_3.q (original)
+++ hive/trunk/ql/src/test/queries/clientpositive/decimal_3.q Wed Nov 20 19:58:00 2013
@@ -1,6 +1,6 @@
 DROP TABLE IF EXISTS DECIMAL_3;
 
-CREATE TABLE DECIMAL_3(key decimal(65,30), value int) 
+CREATE TABLE DECIMAL_3(key decimal(38,18), value int)
 ROW FORMAT DELIMITED
    FIELDS TERMINATED BY ' '
 STORED AS TEXTFILE;

Modified: hive/trunk/ql/src/test/queries/clientpositive/decimal_precision.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientpositive/decimal_precision.q?rev=1543916&r1=1543915&r2=1543916&view=diff
==============================================================================
--- hive/trunk/ql/src/test/queries/clientpositive/decimal_precision.q (original)
+++ hive/trunk/ql/src/test/queries/clientpositive/decimal_precision.q Wed Nov 20 19:58:00 2013
@@ -1,6 +1,6 @@
 DROP TABLE IF EXISTS DECIMAL_PRECISION;
 
-CREATE TABLE DECIMAL_PRECISION(dec decimal(60,30)) 
+CREATE TABLE DECIMAL_PRECISION(dec decimal(38,18))
 ROW FORMAT DELIMITED
    FIELDS TERMINATED BY ' '
 STORED AS TEXTFILE;
@@ -17,11 +17,11 @@ SELECT dec, dec * dec FROM DECIMAL_PRECI
 
 SELECT avg(dec), sum(dec) FROM DECIMAL_PRECISION;
 
-SELECT dec * cast('123456789012345678901234567890.123456789' as decimal(39,9)) FROM DECIMAL_PRECISION LIMIT 1;
-SELECT * from DECIMAL_PRECISION WHERE dec > cast('123456789012345678901234567890.123456789' as decimal(39,9)) LIMIT 1;
-SELECT dec * 123456789012345678901234567890.123456789 FROM DECIMAL_PRECISION LIMIT 1;
+SELECT dec * cast('12345678901234567890.12345678' as decimal(38,18)) FROM DECIMAL_PRECISION LIMIT 1;
+SELECT * from DECIMAL_PRECISION WHERE dec > cast('1234567890123456789012345678.12345678' as decimal(38,18)) LIMIT 1;
+SELECT dec * 12345678901234567890.12345678 FROM DECIMAL_PRECISION LIMIT 1;
 
-SELECT MIN(cast('123456789012345678901234567890.123456789' as decimal(39,9))) FROM DECIMAL_PRECISION;
-SELECT COUNT(cast('123456789012345678901234567890.123456789' as decimal(39,9))) FROM DECIMAL_PRECISION;
+SELECT MIN(cast('12345678901234567890.12345678' as decimal(38,18))) FROM DECIMAL_PRECISION;
+SELECT COUNT(cast('12345678901234567890.12345678' as decimal(38,18))) FROM DECIMAL_PRECISION;
 
 DROP TABLE DECIMAL_PRECISION;

Modified: hive/trunk/ql/src/test/queries/clientpositive/decimal_udf.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientpositive/decimal_udf.q?rev=1543916&r1=1543915&r2=1543916&view=diff
==============================================================================
--- hive/trunk/ql/src/test/queries/clientpositive/decimal_udf.q (original)
+++ hive/trunk/ql/src/test/queries/clientpositive/decimal_udf.q Wed Nov 20 19:58:00 2013
@@ -2,7 +2,7 @@ set hive.fetch.task.conversion=more;
 
 DROP TABLE IF EXISTS DECIMAL_UDF;
 
-CREATE TABLE DECIMAL_UDF (key decimal(65,30), value int) 
+CREATE TABLE DECIMAL_UDF (key decimal(38,18), value int)
 ROW FORMAT DELIMITED
    FIELDS TERMINATED BY ' '
 STORED AS TEXTFILE;

Modified: hive/trunk/ql/src/test/queries/clientpositive/serde_regex.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientpositive/serde_regex.q?rev=1543916&r1=1543915&r2=1543916&view=diff
==============================================================================
--- hive/trunk/ql/src/test/queries/clientpositive/serde_regex.q (original)
+++ hive/trunk/ql/src/test/queries/clientpositive/serde_regex.q Wed Nov 20 19:58:00 2013
@@ -42,7 +42,7 @@ DROP TABLE serde_regex;
 
 EXPLAIN
 CREATE TABLE serde_regex1(
-  key decimal(65,30),
+  key decimal(38,18),
   value int)
 ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
 WITH SERDEPROPERTIES (
@@ -51,7 +51,7 @@ WITH SERDEPROPERTIES (
 STORED AS TEXTFILE;
 
 CREATE TABLE serde_regex1(
-  key decimal(65,30),
+  key decimal(38,18),
   value int)
 ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
 WITH SERDEPROPERTIES (

Modified: hive/trunk/ql/src/test/queries/clientpositive/udf_case.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientpositive/udf_case.q?rev=1543916&r1=1543915&r2=1543916&view=diff
==============================================================================
--- hive/trunk/ql/src/test/queries/clientpositive/udf_case.q (original)
+++ hive/trunk/ql/src/test/queries/clientpositive/udf_case.q Wed Nov 20 19:58:00 2013
@@ -72,7 +72,7 @@ SELECT CASE 1
        CASE 1
         WHEN 1.0 THEN 123
         WHEN 2 THEN 1.0
-        ELSE 0.0BD
+        ELSE 222.02BD
        END,
        CASE 'abc'
         WHEN cast('abc' as varchar(3)) THEN 'abcd'

Modified: hive/trunk/ql/src/test/queries/clientpositive/udf_when.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientpositive/udf_when.q?rev=1543916&r1=1543915&r2=1543916&view=diff
==============================================================================
--- hive/trunk/ql/src/test/queries/clientpositive/udf_when.q (original)
+++ hive/trunk/ql/src/test/queries/clientpositive/udf_when.q Wed Nov 20 19:58:00 2013
@@ -66,7 +66,7 @@ SELECT CASE
        CASE
         WHEN 1=1 THEN 123
         WHEN 1=2 THEN 1.0
-        ELSE 0.0BD
+        ELSE 222.02BD
        END,
        CASE
         WHEN 1=1 THEN 'abcd'

Modified: hive/trunk/ql/src/test/results/clientnegative/invalid_cast_from_binary_1.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientnegative/invalid_cast_from_binary_1.q.out?rev=1543916&r1=1543915&r2=1543916&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/clientnegative/invalid_cast_from_binary_1.q.out (original)
+++ hive/trunk/ql/src/test/results/clientnegative/invalid_cast_from_binary_1.q.out Wed Nov 20 19:58:00 2013
@@ -3,4 +3,4 @@ PREHOOK: type: CREATETABLE
 POSTHOOK: query: create table tbl (a binary)
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: default@tbl
-FAILED: SemanticException Line 0:-1 Wrong arguments 'a': No matching method for class org.apache.hadoop.hive.ql.udf.UDFToInteger with (binary). Possible choices: _FUNC_(bigint)  _FUNC_(boolean)  _FUNC_(decimal(65,30))  _FUNC_(double)  _FUNC_(float)  _FUNC_(smallint)  _FUNC_(string)  _FUNC_(timestamp)  _FUNC_(tinyint)  _FUNC_(void)  
+FAILED: SemanticException Line 0:-1 Wrong arguments 'a': No matching method for class org.apache.hadoop.hive.ql.udf.UDFToInteger with (binary). Possible choices: _FUNC_(bigint)  _FUNC_(boolean)  _FUNC_(decimal(38,18))  _FUNC_(double)  _FUNC_(float)  _FUNC_(smallint)  _FUNC_(string)  _FUNC_(timestamp)  _FUNC_(tinyint)  _FUNC_(void)  

Modified: hive/trunk/ql/src/test/results/clientnegative/invalid_cast_from_binary_2.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientnegative/invalid_cast_from_binary_2.q.out?rev=1543916&r1=1543915&r2=1543916&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/clientnegative/invalid_cast_from_binary_2.q.out (original)
+++ hive/trunk/ql/src/test/results/clientnegative/invalid_cast_from_binary_2.q.out Wed Nov 20 19:58:00 2013
@@ -3,4 +3,4 @@ PREHOOK: type: CREATETABLE
 POSTHOOK: query: create table tbl (a binary)
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: default@tbl
-FAILED: SemanticException Line 0:-1 Wrong arguments 'a': No matching method for class org.apache.hadoop.hive.ql.udf.UDFToByte with (binary). Possible choices: _FUNC_(bigint)  _FUNC_(boolean)  _FUNC_(decimal(65,30))  _FUNC_(double)  _FUNC_(float)  _FUNC_(int)  _FUNC_(smallint)  _FUNC_(string)  _FUNC_(timestamp)  _FUNC_(void)  
+FAILED: SemanticException Line 0:-1 Wrong arguments 'a': No matching method for class org.apache.hadoop.hive.ql.udf.UDFToByte with (binary). Possible choices: _FUNC_(bigint)  _FUNC_(boolean)  _FUNC_(decimal(38,18))  _FUNC_(double)  _FUNC_(float)  _FUNC_(int)  _FUNC_(smallint)  _FUNC_(string)  _FUNC_(timestamp)  _FUNC_(void)  

Modified: hive/trunk/ql/src/test/results/clientnegative/invalid_cast_from_binary_3.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientnegative/invalid_cast_from_binary_3.q.out?rev=1543916&r1=1543915&r2=1543916&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/clientnegative/invalid_cast_from_binary_3.q.out (original)
+++ hive/trunk/ql/src/test/results/clientnegative/invalid_cast_from_binary_3.q.out Wed Nov 20 19:58:00 2013
@@ -3,4 +3,4 @@ PREHOOK: type: CREATETABLE
 POSTHOOK: query: create table tbl (a binary)
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: default@tbl
-FAILED: SemanticException Line 0:-1 Wrong arguments 'a': No matching method for class org.apache.hadoop.hive.ql.udf.UDFToShort with (binary). Possible choices: _FUNC_(bigint)  _FUNC_(boolean)  _FUNC_(decimal(65,30))  _FUNC_(double)  _FUNC_(float)  _FUNC_(int)  _FUNC_(string)  _FUNC_(timestamp)  _FUNC_(tinyint)  _FUNC_(void)  
+FAILED: SemanticException Line 0:-1 Wrong arguments 'a': No matching method for class org.apache.hadoop.hive.ql.udf.UDFToShort with (binary). Possible choices: _FUNC_(bigint)  _FUNC_(boolean)  _FUNC_(decimal(38,18))  _FUNC_(double)  _FUNC_(float)  _FUNC_(int)  _FUNC_(string)  _FUNC_(timestamp)  _FUNC_(tinyint)  _FUNC_(void)  

Modified: hive/trunk/ql/src/test/results/clientnegative/invalid_cast_from_binary_4.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientnegative/invalid_cast_from_binary_4.q.out?rev=1543916&r1=1543915&r2=1543916&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/clientnegative/invalid_cast_from_binary_4.q.out (original)
+++ hive/trunk/ql/src/test/results/clientnegative/invalid_cast_from_binary_4.q.out Wed Nov 20 19:58:00 2013
@@ -3,4 +3,4 @@ PREHOOK: type: CREATETABLE
 POSTHOOK: query: create table tbl (a binary)
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: default@tbl
-FAILED: SemanticException Line 0:-1 Wrong arguments 'a': No matching method for class org.apache.hadoop.hive.ql.udf.UDFToLong with (binary). Possible choices: _FUNC_(bigint)  _FUNC_(boolean)  _FUNC_(decimal(65,30))  _FUNC_(double)  _FUNC_(float)  _FUNC_(int)  _FUNC_(smallint)  _FUNC_(string)  _FUNC_(timestamp)  _FUNC_(tinyint)  _FUNC_(void)  
+FAILED: SemanticException Line 0:-1 Wrong arguments 'a': No matching method for class org.apache.hadoop.hive.ql.udf.UDFToLong with (binary). Possible choices: _FUNC_(bigint)  _FUNC_(boolean)  _FUNC_(decimal(38,18))  _FUNC_(double)  _FUNC_(float)  _FUNC_(int)  _FUNC_(smallint)  _FUNC_(string)  _FUNC_(timestamp)  _FUNC_(tinyint)  _FUNC_(void)  

Modified: hive/trunk/ql/src/test/results/clientnegative/invalid_cast_from_binary_5.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientnegative/invalid_cast_from_binary_5.q.out?rev=1543916&r1=1543915&r2=1543916&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/clientnegative/invalid_cast_from_binary_5.q.out (original)
+++ hive/trunk/ql/src/test/results/clientnegative/invalid_cast_from_binary_5.q.out Wed Nov 20 19:58:00 2013
@@ -3,4 +3,4 @@ PREHOOK: type: CREATETABLE
 POSTHOOK: query: create table tbl (a binary)
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: default@tbl
-FAILED: SemanticException Line 0:-1 Wrong arguments 'a': No matching method for class org.apache.hadoop.hive.ql.udf.UDFToFloat with (binary). Possible choices: _FUNC_(bigint)  _FUNC_(boolean)  _FUNC_(decimal(65,30))  _FUNC_(double)  _FUNC_(int)  _FUNC_(smallint)  _FUNC_(string)  _FUNC_(timestamp)  _FUNC_(tinyint)  _FUNC_(void)  
+FAILED: SemanticException Line 0:-1 Wrong arguments 'a': No matching method for class org.apache.hadoop.hive.ql.udf.UDFToFloat with (binary). Possible choices: _FUNC_(bigint)  _FUNC_(boolean)  _FUNC_(decimal(38,18))  _FUNC_(double)  _FUNC_(int)  _FUNC_(smallint)  _FUNC_(string)  _FUNC_(timestamp)  _FUNC_(tinyint)  _FUNC_(void)  

Modified: hive/trunk/ql/src/test/results/clientnegative/invalid_cast_from_binary_6.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientnegative/invalid_cast_from_binary_6.q.out?rev=1543916&r1=1543915&r2=1543916&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/clientnegative/invalid_cast_from_binary_6.q.out (original)
+++ hive/trunk/ql/src/test/results/clientnegative/invalid_cast_from_binary_6.q.out Wed Nov 20 19:58:00 2013
@@ -3,4 +3,4 @@ PREHOOK: type: CREATETABLE
 POSTHOOK: query: create table tbl (a binary)
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: default@tbl
-FAILED: SemanticException Line 0:-1 Wrong arguments 'a': No matching method for class org.apache.hadoop.hive.ql.udf.UDFToDouble with (binary). Possible choices: _FUNC_(bigint)  _FUNC_(boolean)  _FUNC_(decimal(65,30))  _FUNC_(float)  _FUNC_(int)  _FUNC_(smallint)  _FUNC_(string)  _FUNC_(timestamp)  _FUNC_(tinyint)  _FUNC_(void)  
+FAILED: SemanticException Line 0:-1 Wrong arguments 'a': No matching method for class org.apache.hadoop.hive.ql.udf.UDFToDouble with (binary). Possible choices: _FUNC_(bigint)  _FUNC_(boolean)  _FUNC_(decimal(38,18))  _FUNC_(float)  _FUNC_(int)  _FUNC_(smallint)  _FUNC_(string)  _FUNC_(timestamp)  _FUNC_(tinyint)  _FUNC_(void)  

Modified: hive/trunk/ql/src/test/results/clientnegative/wrong_column_type.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientnegative/wrong_column_type.q.out?rev=1543916&r1=1543915&r2=1543916&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/clientnegative/wrong_column_type.q.out (original)
+++ hive/trunk/ql/src/test/results/clientnegative/wrong_column_type.q.out Wed Nov 20 19:58:00 2013
@@ -3,4 +3,4 @@ PREHOOK: type: CREATETABLE
 POSTHOOK: query: CREATE TABLE dest1(a float)
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: default@dest1
-FAILED: NoMatchingMethodException No matching method for class org.apache.hadoop.hive.ql.udf.UDFToFloat with (array<double>). Possible choices: _FUNC_(bigint)  _FUNC_(boolean)  _FUNC_(decimal(65,30))  _FUNC_(double)  _FUNC_(int)  _FUNC_(smallint)  _FUNC_(string)  _FUNC_(timestamp)  _FUNC_(tinyint)  _FUNC_(void)  
+FAILED: NoMatchingMethodException No matching method for class org.apache.hadoop.hive.ql.udf.UDFToFloat with (array<double>). Possible choices: _FUNC_(bigint)  _FUNC_(boolean)  _FUNC_(decimal(38,18))  _FUNC_(double)  _FUNC_(int)  _FUNC_(smallint)  _FUNC_(string)  _FUNC_(timestamp)  _FUNC_(tinyint)  _FUNC_(void)  

Modified: hive/trunk/ql/src/test/results/clientpositive/decimal_3.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/decimal_3.q.out?rev=1543916&r1=1543915&r2=1543916&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/clientpositive/decimal_3.q.out (original)
+++ hive/trunk/ql/src/test/results/clientpositive/decimal_3.q.out Wed Nov 20 19:58:00 2013
@@ -2,12 +2,12 @@ PREHOOK: query: DROP TABLE IF EXISTS DEC
 PREHOOK: type: DROPTABLE
 POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_3
 POSTHOOK: type: DROPTABLE
-PREHOOK: query: CREATE TABLE DECIMAL_3(key decimal(65,30), value int) 
+PREHOOK: query: CREATE TABLE DECIMAL_3(key decimal(38,18), value int)
 ROW FORMAT DELIMITED
    FIELDS TERMINATED BY ' '
 STORED AS TEXTFILE
 PREHOOK: type: CREATETABLE
-POSTHOOK: query: CREATE TABLE DECIMAL_3(key decimal(65,30), value int) 
+POSTHOOK: query: CREATE TABLE DECIMAL_3(key decimal(38,18), value int)
 ROW FORMAT DELIMITED
    FIELDS TERMINATED BY ' '
 STORED AS TEXTFILE
@@ -47,7 +47,7 @@ NULL	0
 0.3	0
 0.33	0
 0.333	0
-0.9999999999999999999999999	1
+1	1
 1	1
 1	1
 1.12	1
@@ -90,7 +90,7 @@ POSTHOOK: Input: default@decimal_3
 1.12	1
 1	1
 1	1
-0.9999999999999999999999999	1
+1	1
 0.333	0
 0.33	0
 0.3	0
@@ -139,7 +139,7 @@ NULL	0
 0.3	0
 0.33	0
 0.333	0
-0.9999999999999999999999999	1
+1	1
 1	1
 1	1
 1.12	1
@@ -182,7 +182,6 @@ NULL
 0.3
 0.33
 0.333
-0.9999999999999999999999999
 1
 1.12
 1.122
@@ -220,8 +219,7 @@ NULL	0
 0.3	0
 0.33	0
 0.333	0
-0.9999999999999999999999999	1
-1	2
+1	3
 1.12	1
 1.122	1
 2	4
@@ -246,7 +244,7 @@ POSTHOOK: Input: default@decimal_3
 -11	-1.122
 -1	-2.24
 0	0.33
-1	5.2419999999999999999999999
+1	5.242
 2	4
 3	9.42
 4	3.14
@@ -293,7 +291,11 @@ POSTHOOK: Input: default@decimal_3
 0.3	0	0.3	0
 0.33	0	0.33	0
 0.333	0	0.333	0
-0.9999999999999999999999999	1	0.9999999999999999999999999	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
 1	1	1	1
 1	1	1	1
 1	1	1	1

Modified: hive/trunk/ql/src/test/results/clientpositive/decimal_precision.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/decimal_precision.q.out?rev=1543916&r1=1543915&r2=1543916&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/clientpositive/decimal_precision.q.out (original)
+++ hive/trunk/ql/src/test/results/clientpositive/decimal_precision.q.out Wed Nov 20 19:58:00 2013
@@ -2,12 +2,12 @@ PREHOOK: query: DROP TABLE IF EXISTS DEC
 PREHOOK: type: DROPTABLE
 POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_PRECISION
 POSTHOOK: type: DROPTABLE
-PREHOOK: query: CREATE TABLE DECIMAL_PRECISION(dec decimal(60,30)) 
+PREHOOK: query: CREATE TABLE DECIMAL_PRECISION(dec decimal(38,18))
 ROW FORMAT DELIMITED
    FIELDS TERMINATED BY ' '
 STORED AS TEXTFILE
 PREHOOK: type: CREATETABLE
-POSTHOOK: query: CREATE TABLE DECIMAL_PRECISION(dec decimal(60,30)) 
+POSTHOOK: query: CREATE TABLE DECIMAL_PRECISION(dec decimal(38,18))
 ROW FORMAT DELIMITED
    FIELDS TERMINATED BY ' '
 STORED AS TEXTFILE
@@ -46,62 +46,62 @@ NULL
 NULL
 NULL
 NULL
+NULL
+NULL
+NULL
+NULL
+NULL
+NULL
+NULL
+NULL
+NULL
+NULL
 0
 0
 0
 0
 0
 0.123456789012345
-0.12345678901234567890123456789
+0.123456789012345679
 1.234567890123456
-1.234567890123456789012345678901
-1.234567890123456789012345678901
+1.234567890123456789
+1.234567890123456789
 12.34567890123456
-12.345678901234567890123456789012
-12.345678901234567890123456789012
+12.34567890123456789
+12.34567890123456789
 123.4567890123456
-123.456789012345678901234567890123
-123.456789012345678901234567890123
+123.456789012345678901
+123.456789012345678901
 1234.567890123456
-1234.567890123456789012345678901235
-1234.567890123456789012345678901235
+1234.567890123456789012
+1234.567890123456789012
 12345.67890123456
-12345.678901234567890123456789012346
+12345.678901234567890123
 123456.7890123456
-123456.789012345678901234567890123457
+123456.789012345678901235
 1234567.890123456
-1234567.890123456789012345678901234568
+1234567.890123456789012346
 12345678.90123456
-12345678.901234567890123456789012345678
+12345678.901234567890123457
 123456789.0123456
-123456789.01234567890123456789012345678
+123456789.012345678901234568
 1234567890.123456
-1234567890.1234567890123456789012345678
+1234567890.123456789012345679
 12345678901.23456
-12345678901.234567890123456789012345678
+12345678901.234567890123456789
 123456789012.3456
-123456789012.34567890123456789012345678
+123456789012.34567890123456789
 1234567890123.456
-1234567890123.4567890123456789012345678
+1234567890123.456789012345678901
 12345678901234.56
-12345678901234.567890123456789012345678
+12345678901234.567890123456789012
 123456789012345.6
-123456789012345.67890123456789012345678
-1234567890123456.7890123456789012345678
-12345678901234567.890123456789012345678
-123456789012345678.90123456789012345678
-1234567890123456789.0123456789012345678
+123456789012345.678901234567890123
+1234567890123456.789012345678901235
+12345678901234567.890123456789012346
+123456789012345678.901234567890123457
+1234567890123456789.012345678901234568
 12345678901234567890.123456789012345678
-123456789012345678901.23456789012345678
-1234567890123456789012.3456789012345678
-12345678901234567890123.456789012345678
-123456789012345678901234.56789012345678
-1234567890123456789012345.6789012345678
-12345678901234567890123456.789012345678
-123456789012345678901234567.89012345678
-1234567890123456789012345678.9012345678
-12345678901234567890123456789.012345678
-123456789012345678901234567890.12345678
 PREHOOK: query: SELECT dec, dec + 1, dec - 1 FROM DECIMAL_PRECISION ORDER BY dec
 PREHOOK: type: QUERY
 PREHOOK: Input: default@decimal_precision
@@ -129,62 +129,62 @@ NULL	NULL	NULL
 NULL	NULL	NULL
 NULL	NULL	NULL
 NULL	NULL	NULL
+NULL	NULL	NULL
+NULL	NULL	NULL
+NULL	NULL	NULL
+NULL	NULL	NULL
+NULL	NULL	NULL
+NULL	NULL	NULL
+NULL	NULL	NULL
+NULL	NULL	NULL
+NULL	NULL	NULL
+NULL	NULL	NULL
 0	1	-1
 0	1	-1
 0	1	-1
 0	1	-1
 0	1	-1
 0.123456789012345	1.123456789012345	-0.876543210987655
-0.12345678901234567890123456789	1.12345678901234567890123456789	-0.87654321098765432109876543211
+0.123456789012345679	1.123456789012345679	-0.876543210987654321
 1.234567890123456	2.234567890123456	0.234567890123456
-1.234567890123456789012345678901	2.234567890123456789012345678901	0.234567890123456789012345678901
-1.234567890123456789012345678901	2.234567890123456789012345678901	0.234567890123456789012345678901
+1.234567890123456789	2.234567890123456789	0.234567890123456789
+1.234567890123456789	2.234567890123456789	0.234567890123456789
 12.34567890123456	13.34567890123456	11.34567890123456
-12.345678901234567890123456789012	13.345678901234567890123456789012	11.345678901234567890123456789012
-12.345678901234567890123456789012	13.345678901234567890123456789012	11.345678901234567890123456789012
+12.34567890123456789	13.34567890123456789	11.34567890123456789
+12.34567890123456789	13.34567890123456789	11.34567890123456789
 123.4567890123456	124.4567890123456	122.4567890123456
-123.456789012345678901234567890123	124.456789012345678901234567890123	122.456789012345678901234567890123
-123.456789012345678901234567890123	124.456789012345678901234567890123	122.456789012345678901234567890123
+123.456789012345678901	124.456789012345678901	122.456789012345678901
+123.456789012345678901	124.456789012345678901	122.456789012345678901
 1234.567890123456	1235.567890123456	1233.567890123456
-1234.567890123456789012345678901235	1235.567890123456789012345678901235	1233.567890123456789012345678901235
-1234.567890123456789012345678901235	1235.567890123456789012345678901235	1233.567890123456789012345678901235
+1234.567890123456789012	1235.567890123456789012	1233.567890123456789012
+1234.567890123456789012	1235.567890123456789012	1233.567890123456789012
 12345.67890123456	12346.67890123456	12344.67890123456
-12345.678901234567890123456789012346	12346.678901234567890123456789012346	12344.678901234567890123456789012346
+12345.678901234567890123	12346.678901234567890123	12344.678901234567890123
 123456.7890123456	123457.7890123456	123455.7890123456
-123456.789012345678901234567890123457	123457.789012345678901234567890123457	123455.789012345678901234567890123457
+123456.789012345678901235	123457.789012345678901235	123455.789012345678901235
 1234567.890123456	1234568.890123456	1234566.890123456
-1234567.890123456789012345678901234568	1234568.890123456789012345678901234568	1234566.890123456789012345678901234568
+1234567.890123456789012346	1234568.890123456789012346	1234566.890123456789012346
 12345678.90123456	12345679.90123456	12345677.90123456
-12345678.901234567890123456789012345678	12345679.901234567890123456789012345678	12345677.901234567890123456789012345678
+12345678.901234567890123457	12345679.901234567890123457	12345677.901234567890123457
 123456789.0123456	123456790.0123456	123456788.0123456
-123456789.01234567890123456789012345678	123456790.01234567890123456789012345678	123456788.01234567890123456789012345678
+123456789.012345678901234568	123456790.012345678901234568	123456788.012345678901234568
 1234567890.123456	1234567891.123456	1234567889.123456
-1234567890.1234567890123456789012345678	1234567891.1234567890123456789012345678	1234567889.1234567890123456789012345678
+1234567890.123456789012345679	1234567891.123456789012345679	1234567889.123456789012345679
 12345678901.23456	12345678902.23456	12345678900.23456
-12345678901.234567890123456789012345678	12345678902.234567890123456789012345678	12345678900.234567890123456789012345678
+12345678901.234567890123456789	12345678902.234567890123456789	12345678900.234567890123456789
 123456789012.3456	123456789013.3456	123456789011.3456
-123456789012.34567890123456789012345678	123456789013.34567890123456789012345678	123456789011.34567890123456789012345678
+123456789012.34567890123456789	123456789013.34567890123456789	123456789011.34567890123456789
 1234567890123.456	1234567890124.456	1234567890122.456
-1234567890123.4567890123456789012345678	1234567890124.4567890123456789012345678	1234567890122.4567890123456789012345678
+1234567890123.456789012345678901	1234567890124.456789012345678901	1234567890122.456789012345678901
 12345678901234.56	12345678901235.56	12345678901233.56
-12345678901234.567890123456789012345678	12345678901235.567890123456789012345678	12345678901233.567890123456789012345678
+12345678901234.567890123456789012	12345678901235.567890123456789012	12345678901233.567890123456789012
 123456789012345.6	123456789012346.6	123456789012344.6
-123456789012345.67890123456789012345678	123456789012346.67890123456789012345678	123456789012344.67890123456789012345678
-1234567890123456.7890123456789012345678	1234567890123457.7890123456789012345678	1234567890123455.7890123456789012345678
-12345678901234567.890123456789012345678	12345678901234568.890123456789012345678	12345678901234566.890123456789012345678
-123456789012345678.90123456789012345678	123456789012345679.90123456789012345678	123456789012345677.90123456789012345678
-1234567890123456789.0123456789012345678	1234567890123456790.0123456789012345678	1234567890123456788.0123456789012345678
+123456789012345.678901234567890123	123456789012346.678901234567890123	123456789012344.678901234567890123
+1234567890123456.789012345678901235	1234567890123457.789012345678901235	1234567890123455.789012345678901235
+12345678901234567.890123456789012346	12345678901234568.890123456789012346	12345678901234566.890123456789012346
+123456789012345678.901234567890123457	123456789012345679.901234567890123457	123456789012345677.901234567890123457
+1234567890123456789.012345678901234568	1234567890123456790.012345678901234568	1234567890123456788.012345678901234568
 12345678901234567890.123456789012345678	12345678901234567891.123456789012345678	12345678901234567889.123456789012345678
-123456789012345678901.23456789012345678	123456789012345678902.23456789012345678	123456789012345678900.23456789012345678
-1234567890123456789012.3456789012345678	1234567890123456789013.3456789012345678	1234567890123456789011.3456789012345678
-12345678901234567890123.456789012345678	12345678901234567890124.456789012345678	12345678901234567890122.456789012345678
-123456789012345678901234.56789012345678	123456789012345678901235.56789012345678	123456789012345678901233.56789012345678
-1234567890123456789012345.6789012345678	1234567890123456789012346.6789012345678	1234567890123456789012344.6789012345678
-12345678901234567890123456.789012345678	12345678901234567890123457.789012345678	12345678901234567890123455.789012345678
-123456789012345678901234567.89012345678	123456789012345678901234568.89012345678	123456789012345678901234566.89012345678
-1234567890123456789012345678.9012345678	1234567890123456789012345679.9012345678	1234567890123456789012345677.9012345678
-12345678901234567890123456789.012345678	12345678901234567890123456790.012345678	12345678901234567890123456788.012345678
-123456789012345678901234567890.12345678	123456789012345678901234567891.12345678	123456789012345678901234567889.12345678
 PREHOOK: query: SELECT dec, dec * 2, dec / 3  FROM DECIMAL_PRECISION ORDER BY dec
 PREHOOK: type: QUERY
 PREHOOK: Input: default@decimal_precision
@@ -212,62 +212,62 @@ NULL	NULL	NULL
 NULL	NULL	NULL
 NULL	NULL	NULL
 NULL	NULL	NULL
+NULL	NULL	NULL
+NULL	NULL	NULL
+NULL	NULL	NULL
+NULL	NULL	NULL
+NULL	NULL	NULL
+NULL	NULL	NULL
+NULL	NULL	NULL
+NULL	NULL	NULL
+NULL	NULL	NULL
+NULL	NULL	NULL
 0	0	0
 0	0	0
 0	0	0
 0	0	0
 0	0	0
 0.123456789012345	0.24691357802469	0.041152263004115
-0.12345678901234567890123456789	0.24691357802469135780246913578	0.04115226300411522630041152263
+0.123456789012345679	0.246913578024691358	0.04115226300411522633
 1.234567890123456	2.469135780246912	0.411522630041152
-1.234567890123456789012345678901	2.469135780246913578024691357802	0.4115226300411522630041152263
-1.234567890123456789012345678901	2.469135780246913578024691357802	0.4115226300411522630041152263
+1.234567890123456789	2.469135780246913578	0.411522630041152263
+1.234567890123456789	2.469135780246913578	0.411522630041152263
 12.34567890123456	24.69135780246912	4.11522630041152
-12.345678901234567890123456789012	24.691357802469135780246913578024	4.115226300411522630041152263004
-12.345678901234567890123456789012	24.691357802469135780246913578024	4.115226300411522630041152263004
+12.34567890123456789	24.69135780246913578	4.11522630041152263
+12.34567890123456789	24.69135780246913578	4.11522630041152263
 123.4567890123456	246.9135780246912	41.1522630041152
-123.456789012345678901234567890123	246.913578024691357802469135780246	41.152263004115226300411522630041
-123.456789012345678901234567890123	246.913578024691357802469135780246	41.152263004115226300411522630041
+123.456789012345678901	246.913578024691357802	41.15226300411522630033
+123.456789012345678901	246.913578024691357802	41.15226300411522630033
 1234.567890123456	2469.135780246912	411.522630041152
-1234.567890123456789012345678901235	2469.13578024691357802469135780247	411.522630041152263004115226300412
-1234.567890123456789012345678901235	2469.13578024691357802469135780247	411.522630041152263004115226300412
+1234.567890123456789012	2469.135780246913578024	411.522630041152263004
+1234.567890123456789012	2469.135780246913578024	411.522630041152263004
 12345.67890123456	24691.35780246912	4115.22630041152
-12345.678901234567890123456789012346	24691.357802469135780246913578024692	4115.226300411522630041152263004115
+12345.678901234567890123	24691.357802469135780246	4115.226300411522630041
 123456.7890123456	246913.5780246912	41152.2630041152
-123456.789012345678901234567890123457	246913.578024691357802469135780246914	41152.263004115226300411522630041152
+123456.789012345678901235	246913.57802469135780247	41152.26300411522630041167
 1234567.890123456	2469135.780246912	411522.630041152
-1234567.890123456789012345678901234568	2469135.780246913578024691357802469136	411522.630041152263004115226300411523
+1234567.890123456789012346	2469135.780246913578024692	411522.63004115226300411533
 12345678.90123456	24691357.80246912	4115226.30041152
-12345678.901234567890123456789012345678	24691357.802469135780246913578024691356	4115226.300411522630041152263004115226
+12345678.901234567890123457	24691357.802469135780246914	4115226.30041152263004115233
 123456789.0123456	246913578.0246912	41152263.0041152
-123456789.01234567890123456789012345678	246913578.02469135780246913578024691356	41152263.00411522630041152263004115226
+123456789.012345678901234568	246913578.024691357802469136	41152263.00411522630041152267
 1234567890.123456	2469135780.246912	411522630.041152
-1234567890.1234567890123456789012345678	2469135780.2469135780246913578024691356	411522630.0411522630041152263004115226
+1234567890.123456789012345679	2469135780.246913578024691358	411522630.04115226300411522633
 12345678901.23456	24691357802.46912	4115226300.41152
-12345678901.234567890123456789012345678	24691357802.469135780246913578024691356	4115226300.411522630041152263004115226
+12345678901.234567890123456789	24691357802.469135780246913578	4115226300.411522630041152263
 123456789012.3456	246913578024.6912	41152263004.1152
-123456789012.34567890123456789012345678	246913578024.69135780246913578024691356	41152263004.11522630041152263004115226
+123456789012.34567890123456789	246913578024.69135780246913578	41152263004.11522630041152263
 1234567890123.456	2469135780246.912	411522630041.152
-1234567890123.4567890123456789012345678	2469135780246.9135780246913578024691356	411522630041.1522630041152263004115226
+1234567890123.456789012345678901	2469135780246.913578024691357802	411522630041.15226300411522630033
 12345678901234.56	24691357802469.12	4115226300411.52
-12345678901234.567890123456789012345678	24691357802469.135780246913578024691356	4115226300411.522630041152263004115226
+12345678901234.567890123456789012	24691357802469.135780246913578024	4115226300411.522630041152263004
 123456789012345.6	246913578024691.2	41152263004115.2
-123456789012345.67890123456789012345678	246913578024691.35780246913578024691356	41152263004115.22630041152263004115226
-1234567890123456.7890123456789012345678	2469135780246913.5780246913578024691356	411522630041152.2630041152263004115226
-12345678901234567.890123456789012345678	24691357802469135.780246913578024691356	4115226300411522.630041152263004115226
-123456789012345678.90123456789012345678	246913578024691357.80246913578024691356	41152263004115226.30041152263004115226
-1234567890123456789.0123456789012345678	2469135780246913578.0246913578024691356	411522630041152263.0041152263004115226
-12345678901234567890.123456789012345678	24691357802469135780.246913578024691356	4115226300411522630.041152263004115226
-123456789012345678901.23456789012345678	246913578024691357802.46913578024691356	41152263004115226300.41152263004115226
-1234567890123456789012.3456789012345678	2469135780246913578024.6913578024691356	411522630041152263004.1152263004115226
-12345678901234567890123.456789012345678	24691357802469135780246.913578024691356	4115226300411522630041.152263004115226
-123456789012345678901234.56789012345678	246913578024691357802469.13578024691356	41152263004115226300411.52263004115226
-1234567890123456789012345.6789012345678	2469135780246913578024691.3578024691356	411522630041152263004115.2263004115226
-12345678901234567890123456.789012345678	24691357802469135780246913.578024691356	4115226300411522630041152.263004115226
-123456789012345678901234567.89012345678	246913578024691357802469135.78024691356	41152263004115226300411522.63004115226
-1234567890123456789012345678.9012345678	2469135780246913578024691357.8024691356	411522630041152263004115226.3004115226
-12345678901234567890123456789.012345678	24691357802469135780246913578.024691356	4115226300411522630041152263.004115226
-123456789012345678901234567890.12345678	246913578024691357802469135780.24691356	41152263004115226300411522630.04115226
+123456789012345.678901234567890123	246913578024691.357802469135780246	41152263004115.226300411522630041
+1234567890123456.789012345678901235	2469135780246913.57802469135780247	411522630041152.26300411522630041167
+12345678901234567.890123456789012346	24691357802469135.780246913578024692	4115226300411522.63004115226300411533
+123456789012345678.901234567890123457	246913578024691357.802469135780246914	41152263004115226.30041152263004115233
+1234567890123456789.012345678901234568	2469135780246913578.024691357802469136	NULL
+12345678901234567890.123456789012345678	24691357802469135780.246913578024691356	NULL
 PREHOOK: query: SELECT dec, dec / 9 FROM DECIMAL_PRECISION ORDER BY dec
 PREHOOK: type: QUERY
 PREHOOK: Input: default@decimal_precision
@@ -295,62 +295,62 @@ NULL	NULL
 NULL	NULL
 NULL	NULL
 NULL	NULL
+NULL	NULL
+NULL	NULL
+NULL	NULL
+NULL	NULL
+NULL	NULL
+NULL	NULL
+NULL	NULL
+NULL	NULL
+NULL	NULL
+NULL	NULL
 0	0
 0	0
 0	0
 0	0
 0	0
-0.123456789012345	0.013717421001371666666666666667
-0.12345678901234567890123456789	0.01371742100137174210013717421
-1.234567890123456	0.137174210013717333333333333333
-1.234567890123456789012345678901	0.1371742100137174210013717421
-1.234567890123456789012345678901	0.1371742100137174210013717421
-12.34567890123456	1.371742100137173333333333333333
-12.345678901234567890123456789012	1.371742100137174210013717421001
-12.345678901234567890123456789012	1.371742100137174210013717421001
-123.4567890123456	13.717421001371733333333333333333
-123.456789012345678901234567890123	13.717421001371742100137174210014
-123.456789012345678901234567890123	13.717421001371742100137174210014
-1234.567890123456	137.174210013717333333333333333333
-1234.567890123456789012345678901235	137.174210013717421001371742100137
-1234.567890123456789012345678901235	137.174210013717421001371742100137
-12345.67890123456	1371.742100137173333333333333333333
-12345.678901234567890123456789012346	1371.742100137174210013717421001372
-123456.7890123456	13717.421001371733333333333333333333
-123456.789012345678901234567890123457	13717.421001371742100137174210013717
-1234567.890123456	137174.210013717333333333333333333333
-1234567.890123456789012345678901234568	137174.210013717421001371742100137174
-12345678.90123456	1371742.100137173333333333333333333333
-12345678.901234567890123456789012345678	1371742.100137174210013717421001371742
-123456789.0123456	13717421.001371733333333333333333333333
-123456789.01234567890123456789012345678	13717421.00137174210013717421001371742
-1234567890.123456	137174210.013717333333333333333333333333
-1234567890.1234567890123456789012345678	137174210.0137174210013717421001371742
-12345678901.23456	1371742100.137173333333333333333333333333
-12345678901.234567890123456789012345678	1371742100.137174210013717421001371742
-123456789012.3456	13717421001.371733333333333333333333333333
-123456789012.34567890123456789012345678	13717421001.37174210013717421001371742
-1234567890123.456	137174210013.717333333333333333333333333333
-1234567890123.4567890123456789012345678	137174210013.7174210013717421001371742
-12345678901234.56	1371742100137.173333333333333333333333333333
-12345678901234.567890123456789012345678	1371742100137.174210013717421001371742
-123456789012345.6	13717421001371.733333333333333333333333333333
-123456789012345.67890123456789012345678	13717421001371.74210013717421001371742
-1234567890123456.7890123456789012345678	137174210013717.4210013717421001371742
-12345678901234567.890123456789012345678	1371742100137174.210013717421001371742
-123456789012345678.90123456789012345678	13717421001371742.10013717421001371742
-1234567890123456789.0123456789012345678	137174210013717421.0013717421001371742
-12345678901234567890.123456789012345678	1371742100137174210.013717421001371742
-123456789012345678901.23456789012345678	13717421001371742100.13717421001371742
-1234567890123456789012.3456789012345678	137174210013717421001.3717421001371742
-12345678901234567890123.456789012345678	1371742100137174210013.717421001371742
-123456789012345678901234.56789012345678	13717421001371742100137.17421001371742
-1234567890123456789012345.6789012345678	137174210013717421001371.7421001371742
-12345678901234567890123456.789012345678	1371742100137174210013717.421001371742
-123456789012345678901234567.89012345678	13717421001371742100137174.21001371742
-1234567890123456789012345678.9012345678	137174210013717421001371742.1001371742
-12345678901234567890123456789.012345678	1371742100137174210013717421.001371742
-123456789012345678901234567890.12345678	13717421001371742100137174210.01371742
+0.123456789012345	0.01371742100137166667
+0.123456789012345679	0.01371742100137174211
+1.234567890123456	0.13717421001371733333
+1.234567890123456789	0.137174210013717421
+1.234567890123456789	0.137174210013717421
+12.34567890123456	1.37174210013717333333
+12.34567890123456789	1.37174210013717421
+12.34567890123456789	1.37174210013717421
+123.4567890123456	13.71742100137173333333
+123.456789012345678901	13.71742100137174210011
+123.456789012345678901	13.71742100137174210011
+1234.567890123456	137.17421001371733333333
+1234.567890123456789012	137.17421001371742100133
+1234.567890123456789012	137.17421001371742100133
+12345.67890123456	1371.74210013717333333333
+12345.678901234567890123	1371.74210013717421001367
+123456.7890123456	13717.42100137173333333333
+123456.789012345678901235	13717.42100137174210013722
+1234567.890123456	137174.21001371733333333333
+1234567.890123456789012346	137174.21001371742100137178
+12345678.90123456	1371742.10013717333333333333
+12345678.901234567890123457	1371742.10013717421001371744
+123456789.0123456	13717421.00137173333333333333
+123456789.012345678901234568	13717421.00137174210013717422
+1234567890.123456	137174210.01371733333333333333
+1234567890.123456789012345679	137174210.01371742100137174211
+12345678901.23456	1371742100.13717333333333333333
+12345678901.234567890123456789	1371742100.137174210013717421
+123456789012.3456	13717421001.37173333333333333333
+123456789012.34567890123456789	13717421001.37174210013717421
+1234567890123.456	137174210013.71733333333333333333
+1234567890123.456789012345678901	137174210013.71742100137174210011
+12345678901234.56	1371742100137.17333333333333333333
+12345678901234.567890123456789012	1371742100137.17421001371742100133
+123456789012345.6	13717421001371.73333333333333333333
+123456789012345.678901234567890123	13717421001371.74210013717421001367
+1234567890123456.789012345678901235	137174210013717.42100137174210013722
+12345678901234567.890123456789012346	1371742100137174.21001371742100137178
+123456789012345678.901234567890123457	13717421001371742.10013717421001371744
+1234567890123456789.012345678901234568	NULL
+12345678901234567890.123456789012345678	NULL
 PREHOOK: query: SELECT dec, dec / 27 FROM DECIMAL_PRECISION ORDER BY dec
 PREHOOK: type: QUERY
 PREHOOK: Input: default@decimal_precision
@@ -378,62 +378,62 @@ NULL	NULL
 NULL	NULL
 NULL	NULL
 NULL	NULL
+NULL	NULL
+NULL	NULL
+NULL	NULL
+NULL	NULL
+NULL	NULL
+NULL	NULL
+NULL	NULL
+NULL	NULL
+NULL	NULL
+NULL	NULL
 0	0
 0	0
 0	0
 0	0
 0	0
-0.123456789012345	0.004572473667123888888888888889
-0.12345678901234567890123456789	0.00457247366712391403337905807
-1.234567890123456	0.045724736671239111111111111111
-1.234567890123456789012345678901	0.0457247366712391403337905807
-1.234567890123456789012345678901	0.0457247366712391403337905807
-12.34567890123456	0.457247366712391111111111111111
-12.345678901234567890123456789012	0.457247366712391403337905807
-12.345678901234567890123456789012	0.457247366712391403337905807
-123.4567890123456	4.572473667123911111111111111111
-123.456789012345678901234567890123	4.572473667123914033379058070005
-123.456789012345678901234567890123	4.572473667123914033379058070005
-1234.567890123456	45.724736671239111111111111111111
-1234.567890123456789012345678901235	45.724736671239140333790580700046
-1234.567890123456789012345678901235	45.724736671239140333790580700046
-12345.67890123456	457.247366712391111111111111111111
-12345.678901234567890123456789012346	457.247366712391403337905807000457
-123456.7890123456	4572.473667123911111111111111111111
-123456.789012345678901234567890123457	4572.473667123914033379058070004572
-1234567.890123456	45724.736671239111111111111111111111
-1234567.890123456789012345678901234568	45724.736671239140333790580700045725
-12345678.90123456	457247.366712391111111111111111111111
-12345678.901234567890123456789012345678	457247.366712391403337905807000457247
-123456789.0123456	4572473.667123911111111111111111111111
-123456789.01234567890123456789012345678	4572473.667123914033379058070004572473
-1234567890.123456	45724736.671239111111111111111111111111
-1234567890.1234567890123456789012345678	45724736.671239140333790580700045724733
-12345678901.23456	457247366.712391111111111111111111111111
-12345678901.234567890123456789012345678	457247366.712391403337905807000457247333
-123456789012.3456	4572473667.123911111111111111111111111111
-123456789012.34567890123456789012345678	4572473667.123914033379058070004572473333
-1234567890123.456	45724736671.239111111111111111111111111111
-1234567890123.4567890123456789012345678	45724736671.239140333790580700045724733333
-12345678901234.56	457247366712.391111111111111111111111111111
-12345678901234.567890123456789012345678	457247366712.391403337905807000457247333333
-123456789012345.6	4572473667123.911111111111111111111111111111
-123456789012345.67890123456789012345678	4572473667123.914033379058070004572473333333
-1234567890123456.7890123456789012345678	45724736671239.140333790580700045724733333333
-12345678901234567.890123456789012345678	457247366712391.403337905807000457247333333333
-123456789012345678.90123456789012345678	4572473667123914.033379058070004572473333333333
-1234567890123456789.0123456789012345678	45724736671239140.333790580700045724733333333333
-12345678901234567890.123456789012345678	457247366712391403.337905807000457247333333333333
-123456789012345678901.23456789012345678	4572473667123914033.379058070004572473333333333333
-1234567890123456789012.3456789012345678	45724736671239140333.790580700045724733333333333333
-12345678901234567890123.456789012345678	457247366712391403337.905807000457247333333333333333
-123456789012345678901234.56789012345678	4572473667123914033379.058070004572473333333333333333
-1234567890123456789012345.6789012345678	45724736671239140333790.580700045724733333333333333333
-12345678901234567890123456.789012345678	457247366712391403337905.807000457247333333333333333333
-123456789012345678901234567.89012345678	4572473667123914033379058.070004572473333333333333333333
-1234567890123456789012345678.9012345678	45724736671239140333790580.700045724733333333333333333333
-12345678901234567890123456789.012345678	457247366712391403337905807.000457247333333333333333333333
-123456789012345678901234567890.12345678	4572473667123914033379058070.004572473333333333333333333333
+0.123456789012345	0.004572473667123888889
+0.123456789012345679	0.004572473667123914037
+1.234567890123456	0.045724736671239111111
+1.234567890123456789	0.045724736671239140333
+1.234567890123456789	0.045724736671239140333
+12.34567890123456	0.457247366712391111111
+12.34567890123456789	0.457247366712391403333
+12.34567890123456789	0.457247366712391403333
+123.4567890123456	4.572473667123911111111
+123.456789012345678901	4.57247366712391403337
+123.456789012345678901	4.57247366712391403337
+1234.567890123456	45.724736671239111111111
+1234.567890123456789012	45.724736671239140333778
+1234.567890123456789012	45.724736671239140333778
+12345.67890123456	457.247366712391111111111
+12345.678901234567890123	457.247366712391403337889
+123456.7890123456	4572.473667123911111111111
+123456.789012345678901235	4572.473667123914033379074
+1234567.890123456	45724.736671239111111111111
+1234567.890123456789012346	45724.736671239140333790593
+12345678.90123456	457247.366712391111111111111
+12345678.901234567890123457	457247.366712391403337905815
+123456789.0123456	4572473.667123911111111111111
+123456789.012345678901234568	4572473.667123914033379058074
+1234567890.123456	45724736.671239111111111111111
+1234567890.123456789012345679	45724736.671239140333790580704
+12345678901.23456	457247366.712391111111111111111
+12345678901.234567890123456789	457247366.712391403337905807
+123456789012.3456	4572473667.123911111111111111111
+123456789012.34567890123456789	4572473667.12391403337905807
+1234567890123.456	45724736671.239111111111111111111
+1234567890123.456789012345678901	45724736671.239140333790580700037
+12345678901234.56	457247366712.391111111111111111111
+12345678901234.567890123456789012	457247366712.391403337905807000444
+123456789012345.6	4572473667123.911111111111111111111
+123456789012345.678901234567890123	4572473667123.914033379058070004556
+1234567890123456.789012345678901235	45724736671239.140333790580700045741
+12345678901234567.890123456789012346	457247366712391.403337905807000457259
+123456789012345678.901234567890123457	NULL
+1234567890123456789.012345678901234568	NULL
+12345678901234567890.123456789012345678	NULL
 PREHOOK: query: SELECT dec, dec * dec FROM DECIMAL_PRECISION ORDER BY dec
 PREHOOK: type: QUERY
 PREHOOK: Input: default@decimal_precision
@@ -461,62 +461,62 @@ NULL	NULL
 NULL	NULL
 NULL	NULL
 NULL	NULL
+NULL	NULL
+NULL	NULL
+NULL	NULL
+NULL	NULL
+NULL	NULL
+NULL	NULL
+NULL	NULL
+NULL	NULL
+NULL	NULL
+NULL	NULL
 0	0
 0	0
 0	0
 0	0
 0	0
 0.123456789012345	0.015241578753238669120562399025
-0.12345678901234567890123456789	NULL
+0.123456789012345679	0.015241578753238836774881877789971041
 1.234567890123456	1.524157875323881726870921383936
-1.234567890123456789012345678901	NULL
-1.234567890123456789012345678901	NULL
-12.34567890123456	152.4157875323881726870921383936
-12.345678901234567890123456789012	NULL
-12.345678901234567890123456789012	NULL
-123.4567890123456	15241.57875323881726870921383936
-123.456789012345678901234567890123	NULL
-123.456789012345678901234567890123	NULL
-1234.567890123456	1524157.875323881726870921383936
-1234.567890123456789012345678901235	NULL
-1234.567890123456789012345678901235	NULL
-12345.67890123456	152415787.5323881726870921383936
-12345.678901234567890123456789012346	NULL
-123456.7890123456	15241578753.23881726870921383936
-123456.789012345678901234567890123457	NULL
-1234567.890123456	1524157875323.881726870921383936
-1234567.890123456789012345678901234568	NULL
-12345678.90123456	152415787532388.1726870921383936
-12345678.901234567890123456789012345678	NULL
-123456789.0123456	15241578753238817.26870921383936
-123456789.01234567890123456789012345678	NULL
-1234567890.123456	1524157875323881726.870921383936
-1234567890.1234567890123456789012345678	NULL
-12345678901.23456	152415787532388172687.0921383936
-12345678901.234567890123456789012345678	NULL
-123456789012.3456	15241578753238817268709.21383936
-123456789012.34567890123456789012345678	NULL
-1234567890123.456	1524157875323881726870921.383936
-1234567890123.4567890123456789012345678	NULL
-12345678901234.56	152415787532388172687092138.3936
-12345678901234.567890123456789012345678	NULL
-123456789012345.6	15241578753238817268709213839.36
-123456789012345.67890123456789012345678	NULL
-1234567890123456.7890123456789012345678	NULL
-12345678901234567.890123456789012345678	NULL
-123456789012345678.90123456789012345678	NULL
-1234567890123456789.0123456789012345678	NULL
+1.234567890123456789	1.524157875323883675019051998750190521
+1.234567890123456789	1.524157875323883675019051998750190521
+12.34567890123456	NULL
+12.34567890123456789	NULL
+12.34567890123456789	NULL
+123.4567890123456	NULL
+123.456789012345678901	NULL
+123.456789012345678901	NULL
+1234.567890123456	NULL
+1234.567890123456789012	NULL
+1234.567890123456789012	NULL
+12345.67890123456	NULL
+12345.678901234567890123	NULL
+123456.7890123456	NULL
+123456.789012345678901235	NULL
+1234567.890123456	NULL
+1234567.890123456789012346	NULL
+12345678.90123456	NULL
+12345678.901234567890123457	NULL
+123456789.0123456	NULL
+123456789.012345678901234568	NULL
+1234567890.123456	NULL
+1234567890.123456789012345679	NULL
+12345678901.23456	NULL
+12345678901.234567890123456789	NULL
+123456789012.3456	NULL
+123456789012.34567890123456789	NULL
+1234567890123.456	NULL
+1234567890123.456789012345678901	NULL
+12345678901234.56	NULL
+12345678901234.567890123456789012	NULL
+123456789012345.6	NULL
+123456789012345.678901234567890123	NULL
+1234567890123456.789012345678901235	NULL
+12345678901234567.890123456789012346	NULL
+123456789012345678.901234567890123457	NULL
+1234567890123456789.012345678901234568	NULL
 12345678901234567890.123456789012345678	NULL
-123456789012345678901.23456789012345678	NULL
-1234567890123456789012.3456789012345678	NULL
-12345678901234567890123.456789012345678	NULL
-123456789012345678901234.56789012345678	NULL
-1234567890123456789012345.6789012345678	NULL
-12345678901234567890123456.789012345678	NULL
-123456789012345678901234567.89012345678	NULL
-1234567890123456789012345678.9012345678	NULL
-12345678901234567890123456789.012345678	NULL
-123456789012345678901234567890.12345678	NULL
 PREHOOK: query: SELECT avg(dec), sum(dec) FROM DECIMAL_PRECISION
 PREHOOK: type: QUERY
 PREHOOK: Input: default@decimal_precision
@@ -525,47 +525,47 @@ POSTHOOK: query: SELECT avg(dec), sum(de
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@decimal_precision
 #### A masked pattern was here ####
-2449539464530670681706817092.661571403901626461618141287233	137174210013717558175581757189.047998618491081850615912085061
-PREHOOK: query: SELECT dec * cast('123456789012345678901234567890.123456789' as decimal(39,9)) FROM DECIMAL_PRECISION LIMIT 1
+298207786425690373.674956491924017375	13717558175581757189.04799862850479927
+PREHOOK: query: SELECT dec * cast('12345678901234567890.12345678' as decimal(38,18)) FROM DECIMAL_PRECISION LIMIT 1
 PREHOOK: type: QUERY
 PREHOOK: Input: default@decimal_precision
 #### A masked pattern was here ####
-POSTHOOK: query: SELECT dec * cast('123456789012345678901234567890.123456789' as decimal(39,9)) FROM DECIMAL_PRECISION LIMIT 1
+POSTHOOK: query: SELECT dec * cast('12345678901234567890.12345678' as decimal(38,18)) FROM DECIMAL_PRECISION LIMIT 1
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@decimal_precision
 #### A masked pattern was here ####
 NULL
-PREHOOK: query: SELECT * from DECIMAL_PRECISION WHERE dec > cast('123456789012345678901234567890.123456789' as decimal(39,9)) LIMIT 1
+PREHOOK: query: SELECT * from DECIMAL_PRECISION WHERE dec > cast('1234567890123456789012345678.12345678' as decimal(38,18)) LIMIT 1
 PREHOOK: type: QUERY
 PREHOOK: Input: default@decimal_precision
 #### A masked pattern was here ####
-POSTHOOK: query: SELECT * from DECIMAL_PRECISION WHERE dec > cast('123456789012345678901234567890.123456789' as decimal(39,9)) LIMIT 1
+POSTHOOK: query: SELECT * from DECIMAL_PRECISION WHERE dec > cast('1234567890123456789012345678.12345678' as decimal(38,18)) LIMIT 1
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@decimal_precision
 #### A masked pattern was here ####
-PREHOOK: query: SELECT dec * 123456789012345678901234567890.123456789 FROM DECIMAL_PRECISION LIMIT 1
+PREHOOK: query: SELECT dec * 12345678901234567890.12345678 FROM DECIMAL_PRECISION LIMIT 1
 PREHOOK: type: QUERY
 PREHOOK: Input: default@decimal_precision
 #### A masked pattern was here ####
-POSTHOOK: query: SELECT dec * 123456789012345678901234567890.123456789 FROM DECIMAL_PRECISION LIMIT 1
+POSTHOOK: query: SELECT dec * 12345678901234567890.12345678 FROM DECIMAL_PRECISION LIMIT 1
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@decimal_precision
 #### A masked pattern was here ####
 NULL
-PREHOOK: query: SELECT MIN(cast('123456789012345678901234567890.123456789' as decimal(39,9))) FROM DECIMAL_PRECISION
+PREHOOK: query: SELECT MIN(cast('12345678901234567890.12345678' as decimal(38,18))) FROM DECIMAL_PRECISION
 PREHOOK: type: QUERY
 PREHOOK: Input: default@decimal_precision
 #### A masked pattern was here ####
-POSTHOOK: query: SELECT MIN(cast('123456789012345678901234567890.123456789' as decimal(39,9))) FROM DECIMAL_PRECISION
+POSTHOOK: query: SELECT MIN(cast('12345678901234567890.12345678' as decimal(38,18))) FROM DECIMAL_PRECISION
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@decimal_precision
 #### A masked pattern was here ####
-123456789012345678901234567890.123456789
-PREHOOK: query: SELECT COUNT(cast('123456789012345678901234567890.123456789' as decimal(39,9))) FROM DECIMAL_PRECISION
+12345678901234567890.12345678
+PREHOOK: query: SELECT COUNT(cast('12345678901234567890.12345678' as decimal(38,18))) FROM DECIMAL_PRECISION
 PREHOOK: type: QUERY
 PREHOOK: Input: default@decimal_precision
 #### A masked pattern was here ####
-POSTHOOK: query: SELECT COUNT(cast('123456789012345678901234567890.123456789' as decimal(39,9))) FROM DECIMAL_PRECISION
+POSTHOOK: query: SELECT COUNT(cast('12345678901234567890.12345678' as decimal(38,18))) FROM DECIMAL_PRECISION
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@decimal_precision
 #### A masked pattern was here ####