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/04/10 02:38:54 UTC
svn commit: r1466305 [2/3] - in /hive/trunk:
common/src/java/org/apache/hadoop/hive/common/type/ data/files/
jdbc/src/java/org/apache/hadoop/hive/jdbc/
ql/src/java/org/apache/hadoop/hive/ql/udf/
ql/src/java/org/apache/hadoop/hive/ql/udf/generic/ ql/src...
Added: 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=1466305&view=auto
==============================================================================
--- hive/trunk/ql/src/test/results/clientpositive/decimal_precision.q.out (added)
+++ hive/trunk/ql/src/test/results/clientpositive/decimal_precision.q.out Wed Apr 10 00:38:52 2013
@@ -0,0 +1,524 @@
+PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_PRECISION
+PREHOOK: type: DROPTABLE
+POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_PRECISION
+POSTHOOK: type: DROPTABLE
+PREHOOK: query: CREATE TABLE DECIMAL_PRECISION(dec decimal)
+ROW FORMAT DELIMITED
+ FIELDS TERMINATED BY ' '
+STORED AS TEXTFILE
+PREHOOK: type: CREATETABLE
+POSTHOOK: query: CREATE TABLE DECIMAL_PRECISION(dec decimal)
+ROW FORMAT DELIMITED
+ FIELDS TERMINATED BY ' '
+STORED AS TEXTFILE
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: default@DECIMAL_PRECISION
+PREHOOK: query: LOAD DATA LOCAL INPATH '../data/files/kv8.txt' INTO TABLE DECIMAL_PRECISION
+PREHOOK: type: LOAD
+PREHOOK: Output: default@decimal_precision
+POSTHOOK: query: LOAD DATA LOCAL INPATH '../data/files/kv8.txt' INTO TABLE DECIMAL_PRECISION
+POSTHOOK: type: LOAD
+POSTHOOK: Output: default@decimal_precision
+PREHOOK: query: SELECT * FROM DECIMAL_PRECISION ORDER BY dec
+PREHOOK: type: QUERY
+PREHOOK: Input: default@decimal_precision
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT * FROM DECIMAL_PRECISION ORDER BY dec
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@decimal_precision
+#### A masked pattern was here ####
+NULL
+NULL
+NULL
+NULL
+NULL
+NULL
+NULL
+-999999999999999999999999999999999999
+-9999999999999999999999999999999999
+-999999999999999999999999999999999
+-0.00000000000000000000000000000000001
+0
+0.00000000000000000000000000000000001
+0.123456789012345
+0.12345678901234567890123456789012345
+1.234567890123456
+1.23456789012345678901234567890123456
+12.34567890123456
+12.3456789012345678901234567890123456
+123.4567890123456
+123.456789012345678901234567890123456
+1234.567890123456
+1234.56789012345678901234567890123456
+12345.67890123456
+12345.6789012345678901234567890123456
+123456.7890123456
+123456.789012345678901234567890123456
+1234567.890123456
+1234567.89012345678901234567890123456
+12345678.90123456
+12345678.9012345678901234567890123456
+123456789.0123456
+123456789.012345678901234567890123456
+1234567890.123456
+1234567890.12345678901234567890123456
+12345678901.23456
+12345678901.2345678901234567890123456
+123456789012.3456
+123456789012.345678901234567890123456
+1234567890123.456
+1234567890123.45678901234567890123456
+12345678901234.56
+12345678901234.5678901234567890123456
+123456789012345.6
+123456789012345.678901234567890123456
+1234567890123456.78901234567890123456
+12345678901234567.8901234567890123456
+123456789012345678.901234567890123456
+1234567890123456789.01234567890123456
+12345678901234567890.1234567890123456
+123456789012345678901.234567890123456
+1234567890123456789012.34567890123456
+12345678901234567890123.4567890123456
+123456789012345678901234.567890123456
+1234567890123456789012345.67890123456
+12345678901234567890123456.7890123456
+123456789012345678901234567.890123456
+1234567890123456789012345678.90123456
+12345678901234567890123456789.0123456
+123456789012345678901234567890.123456
+1234567890123456789012345678901.23456
+12345678901234567890123456789012.3456
+123456789012345678901234567890123.456
+999999999999999999999999999999999
+1234567890123456789012345678901234.56
+9999999999999999999999999999999999
+12345678901234567890123456789012345.6
+123456789012345678901234567890123456
+123456789012345678901234567890123456
+123456789012345678901234567890123456
+123456789012345678901234567890123456
+123456789012345678901234567890123456
+999999999999999999999999999999999999
+PREHOOK: query: SELECT dec, dec + 1, dec - 1 FROM DECIMAL_PRECISION ORDER BY dec
+PREHOOK: type: QUERY
+PREHOOK: Input: default@decimal_precision
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT dec, dec + 1, dec - 1 FROM DECIMAL_PRECISION ORDER BY dec
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@decimal_precision
+#### A masked pattern was here ####
+NULL NULL NULL
+NULL NULL NULL
+NULL NULL NULL
+NULL NULL NULL
+NULL NULL NULL
+NULL NULL NULL
+NULL NULL NULL
+-999999999999999999999999999999999999 -999999999999999999999999999999999998 NULL
+-9999999999999999999999999999999999 -9999999999999999999999999999999998 -10000000000000000000000000000000000
+-999999999999999999999999999999999 -999999999999999999999999999999998 -1000000000000000000000000000000000
+-0.00000000000000000000000000000000001 0.99999999999999999999999999999999999 -1.00000000000000000000000000000000001
+0 1 -1
+0.00000000000000000000000000000000001 1.00000000000000000000000000000000001 -0.99999999999999999999999999999999999
+0.123456789012345 1.123456789012345 -0.876543210987655
+0.12345678901234567890123456789012345 1.12345678901234567890123456789012345 -0.87654321098765432109876543210987655
+1.234567890123456 2.234567890123456 0.234567890123456
+1.23456789012345678901234567890123456 2.23456789012345678901234567890123456 0.23456789012345678901234567890123456
+12.34567890123456 13.34567890123456 11.34567890123456
+12.3456789012345678901234567890123456 13.3456789012345678901234567890123456 11.3456789012345678901234567890123456
+123.4567890123456 124.4567890123456 122.4567890123456
+123.456789012345678901234567890123456 124.456789012345678901234567890123456 122.456789012345678901234567890123456
+1234.567890123456 1235.567890123456 1233.567890123456
+1234.56789012345678901234567890123456 1235.56789012345678901234567890123456 1233.56789012345678901234567890123456
+12345.67890123456 12346.67890123456 12344.67890123456
+12345.6789012345678901234567890123456 12346.6789012345678901234567890123456 12344.6789012345678901234567890123456
+123456.7890123456 123457.7890123456 123455.7890123456
+123456.789012345678901234567890123456 123457.789012345678901234567890123456 123455.789012345678901234567890123456
+1234567.890123456 1234568.890123456 1234566.890123456
+1234567.89012345678901234567890123456 1234568.89012345678901234567890123456 1234566.89012345678901234567890123456
+12345678.90123456 12345679.90123456 12345677.90123456
+12345678.9012345678901234567890123456 12345679.9012345678901234567890123456 12345677.9012345678901234567890123456
+123456789.0123456 123456790.0123456 123456788.0123456
+123456789.012345678901234567890123456 123456790.012345678901234567890123456 123456788.012345678901234567890123456
+1234567890.123456 1234567891.123456 1234567889.123456
+1234567890.12345678901234567890123456 1234567891.12345678901234567890123456 1234567889.12345678901234567890123456
+12345678901.23456 12345678902.23456 12345678900.23456
+12345678901.2345678901234567890123456 12345678902.2345678901234567890123456 12345678900.2345678901234567890123456
+123456789012.3456 123456789013.3456 123456789011.3456
+123456789012.345678901234567890123456 123456789013.345678901234567890123456 123456789011.345678901234567890123456
+1234567890123.456 1234567890124.456 1234567890122.456
+1234567890123.45678901234567890123456 1234567890124.45678901234567890123456 1234567890122.45678901234567890123456
+12345678901234.56 12345678901235.56 12345678901233.56
+12345678901234.5678901234567890123456 12345678901235.5678901234567890123456 12345678901233.5678901234567890123456
+123456789012345.6 123456789012346.6 123456789012344.6
+123456789012345.678901234567890123456 123456789012346.678901234567890123456 123456789012344.678901234567890123456
+1234567890123456.78901234567890123456 1234567890123457.78901234567890123456 1234567890123455.78901234567890123456
+12345678901234567.8901234567890123456 12345678901234568.8901234567890123456 12345678901234566.8901234567890123456
+123456789012345678.901234567890123456 123456789012345679.901234567890123456 123456789012345677.901234567890123456
+1234567890123456789.01234567890123456 1234567890123456790.01234567890123456 1234567890123456788.01234567890123456
+12345678901234567890.1234567890123456 12345678901234567891.1234567890123456 12345678901234567889.1234567890123456
+123456789012345678901.234567890123456 123456789012345678902.234567890123456 123456789012345678900.234567890123456
+1234567890123456789012.34567890123456 1234567890123456789013.34567890123456 1234567890123456789011.34567890123456
+12345678901234567890123.4567890123456 12345678901234567890124.4567890123456 12345678901234567890122.4567890123456
+123456789012345678901234.567890123456 123456789012345678901235.567890123456 123456789012345678901233.567890123456
+1234567890123456789012345.67890123456 1234567890123456789012346.67890123456 1234567890123456789012344.67890123456
+12345678901234567890123456.7890123456 12345678901234567890123457.7890123456 12345678901234567890123455.7890123456
+123456789012345678901234567.890123456 123456789012345678901234568.890123456 123456789012345678901234566.890123456
+1234567890123456789012345678.90123456 1234567890123456789012345679.90123456 1234567890123456789012345677.90123456
+12345678901234567890123456789.0123456 12345678901234567890123456790.0123456 12345678901234567890123456788.0123456
+123456789012345678901234567890.123456 123456789012345678901234567891.123456 123456789012345678901234567889.123456
+1234567890123456789012345678901.23456 1234567890123456789012345678902.23456 1234567890123456789012345678900.23456
+12345678901234567890123456789012.3456 12345678901234567890123456789013.3456 12345678901234567890123456789011.3456
+123456789012345678901234567890123.456 123456789012345678901234567890124.456 123456789012345678901234567890122.456
+999999999999999999999999999999999 1000000000000000000000000000000000 999999999999999999999999999999998
+1234567890123456789012345678901234.56 1234567890123456789012345678901235.56 1234567890123456789012345678901233.56
+9999999999999999999999999999999999 10000000000000000000000000000000000 9999999999999999999999999999999998
+12345678901234567890123456789012345.6 12345678901234567890123456789012346.6 12345678901234567890123456789012344.6
+123456789012345678901234567890123456 123456789012345678901234567890123457 123456789012345678901234567890123455
+123456789012345678901234567890123456 123456789012345678901234567890123457 123456789012345678901234567890123455
+123456789012345678901234567890123456 123456789012345678901234567890123457 123456789012345678901234567890123455
+123456789012345678901234567890123456 123456789012345678901234567890123457 123456789012345678901234567890123455
+123456789012345678901234567890123456 123456789012345678901234567890123457 123456789012345678901234567890123455
+999999999999999999999999999999999999 NULL 999999999999999999999999999999999998
+PREHOOK: query: SELECT dec, dec * 2, dec / 3 FROM DECIMAL_PRECISION ORDER BY dec
+PREHOOK: type: QUERY
+PREHOOK: Input: default@decimal_precision
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT dec, dec * 2, dec / 3 FROM DECIMAL_PRECISION ORDER BY dec
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@decimal_precision
+#### A masked pattern was here ####
+NULL NULL NULL
+NULL NULL NULL
+NULL NULL NULL
+NULL NULL NULL
+NULL NULL NULL
+NULL NULL NULL
+NULL NULL NULL
+-999999999999999999999999999999999999 NULL -333333333333333333333333333333333333
+-9999999999999999999999999999999999 -19999999999999999999999999999999998 -3333333333333333333333333333333333
+-999999999999999999999999999999999 -1999999999999999999999999999999998 -333333333333333333333333333333333
+-0.00000000000000000000000000000000001 -0.00000000000000000000000000000000002 0
+0 0 0
+0.00000000000000000000000000000000001 0.00000000000000000000000000000000002 0
+0.123456789012345 0.24691357802469 0.041152263004115
+0.12345678901234567890123456789012345 0.2469135780246913578024691357802469 0.04115226300411522630041152263004115
+1.234567890123456 2.469135780246912 0.411522630041152
+1.23456789012345678901234567890123456 2.46913578024691357802469135780246912 0.41152263004115226300411522630041152
+12.34567890123456 24.69135780246912 4.11522630041152
+12.3456789012345678901234567890123456 24.6913578024691357802469135780246912 4.1152263004115226300411522630041152
+123.4567890123456 246.9135780246912 41.1522630041152
+123.456789012345678901234567890123456 246.913578024691357802469135780246912 41.152263004115226300411522630041152
+1234.567890123456 2469.135780246912 411.522630041152
+1234.56789012345678901234567890123456 2469.13578024691357802469135780246912 411.52263004115226300411522630041152
+12345.67890123456 24691.35780246912 4115.22630041152
+12345.6789012345678901234567890123456 24691.3578024691357802469135780246912 4115.2263004115226300411522630041152
+123456.7890123456 246913.5780246912 41152.2630041152
+123456.789012345678901234567890123456 246913.578024691357802469135780246912 41152.263004115226300411522630041152
+1234567.890123456 2469135.780246912 411522.630041152
+1234567.89012345678901234567890123456 2469135.78024691357802469135780246912 411522.63004115226300411522630041152
+12345678.90123456 24691357.80246912 4115226.30041152
+12345678.9012345678901234567890123456 24691357.8024691357802469135780246912 4115226.3004115226300411522630041152
+123456789.0123456 246913578.0246912 41152263.0041152
+123456789.012345678901234567890123456 246913578.024691357802469135780246912 41152263.004115226300411522630041152
+1234567890.123456 2469135780.246912 411522630.041152
+1234567890.12345678901234567890123456 2469135780.24691357802469135780246912 411522630.04115226300411522630041152
+12345678901.23456 24691357802.46912 4115226300.41152
+12345678901.2345678901234567890123456 24691357802.4691357802469135780246912 4115226300.4115226300411522630041152
+123456789012.3456 246913578024.6912 41152263004.1152
+123456789012.345678901234567890123456 246913578024.691357802469135780246912 41152263004.115226300411522630041152
+1234567890123.456 2469135780246.912 411522630041.152
+1234567890123.45678901234567890123456 2469135780246.91357802469135780246912 411522630041.15226300411522630041152
+12345678901234.56 24691357802469.12 4115226300411.52
+12345678901234.5678901234567890123456 24691357802469.1357802469135780246912 4115226300411.5226300411522630041152
+123456789012345.6 246913578024691.2 41152263004115.2
+123456789012345.678901234567890123456 246913578024691.357802469135780246912 41152263004115.226300411522630041152
+1234567890123456.78901234567890123456 2469135780246913.57802469135780246912 411522630041152.26300411522630041152
+12345678901234567.8901234567890123456 24691357802469135.7802469135780246912 4115226300411522.6300411522630041152
+123456789012345678.901234567890123456 246913578024691357.802469135780246912 41152263004115226.300411522630041152
+1234567890123456789.01234567890123456 2469135780246913578.02469135780246912 411522630041152263.00411522630041152
+12345678901234567890.1234567890123456 24691357802469135780.2469135780246912 4115226300411522630.0411522630041152
+123456789012345678901.234567890123456 246913578024691357802.469135780246912 41152263004115226300.411522630041152
+1234567890123456789012.34567890123456 2469135780246913578024.69135780246912 411522630041152263004.11522630041152
+12345678901234567890123.4567890123456 24691357802469135780246.9135780246912 4115226300411522630041.1522630041152
+123456789012345678901234.567890123456 246913578024691357802469.135780246912 41152263004115226300411.522630041152
+1234567890123456789012345.67890123456 2469135780246913578024691.35780246912 411522630041152263004115.22630041152
+12345678901234567890123456.7890123456 24691357802469135780246913.5780246912 4115226300411522630041152.2630041152
+123456789012345678901234567.890123456 246913578024691357802469135.780246912 41152263004115226300411522.630041152
+1234567890123456789012345678.90123456 2469135780246913578024691357.80246912 411522630041152263004115226.30041152
+12345678901234567890123456789.0123456 24691357802469135780246913578.0246912 4115226300411522630041152263.0041152
+123456789012345678901234567890.123456 246913578024691357802469135780.246912 41152263004115226300411522630.041152
+1234567890123456789012345678901.23456 2469135780246913578024691357802.46912 411522630041152263004115226300.41152
+12345678901234567890123456789012.3456 24691357802469135780246913578024.6912 4115226300411522630041152263004.1152
+123456789012345678901234567890123.456 246913578024691357802469135780246.912 41152263004115226300411522630041.152
+999999999999999999999999999999999 1999999999999999999999999999999998 333333333333333333333333333333333
+1234567890123456789012345678901234.56 2469135780246913578024691357802469.12 411522630041152263004115226300411.52
+9999999999999999999999999999999999 19999999999999999999999999999999998 3333333333333333333333333333333333
+12345678901234567890123456789012345.6 24691357802469135780246913578024691.2 4115226300411522630041152263004115.2
+123456789012345678901234567890123456 246913578024691357802469135780246912 41152263004115226300411522630041152
+123456789012345678901234567890123456 246913578024691357802469135780246912 41152263004115226300411522630041152
+123456789012345678901234567890123456 246913578024691357802469135780246912 41152263004115226300411522630041152
+123456789012345678901234567890123456 246913578024691357802469135780246912 41152263004115226300411522630041152
+123456789012345678901234567890123456 246913578024691357802469135780246912 41152263004115226300411522630041152
+999999999999999999999999999999999999 NULL 333333333333333333333333333333333333
+PREHOOK: query: SELECT dec, dec / 9 FROM DECIMAL_PRECISION ORDER BY dec
+PREHOOK: type: QUERY
+PREHOOK: Input: default@decimal_precision
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT dec, dec / 9 FROM DECIMAL_PRECISION ORDER BY dec
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@decimal_precision
+#### A masked pattern was here ####
+NULL NULL
+NULL NULL
+NULL NULL
+NULL NULL
+NULL NULL
+NULL NULL
+NULL NULL
+-999999999999999999999999999999999999 -111111111111111111111111111111111111
+-9999999999999999999999999999999999 -1111111111111111111111111111111111
+-999999999999999999999999999999999 -111111111111111111111111111111111
+-0.00000000000000000000000000000000001 0
+0 0
+0.00000000000000000000000000000000001 0
+0.123456789012345 0.01371742100137166666666666666666667
+0.12345678901234567890123456789012345 0.01371742100137174210013717421001372
+1.234567890123456 0.13717421001371733333333333333333333
+1.23456789012345678901234567890123456 0.13717421001371742100137174210013717
+12.34567890123456 1.37174210013717333333333333333333333
+12.3456789012345678901234567890123456 1.37174210013717421001371742100137173
+123.4567890123456 13.7174210013717333333333333333333333
+123.456789012345678901234567890123456 13.7174210013717421001371742100137173
+1234.567890123456 137.174210013717333333333333333333333
+1234.56789012345678901234567890123456 137.174210013717421001371742100137173
+12345.67890123456 1371.74210013717333333333333333333333
+12345.6789012345678901234567890123456 1371.74210013717421001371742100137173
+123456.7890123456 13717.4210013717333333333333333333333
+123456.789012345678901234567890123456 13717.4210013717421001371742100137173
+1234567.890123456 137174.210013717333333333333333333333
+1234567.89012345678901234567890123456 137174.210013717421001371742100137173
+12345678.90123456 1371742.10013717333333333333333333333
+12345678.9012345678901234567890123456 1371742.10013717421001371742100137173
+123456789.0123456 13717421.0013717333333333333333333333
+123456789.012345678901234567890123456 13717421.0013717421001371742100137173
+1234567890.123456 137174210.013717333333333333333333333
+1234567890.12345678901234567890123456 137174210.013717421001371742100137173
+12345678901.23456 1371742100.13717333333333333333333333
+12345678901.2345678901234567890123456 1371742100.13717421001371742100137173
+123456789012.3456 13717421001.3717333333333333333333333
+123456789012.345678901234567890123456 13717421001.3717421001371742100137173
+1234567890123.456 137174210013.717333333333333333333333
+1234567890123.45678901234567890123456 137174210013.717421001371742100137173
+12345678901234.56 1371742100137.17333333333333333333333
+12345678901234.5678901234567890123456 1371742100137.17421001371742100137173
+123456789012345.6 13717421001371.7333333333333333333333
+123456789012345.678901234567890123456 13717421001371.7421001371742100137173
+1234567890123456.78901234567890123456 137174210013717.421001371742100137173
+12345678901234567.8901234567890123456 1371742100137174.21001371742100137173
+123456789012345678.901234567890123456 13717421001371742.1001371742100137173
+1234567890123456789.01234567890123456 137174210013717421.001371742100137173
+12345678901234567890.1234567890123456 1371742100137174210.01371742100137173
+123456789012345678901.234567890123456 13717421001371742100.1371742100137173
+1234567890123456789012.34567890123456 137174210013717421001.371742100137173
+12345678901234567890123.4567890123456 1371742100137174210013.71742100137173
+123456789012345678901234.567890123456 13717421001371742100137.1742100137173
+1234567890123456789012345.67890123456 137174210013717421001371.742100137173
+12345678901234567890123456.7890123456 1371742100137174210013717.42100137173
+123456789012345678901234567.890123456 13717421001371742100137174.2100137173
+1234567890123456789012345678.90123456 137174210013717421001371742.100137173
+12345678901234567890123456789.0123456 1371742100137174210013717421.00137173
+123456789012345678901234567890.123456 13717421001371742100137174210.0137173
+1234567890123456789012345678901.23456 137174210013717421001371742100.137173
+12345678901234567890123456789012.3456 1371742100137174210013717421001.37173
+123456789012345678901234567890123.456 13717421001371742100137174210013.7173
+999999999999999999999999999999999 111111111111111111111111111111111
+1234567890123456789012345678901234.56 137174210013717421001371742100137.173
+9999999999999999999999999999999999 1111111111111111111111111111111111
+12345678901234567890123456789012345.6 1371742100137174210013717421001371.73
+123456789012345678901234567890123456 13717421001371742100137174210013717.3
+123456789012345678901234567890123456 13717421001371742100137174210013717.3
+123456789012345678901234567890123456 13717421001371742100137174210013717.3
+123456789012345678901234567890123456 13717421001371742100137174210013717.3
+123456789012345678901234567890123456 13717421001371742100137174210013717.3
+999999999999999999999999999999999999 111111111111111111111111111111111111
+PREHOOK: query: SELECT dec, dec / 27 FROM DECIMAL_PRECISION ORDER BY dec
+PREHOOK: type: QUERY
+PREHOOK: Input: default@decimal_precision
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT dec, dec / 27 FROM DECIMAL_PRECISION ORDER BY dec
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@decimal_precision
+#### A masked pattern was here ####
+NULL NULL
+NULL NULL
+NULL NULL
+NULL NULL
+NULL NULL
+NULL NULL
+NULL NULL
+-999999999999999999999999999999999999 -37037037037037037037037037037037037
+-9999999999999999999999999999999999 -370370370370370370370370370370370.333
+-999999999999999999999999999999999 -37037037037037037037037037037037
+-0.00000000000000000000000000000000001 0
+0 0
+0.00000000000000000000000000000000001 0
+0.123456789012345 0.00457247366712388888888888888888889
+0.12345678901234567890123456789012345 0.00457247366712391403337905807000457
+1.234567890123456 0.04572473667123911111111111111111111
+1.23456789012345678901234567890123456 0.04572473667123914033379058070004572
+12.34567890123456 0.45724736671239111111111111111111111
+12.3456789012345678901234567890123456 0.45724736671239140333790580700045724
+123.4567890123456 4.57247366712391111111111111111111111
+123.456789012345678901234567890123456 4.57247366712391403337905807000457244
+1234.567890123456 45.7247366712391111111111111111111111
+1234.56789012345678901234567890123456 45.7247366712391403337905807000457244
+12345.67890123456 457.247366712391111111111111111111111
+12345.6789012345678901234567890123456 457.247366712391403337905807000457244
+123456.7890123456 4572.47366712391111111111111111111111
+123456.789012345678901234567890123456 4572.47366712391403337905807000457244
+1234567.890123456 45724.7366712391111111111111111111111
+1234567.89012345678901234567890123456 45724.7366712391403337905807000457244
+12345678.90123456 457247.366712391111111111111111111111
+12345678.9012345678901234567890123456 457247.366712391403337905807000457244
+123456789.0123456 4572473.66712391111111111111111111111
+123456789.012345678901234567890123456 4572473.66712391403337905807000457244
+1234567890.123456 45724736.6712391111111111111111111111
+1234567890.12345678901234567890123456 45724736.6712391403337905807000457244
+12345678901.23456 457247366.712391111111111111111111111
+12345678901.2345678901234567890123456 457247366.712391403337905807000457244
+123456789012.3456 4572473667.12391111111111111111111111
+123456789012.345678901234567890123456 4572473667.12391403337905807000457244
+1234567890123.456 45724736671.2391111111111111111111111
+1234567890123.45678901234567890123456 45724736671.2391403337905807000457244
+12345678901234.56 457247366712.391111111111111111111111
+12345678901234.5678901234567890123456 457247366712.391403337905807000457244
+123456789012345.6 4572473667123.91111111111111111111111
+123456789012345.678901234567890123456 4572473667123.91403337905807000457244
+1234567890123456.78901234567890123456 45724736671239.1403337905807000457244
+12345678901234567.8901234567890123456 457247366712391.403337905807000457244
+123456789012345678.901234567890123456 4572473667123914.03337905807000457244
+1234567890123456789.01234567890123456 45724736671239140.3337905807000457244
+12345678901234567890.1234567890123456 457247366712391403.337905807000457244
+123456789012345678901.234567890123456 4572473667123914033.37905807000457244
+1234567890123456789012.34567890123456 45724736671239140333.7905807000457244
+12345678901234567890123.4567890123456 457247366712391403337.905807000457244
+123456789012345678901234.567890123456 4572473667123914033379.05807000457244
+1234567890123456789012345.67890123456 45724736671239140333790.5807000457244
+12345678901234567890123456.7890123456 457247366712391403337905.807000457244
+123456789012345678901234567.890123456 4572473667123914033379058.07000457244
+1234567890123456789012345678.90123456 45724736671239140333790580.7000457244
+12345678901234567890123456789.0123456 457247366712391403337905807.000457244
+123456789012345678901234567890.123456 4572473667123914033379058070.00457244
+1234567890123456789012345678901.23456 45724736671239140333790580700.0457244
+12345678901234567890123456789012.3456 457247366712391403337905807000.457244
+123456789012345678901234567890123.456 4572473667123914033379058070004.57244
+999999999999999999999999999999999 37037037037037037037037037037037
+1234567890123456789012345678901234.56 45724736671239140333790580700045.7244
+9999999999999999999999999999999999 370370370370370370370370370370370.333
+12345678901234567890123456789012345.6 457247366712391403337905807000457.244
+123456789012345678901234567890123456 4572473667123914033379058070004572.44
+123456789012345678901234567890123456 4572473667123914033379058070004572.44
+123456789012345678901234567890123456 4572473667123914033379058070004572.44
+123456789012345678901234567890123456 4572473667123914033379058070004572.44
+123456789012345678901234567890123456 4572473667123914033379058070004572.44
+999999999999999999999999999999999999 37037037037037037037037037037037037
+PREHOOK: query: SELECT dec, dec * dec FROM DECIMAL_PRECISION ORDER BY dec
+PREHOOK: type: QUERY
+PREHOOK: Input: default@decimal_precision
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT dec, dec * dec FROM DECIMAL_PRECISION ORDER BY dec
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@decimal_precision
+#### A masked pattern was here ####
+NULL NULL
+NULL NULL
+NULL NULL
+NULL NULL
+NULL NULL
+NULL NULL
+NULL NULL
+-999999999999999999999999999999999999 NULL
+-9999999999999999999999999999999999 NULL
+-999999999999999999999999999999999 NULL
+-0.00000000000000000000000000000000001 NULL
+0 0
+0.00000000000000000000000000000000001 NULL
+0.123456789012345 0.015241578753238669120562399025
+0.12345678901234567890123456789012345 NULL
+1.234567890123456 1.524157875323881726870921383936
+1.23456789012345678901234567890123456 NULL
+12.34567890123456 152.4157875323881726870921383936
+12.3456789012345678901234567890123456 NULL
+123.4567890123456 15241.57875323881726870921383936
+123.456789012345678901234567890123456 NULL
+1234.567890123456 1524157.875323881726870921383936
+1234.56789012345678901234567890123456 NULL
+12345.67890123456 152415787.5323881726870921383936
+12345.6789012345678901234567890123456 NULL
+123456.7890123456 15241578753.23881726870921383936
+123456.789012345678901234567890123456 NULL
+1234567.890123456 1524157875323.881726870921383936
+1234567.89012345678901234567890123456 NULL
+12345678.90123456 152415787532388.1726870921383936
+12345678.9012345678901234567890123456 NULL
+123456789.0123456 15241578753238817.26870921383936
+123456789.012345678901234567890123456 NULL
+1234567890.123456 1524157875323881726.870921383936
+1234567890.12345678901234567890123456 NULL
+12345678901.23456 152415787532388172687.0921383936
+12345678901.2345678901234567890123456 NULL
+123456789012.3456 15241578753238817268709.21383936
+123456789012.345678901234567890123456 NULL
+1234567890123.456 1524157875323881726870921.383936
+1234567890123.45678901234567890123456 NULL
+12345678901234.56 152415787532388172687092138.3936
+12345678901234.5678901234567890123456 NULL
+123456789012345.6 15241578753238817268709213839.36
+123456789012345.678901234567890123456 NULL
+1234567890123456.78901234567890123456 NULL
+12345678901234567.8901234567890123456 NULL
+123456789012345678.901234567890123456 NULL
+1234567890123456789.01234567890123456 NULL
+12345678901234567890.1234567890123456 NULL
+123456789012345678901.234567890123456 NULL
+1234567890123456789012.34567890123456 NULL
+12345678901234567890123.4567890123456 NULL
+123456789012345678901234.567890123456 NULL
+1234567890123456789012345.67890123456 NULL
+12345678901234567890123456.7890123456 NULL
+123456789012345678901234567.890123456 NULL
+1234567890123456789012345678.90123456 NULL
+12345678901234567890123456789.0123456 NULL
+123456789012345678901234567890.123456 NULL
+1234567890123456789012345678901.23456 NULL
+12345678901234567890123456789012.3456 NULL
+123456789012345678901234567890123.456 NULL
+999999999999999999999999999999999 NULL
+1234567890123456789012345678901234.56 NULL
+9999999999999999999999999999999999 NULL
+12345678901234567890123456789012345.6 NULL
+123456789012345678901234567890123456 NULL
+123456789012345678901234567890123456 NULL
+123456789012345678901234567890123456 NULL
+123456789012345678901234567890123456 NULL
+123456789012345678901234567890123456 NULL
+999999999999999999999999999999999999 NULL
+PREHOOK: query: SELECT avg(dec), sum(dec) FROM DECIMAL_PRECISION
+PREHOOK: type: QUERY
+PREHOOK: Input: default@decimal_precision
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT avg(dec), sum(dec) FROM DECIMAL_PRECISION
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@decimal_precision
+#### A masked pattern was here ####
+NULL NULL
+PREHOOK: query: DROP TABLE DECIMAL_PRECISION
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@decimal_precision
+PREHOOK: Output: default@decimal_precision
+POSTHOOK: query: DROP TABLE DECIMAL_PRECISION
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@decimal_precision
+POSTHOOK: Output: default@decimal_precision
Modified: hive/trunk/ql/src/test/results/clientpositive/decimal_serde.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/decimal_serde.q.out?rev=1466305&r1=1466304&r2=1466305&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/clientpositive/decimal_serde.q.out (original)
+++ hive/trunk/ql/src/test/results/clientpositive/decimal_serde.q.out Wed Apr 10 00:38:52 2013
@@ -39,8 +39,10 @@ POSTHOOK: query: SELECT * FROM DECIMAL_T
POSTHOOK: type: QUERY
POSTHOOK: Input: default@decimal_text
#### A masked pattern was here ####
+NULL 0
+NULL 0
-1234567890.123456789 -1234567890
--4.4E+3 4400
+-4400 4400
-1255.49 -1255
-1.122 -11
-1.12 -1
@@ -50,7 +52,6 @@ POSTHOOK: Input: default@decimal_text
-0.3 0
0 0
0 0
-1E-99 0
0.01 0
0.02 0
0.1 0
@@ -69,14 +70,13 @@ POSTHOOK: Input: default@decimal_text
3.14 3
3.14 3
3.14 4
-1E+1 10
-2E+1 20
-1E+2 100
+10 10
+20 20
+100 100
124 124
125.2 125
-2E+2 200
+200 200
1234567890.12345678 1234567890
-1E+99 0
PREHOOK: query: CREATE TABLE DECIMAL_RC
STORED AS RCFile AS
SELECT * FROM DECIMAL_TEXT
@@ -128,8 +128,10 @@ POSTHOOK: query: SELECT * FROM DECIMAL_S
POSTHOOK: type: QUERY
POSTHOOK: Input: default@decimal_sequence
#### A masked pattern was here ####
+NULL 0
+NULL 0
-1234567890.123456789 -1234567890
--4.4E+3 4400
+-4400 4400
-1255.49 -1255
-1.122 -11
-1.12 -1
@@ -139,7 +141,6 @@ POSTHOOK: Input: default@decimal_sequenc
-0.3 0
0 0
0 0
-1E-99 0
0.01 0
0.02 0
0.1 0
@@ -158,14 +159,13 @@ POSTHOOK: Input: default@decimal_sequenc
3.14 3
3.14 3
3.14 4
-1E+1 10
-2E+1 20
-1E+2 100
+10 10
+20 20
+100 100
124 124
125.2 125
-2E+2 200
+200 200
1234567890.12345678 1234567890
-1E+99 0
PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_TEXT
PREHOOK: type: DROPTABLE
PREHOOK: Input: default@decimal_text
Modified: hive/trunk/ql/src/test/results/clientpositive/decimal_udf.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/decimal_udf.q.out?rev=1466305&r1=1466304&r2=1466305&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/clientpositive/decimal_udf.q.out (original)
+++ hive/trunk/ql/src/test/results/clientpositive/decimal_udf.q.out Wed Apr 10 00:38:52 2013
@@ -64,17 +64,17 @@ POSTHOOK: query: SELECT key + key FROM D
POSTHOOK: type: QUERY
POSTHOOK: Input: default@decimal_udf
#### A masked pattern was here ####
--8.8E+3
-2E+99
-2E-99
+-8800
+NULL
+NULL
0
-2E+2
-2E+1
+200
+20
2
0.2
0.02
-4E+2
-4E+1
+400
+40
4
0
0.4
@@ -146,16 +146,16 @@ POSTHOOK: type: QUERY
POSTHOOK: Input: default@decimal_udf
#### A masked pattern was here ####
0
-1E+99
-1E-99
+NULL
+NULL
0
-2E+2
-2E+1
+200
+20
2
0.1
0.01
-4E+2
-4E+1
+400
+40
4
0
0.2
@@ -226,17 +226,17 @@ POSTHOOK: query: SELECT key + (value/2)
POSTHOOK: type: QUERY
POSTHOOK: Input: default@decimal_udf
#### A masked pattern was here ####
--2.2E+3
-1E+99
-1E-99
+-2200
+NULL
+NULL
0
-1.5E+2
+150
15
1.5
0.1
0.01
-3E+2
-3E+1
+300
+30
3
0
0.2
@@ -308,8 +308,8 @@ POSTHOOK: type: QUERY
POSTHOOK: Input: default@decimal_udf
#### A masked pattern was here ####
-4399
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001
-1.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001
+NULL
+NULL
1
101
11
@@ -391,8 +391,8 @@ POSTHOOK: type: QUERY
POSTHOOK: Input: default@decimal_udf
#### A masked pattern was here ####
0
-0
-0
+NULL
+NULL
0
0
0
@@ -471,9 +471,9 @@ POSTHOOK: query: SELECT key - value FROM
POSTHOOK: type: QUERY
POSTHOOK: Input: default@decimal_udf
#### A masked pattern was here ####
--8.8E+3
-1E+99
-1E-99
+-8800
+NULL
+NULL
0
0
0
@@ -506,7 +506,7 @@ POSTHOOK: Input: default@decimal_udf
0.14
0.14
-0.86
--1E-25
+-0.0000000000000000000000001
-0.123456789
0.12345678
PREHOOK: query: EXPLAIN SELECT key - (value/2) FROM DECIMAL_UDF
@@ -552,17 +552,17 @@ POSTHOOK: query: SELECT key - (value/2)
POSTHOOK: type: QUERY
POSTHOOK: Input: default@decimal_udf
#### A masked pattern was here ####
--6.6E+3
-1E+99
-1E-99
+-6600
+NULL
+NULL
0
-5E+1
+50
5
0.5
0.1
0.01
-1E+2
-1E+1
+100
+10
1
0
0.2
@@ -634,8 +634,8 @@ POSTHOOK: type: QUERY
POSTHOOK: Input: default@decimal_udf
#### A masked pattern was here ####
-4401
-999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
--0.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
+NULL
+NULL
-1
99
9
@@ -668,7 +668,7 @@ POSTHOOK: Input: default@decimal_udf
2.14
2.14
2.14
--1E-25
+-0.0000000000000000000000001
-1234567891.123456789
1234567889.12345678
PREHOOK: query: -- multiplication
@@ -716,17 +716,17 @@ POSTHOOK: query: SELECT key * key FROM D
POSTHOOK: type: QUERY
POSTHOOK: Input: default@decimal_udf
#### A masked pattern was here ####
-1.936E+7
-1E+198
-1E-198
+19360000
+NULL
+NULL
0
-1E+4
-1E+2
+10000
+100
1
0.01
0.0001
-4E+4
-4E+2
+40000
+400
4
0
0.04
@@ -751,8 +751,8 @@ POSTHOOK: Input: default@decimal_udf
9.8596
9.8596
9.8596
-0.99999999999999999999999980000000000000000000000001
-1524157875323883675.019051998750190521
+NULL
+NULL
1524157875323883652.7968299765279684
PREHOOK: query: EXPLAIN SELECT key * value FROM DECIMAL_UDF
PREHOOK: type: QUERY
@@ -797,17 +797,17 @@ POSTHOOK: query: SELECT key * value FROM
POSTHOOK: type: QUERY
POSTHOOK: Input: default@decimal_udf
#### A masked pattern was here ####
--1.936E+7
-0
-0
+-19360000
+NULL
+NULL
0
-1E+4
-1E+2
+10000
+100
1
0
0
-4E+4
-4E+2
+40000
+400
4
0
0
@@ -827,7 +827,7 @@ POSTHOOK: Input: default@decimal_udf
1.12
1.122
15376
-1.565E+4
+15650
1575639.95
9.42
9.42
@@ -878,17 +878,17 @@ POSTHOOK: query: SELECT key * (value/2)
POSTHOOK: type: QUERY
POSTHOOK: Input: default@decimal_udf
#### A masked pattern was here ####
--9.68E+6
-0
-0
+-9680000
+NULL
+NULL
0
-5E+3
-5E+1
+5000
+50
0.5
0
0
-2E+4
-2E+2
+20000
+200
2
0
0
@@ -959,17 +959,17 @@ POSTHOOK: query: SELECT key * '2.0' FROM
POSTHOOK: type: QUERY
POSTHOOK: Input: default@decimal_udf
#### A masked pattern was here ####
--8.8E+3
-2E+99
-2E-99
+-8800
+NULL
+NULL
0
-2E+2
-2E+1
+200
+20
2
0.2
0.02
-4E+2
-4E+1
+400
+40
4
0
0.4
@@ -1170,8 +1170,6 @@ POSTHOOK: Input: default@decimal_udf
1
1
1
-1
-1
PREHOOK: query: EXPLAIN SELECT key / value FROM DECIMAL_UDF WHERE value is not null and value <> 0
PREHOOK: type: QUERY
POSTHOOK: query: EXPLAIN SELECT key / value FROM DECIMAL_UDF WHERE value is not null and value <> 0
@@ -1228,7 +1226,7 @@ POSTHOOK: Input: default@decimal_udf
1
1
1
-1.04666666666666666666666666666666666666666666666666666666666666667
+1.04666666666666666666666666666666667
1.12
1.12
0.102
@@ -1236,13 +1234,13 @@ POSTHOOK: Input: default@decimal_udf
1.122
1
1.0016
-1.00039043824701195219123505976095617529880478087649402390438247012
-1.04666666666666666666666666666666666666666666666666666666666666667
-1.04666666666666666666666666666666666666666666666666666666666666667
+1.00039043824701195219123505976095618
+1.04666666666666666666666666666666667
+1.04666666666666666666666666666666667
0.785
0.9999999999999999999999999
1.0000000001
-1.00000000009999999270999993366099939631509450646736000885297608056
+1.0000000000999999927099999336609994
PREHOOK: query: EXPLAIN SELECT key / (value/2) FROM DECIMAL_UDF WHERE value is not null and value <> 0
PREHOOK: type: QUERY
POSTHOOK: query: EXPLAIN SELECT key / (value/2) FROM DECIMAL_UDF WHERE value is not null and value <> 0
@@ -1299,7 +1297,7 @@ POSTHOOK: Input: default@decimal_udf
2
2
2
-2.09333333333333333333333333333333333333333333333333333333333333333
+2.09333333333333333333333333333333333
2.24
2.24
0.204
@@ -1307,13 +1305,13 @@ POSTHOOK: Input: default@decimal_udf
2.244
2
2.0032
-2.00078087649402390438247011952191235059760956175298804780876494024
-2.09333333333333333333333333333333333333333333333333333333333333333
-2.09333333333333333333333333333333333333333333333333333333333333333
+2.00078087649402390438247011952191235
+2.09333333333333333333333333333333333
+2.09333333333333333333333333333333333
1.57
1.9999999999999999999999998
2.0000000002
-2.00000000019999998541999986732199879263018901293472001770595216112
+2.00000000019999998541999986732199879
PREHOOK: query: EXPLAIN SELECT key / '2.0' FROM DECIMAL_UDF
PREHOOK: type: QUERY
POSTHOOK: query: EXPLAIN SELECT key / '2.0' FROM DECIMAL_UDF
@@ -1357,17 +1355,17 @@ POSTHOOK: query: SELECT key / '2.0' FROM
POSTHOOK: type: QUERY
POSTHOOK: Input: default@decimal_udf
#### A masked pattern was here ####
--2.2E+3
-5E+98
-0
+-2200
+NULL
+NULL
0
-5E+1
+50
5
0.5
0.05
0.005
-1E+2
-1E+1
+100
+10
1
0
0.1
@@ -1440,17 +1438,17 @@ POSTHOOK: query: SELECT abs(key) FROM DE
POSTHOOK: type: QUERY
POSTHOOK: Input: default@decimal_udf
#### A masked pattern was here ####
-4.4E+3
-1E+99
-1E-99
+4400
+NULL
+NULL
0
-1E+2
-1E+1
+100
+10
1
0.1
0.01
-2E+2
-2E+1
+200
+20
2
0
0.2
@@ -1604,18 +1602,18 @@ POSTHOOK: Input: default@decimal_udf
-1255 -1255.49 -1255.49
-11 -1.122 -1.122
-1 -1.12 -1.12
-0 71428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571.45214285714285714285714285714285714285714285714285714285714285714 71428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571.45214285714285714285714285714285714285714285714285714285714285714
+0 0.0275 0.0275
1 1.04839999999999999999999998 1.04839999999999999999999998
2 2 2
3 3.14 3.14
4 3.14 3.14
-10 1E+1 1E+1
-20 2E+1 2E+1
-100 1E+2 1E+2
+10 10 10
+20 20 20
+100 100 100
124 124 124
125 125.2 125.2
-200 2E+2 2E+2
-4400 -4.4E+3 -4.4E+3
+200 200 200
+4400 -4400 -4400
1234567890 1234567890.12345678 1234567890.12345678
PREHOOK: query: -- negative
EXPLAIN SELECT -key FROM DECIMAL_UDF
@@ -1662,17 +1660,17 @@ POSTHOOK: query: SELECT -key FROM DECIMA
POSTHOOK: type: QUERY
POSTHOOK: Input: default@decimal_udf
#### A masked pattern was here ####
-4.4E+3
--1E+99
--1E-99
+4400
+NULL
+NULL
0
--1E+2
--1E+1
+-100
+-10
-1
-0.1
-0.01
--2E+2
--2E+1
+-200
+-20
-2
0
-0.2
@@ -1745,17 +1743,17 @@ POSTHOOK: query: SELECT +key FROM DECIMA
POSTHOOK: type: QUERY
POSTHOOK: Input: default@decimal_udf
#### A masked pattern was here ####
--4.4E+3
-1E+99
-1E-99
+-4400
+NULL
+NULL
0
-1E+2
-1E+1
+100
+10
1
0.1
0.01
-2E+2
-2E+1
+200
+20
2
0
0.2
@@ -1828,17 +1826,17 @@ POSTHOOK: query: SELECT CEIL(key) FROM D
POSTHOOK: type: QUERY
POSTHOOK: Input: default@decimal_udf
#### A masked pattern was here ####
--4.4E+3
-1E+99
-1
+-4400
+NULL
+NULL
0
-1E+2
-1E+1
+100
+10
1
1
1
-2E+2
-2E+1
+200
+20
2
0
1
@@ -1864,7 +1862,7 @@ POSTHOOK: Input: default@decimal_udf
4
4
1
--1.23456789E+9
+-1234567890
1234567891
PREHOOK: query: -- floor
EXPLAIN SELECT FLOOR(key) FROM DECIMAL_UDF
@@ -1911,17 +1909,17 @@ POSTHOOK: query: SELECT FLOOR(key) FROM
POSTHOOK: type: QUERY
POSTHOOK: Input: default@decimal_udf
#### A masked pattern was here ####
--4.4E+3
-1E+99
-0
+-4400
+NULL
+NULL
0
-1E+2
-1E+1
+100
+10
1
0
0
-2E+2
-2E+1
+200
+20
2
0
0
@@ -1948,7 +1946,7 @@ POSTHOOK: Input: default@decimal_udf
3
0
-1234567891
-1.23456789E+9
+1234567890
PREHOOK: query: -- round
EXPLAIN SELECT ROUND(key, 2) FROM DECIMAL_UDF
PREHOOK: type: QUERY
@@ -1994,17 +1992,17 @@ POSTHOOK: query: SELECT ROUND(key, 2) FR
POSTHOOK: type: QUERY
POSTHOOK: Input: default@decimal_udf
#### A masked pattern was here ####
--4.4E+3
-1E+99
-0
+-4400
+NULL
+NULL
0
-1E+2
-1E+1
+100
+10
1
0.1
0.01
-2E+2
-2E+1
+200
+20
2
0
0.2
@@ -2077,17 +2075,17 @@ POSTHOOK: query: SELECT POWER(key, 2) FR
POSTHOOK: type: QUERY
POSTHOOK: Input: default@decimal_udf
#### A masked pattern was here ####
-1.936E+7
-1E+198
-1E-198
+19360000
+NULL
+NULL
0
-1E+4
-1E+2
+10000
+100
1
0.01
0.0001
-4E+4
-4E+2
+40000
+400
4
0
0.04
@@ -2112,8 +2110,8 @@ POSTHOOK: Input: default@decimal_udf
9.8596
9.8596
9.8596
-0.99999999999999999999999980000000000000000000000001
-1524157875323883675.019051998750190521
+NULL
+NULL
1524157875323883652.7968299765279684
PREHOOK: query: -- modulo
EXPLAIN SELECT (key + 1) % (key / 2) FROM DECIMAL_UDF
@@ -2161,7 +2159,7 @@ POSTHOOK: type: QUERY
POSTHOOK: Input: default@decimal_udf
#### A masked pattern was here ####
-2199
-1
+NULL
NULL
NULL
1
@@ -2195,7 +2193,7 @@ NULL
1
1
1
-1E-25
+0.0000000000000000000000001
-617283944.0617283945
1
PREHOOK: query: -- stddev, var
@@ -2293,7 +2291,7 @@ POSTHOOK: Input: default@decimal_udf
-1255 0.0 0.0
-11 0.0 0.0
-1 0.0 0.0
-0 2.5753937681885636E98 6.632653061224489E196
+0 0.23469892060538614 0.055083583333333345
1 0.05928102563215321 0.0035142400000000066
2 0.0 0.0
3 0.0 0.0
@@ -2401,7 +2399,7 @@ POSTHOOK: Input: default@decimal_udf
-1255 0.0 0.0
-11 0.0 0.0
-1 0.0 0.0
-0 2.6726124191242437E98 7.142857142857142E196
+0 0.24513502772590828 0.06009118181818183
1 0.06627820154470102 0.004392800000000008
2 0.0 0.0
3 0.0 0.0
@@ -2483,7 +2481,7 @@ POSTHOOK: query: SELECT histogram_numeri
POSTHOOK: type: QUERY
POSTHOOK: Input: default@decimal_udf
#### A masked pattern was here ####
-[{"x":-3.429369299009602E7,"y":36.0},{"x":1.2345678901234567E9,"y":1.0},{"x":1.0E99,"y":1.0}]
+[{"x":-1.2345678901234567E9,"y":1.0},{"x":-148.75058823529412,"y":34.0},{"x":1.2345678901234567E9,"y":1.0}]
PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_UDF
PREHOOK: type: DROPTABLE
PREHOOK: Input: default@decimal_udf
Modified: hive/trunk/ql/src/test/results/clientpositive/literal_decimal.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/literal_decimal.q.out?rev=1466305&r1=1466304&r2=1466305&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/clientpositive/literal_decimal.q.out (original)
+++ hive/trunk/ql/src/test/results/clientpositive/literal_decimal.q.out Wed Apr 10 00:38:52 2013
@@ -58,4 +58,4 @@ POSTHOOK: query: SELECT -1BD, 0BD, 1BD,
POSTHOOK: type: QUERY
POSTHOOK: Input: default@src
#### A masked pattern was here ####
--1 0 1 3.14 -3.14 99999999999999999 99999999999999999.9999999999999 1E-99 1E+99
+-1 0 1 3.14 -3.14 99999999999999999 99999999999999999.9999999999999 NULL NULL
Modified: hive/trunk/ql/src/test/results/clientpositive/serde_regex.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/serde_regex.q.out?rev=1466305&r1=1466304&r2=1466305&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/clientpositive/serde_regex.q.out (original)
+++ hive/trunk/ql/src/test/results/clientpositive/serde_regex.q.out Wed Apr 10 00:38:52 2013
@@ -202,8 +202,10 @@ POSTHOOK: query: SELECT key, value FROM
POSTHOOK: type: QUERY
POSTHOOK: Input: default@serde_regex1
#### A masked pattern was here ####
+NULL 0
+NULL 0
-1234567890.123456789 -1234567890
--4.4E+3 4400
+-4400 4400
-1255.49 -1255
-1.122 -11
-1.12 -1
@@ -213,7 +215,6 @@ POSTHOOK: Input: default@serde_regex1
-0.3 0
0 0
0 0
-1E-99 0
0.01 0
0.02 0
0.1 0
@@ -230,16 +231,15 @@ POSTHOOK: Input: default@serde_regex1
2 2
3.14 3
3.14 3
-3.14 3
3.14 4
-1E+1 10
-2E+1 20
-1E+2 100
+3.14 3
+10 10
+20 20
+100 100
124 124
125.2 125
-2E+2 200
+200 200
1234567890.12345678 1234567890
-1E+99 0
PREHOOK: query: DROP TABLE serde_regex1
PREHOOK: type: DROPTABLE
PREHOOK: Input: default@serde_regex1
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=1466305&r1=1466304&r2=1466305&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 Wed Apr 10 00:38:52 2013
@@ -17,7 +17,6 @@
*/
package org.apache.hadoop.hive.serde2;
-import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -28,6 +27,7 @@ import java.util.regex.Pattern;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.hive.common.type.HiveDecimal;
import org.apache.hadoop.hive.serde.serdeConstants;
import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorFactory;
@@ -135,7 +135,7 @@ public class RegexSerDe extends Abstract
} else if (typeName.equals(serdeConstants.BOOLEAN_TYPE_NAME)) {
columnOIs.add(PrimitiveObjectInspectorFactory.javaBooleanObjectInspector);
} else if (typeName.equals(serdeConstants.DECIMAL_TYPE_NAME)) {
- columnOIs.add(PrimitiveObjectInspectorFactory.javaBigDecimalObjectInspector);
+ columnOIs.add(PrimitiveObjectInspectorFactory.javaHiveDecimalObjectInspector);
} else {
throw new SerDeException(getClass().getName()
+ " doesn't allow column [" + c + "] named "
@@ -230,8 +230,8 @@ public class RegexSerDe extends Abstract
b = Boolean.valueOf(t);
row.set(c, b);
} else if (typeName.equals(serdeConstants.DECIMAL_TYPE_NAME)) {
- BigDecimal bd;
- bd = new BigDecimal(t);
+ HiveDecimal bd;
+ bd = new HiveDecimal(t);
row.set(c, bd);
}
} catch (RuntimeException e) {
Modified: hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/SerDeUtils.java
URL: http://svn.apache.org/viewvc/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/SerDeUtils.java?rev=1466305&r1=1466304&r2=1466305&view=diff
==============================================================================
--- hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/SerDeUtils.java (original)
+++ hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/SerDeUtils.java Wed Apr 10 00:38:52 2013
@@ -34,7 +34,7 @@ import org.apache.hadoop.hive.serde2.obj
import org.apache.hadoop.hive.serde2.objectinspector.StructField;
import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.UnionObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.BigDecimalObjectInspector;
+import org.apache.hadoop.hive.serde2.objectinspector.primitive.HiveDecimalObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.BinaryObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.BooleanObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.ByteObjectInspector;
@@ -298,7 +298,7 @@ public final class SerDeUtils {
break;
}
case DECIMAL: {
- sb.append(((BigDecimalObjectInspector) oi).getPrimitiveJavaObject(o));
+ sb.append(((HiveDecimalObjectInspector) oi).getPrimitiveJavaObject(o));
break;
}
default:
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=1466305&r1=1466304&r2=1466305&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 Wed Apr 10 00:38:52 2013
@@ -19,7 +19,6 @@
package org.apache.hadoop.hive.serde2.binarysortable;
import java.io.IOException;
-import java.math.BigDecimal;
import java.math.BigInteger;
import java.nio.charset.Charset;
import java.util.ArrayList;
@@ -32,13 +31,14 @@ import java.util.Properties;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.hive.common.type.HiveDecimal;
import org.apache.hadoop.hive.serde.serdeConstants;
import org.apache.hadoop.hive.serde2.AbstractSerDe;
import org.apache.hadoop.hive.serde2.SerDeException;
import org.apache.hadoop.hive.serde2.SerDeStats;
-import org.apache.hadoop.hive.serde2.io.BigDecimalWritable;
import org.apache.hadoop.hive.serde2.io.ByteWritable;
import org.apache.hadoop.hive.serde2.io.DoubleWritable;
+import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable;
import org.apache.hadoop.hive.serde2.io.ShortWritable;
import org.apache.hadoop.hive.serde2.io.TimestampWritable;
import org.apache.hadoop.hive.serde2.objectinspector.ListObjectInspector;
@@ -49,12 +49,12 @@ import org.apache.hadoop.hive.serde2.obj
import org.apache.hadoop.hive.serde2.objectinspector.StructField;
import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.UnionObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.BigDecimalObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.BinaryObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.BooleanObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.ByteObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.DoubleObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.FloatObjectInspector;
+import org.apache.hadoop.hive.serde2.objectinspector.primitive.HiveDecimalObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.IntObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.LongObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.ShortObjectInspector;
@@ -382,8 +382,8 @@ public class BinarySortableSerDe extends
case DECIMAL: {
// See serialization of decimal for explanation (below)
- BigDecimalWritable bdw = (reuse == null ? new BigDecimalWritable() :
- (BigDecimalWritable) reuse);
+ HiveDecimalWritable bdw = (reuse == null ? new HiveDecimalWritable() :
+ (HiveDecimalWritable) reuse);
int b = buffer.read(invert) - 1;
assert (b == 1 || b == -1 || b == 0);
@@ -427,7 +427,7 @@ public class BinarySortableSerDe extends
String digits = new String(decimalBuffer, 0, length, decimalCharSet);
BigInteger bi = new BigInteger(digits);
- BigDecimal bd = new BigDecimal(bi).scaleByPowerOfTen(factor-length);
+ HiveDecimal bd = new HiveDecimal(bi).scaleByPowerOfTen(factor-length);
if (!positive) {
bd = bd.negate();
@@ -688,11 +688,11 @@ public class BinarySortableSerDe extends
// Factor is -2 (move decimal point 2 positions right)
// Digits are: 123
- BigDecimalObjectInspector boi = (BigDecimalObjectInspector) poi;
- BigDecimal dec = boi.getPrimitiveJavaObject(o).stripTrailingZeros();
+ HiveDecimalObjectInspector boi = (HiveDecimalObjectInspector) poi;
+ HiveDecimal dec = boi.getPrimitiveJavaObject(o);
// get the sign of the big decimal
- int sign = dec.compareTo(BigDecimal.ZERO);
+ int sign = dec.compareTo(HiveDecimal.ZERO);
// we'll encode the absolute value (sign is separate)
dec = dec.abs();
@@ -788,6 +788,7 @@ public class BinarySortableSerDe extends
}
buffer.write((byte) 0, invert);
}
+ @Override
public SerDeStats getSerDeStats() {
// no support for statistics
return null;
Added: 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=1466305&view=auto
==============================================================================
--- hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/io/HiveDecimalWritable.java (added)
+++ hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/io/HiveDecimalWritable.java Wed Apr 10 00:38:52 2013
@@ -0,0 +1,138 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hive.serde2.io;
+
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+import java.math.BigInteger;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.hive.common.type.HiveDecimal;
+import org.apache.hadoop.hive.serde2.ByteStream.Output;
+import org.apache.hadoop.hive.serde2.lazybinary.LazyBinaryUtils;
+import org.apache.hadoop.hive.serde2.lazybinary.LazyBinaryUtils.VInt;
+import org.apache.hadoop.io.WritableComparable;
+import org.apache.hadoop.io.WritableUtils;
+
+public class HiveDecimalWritable implements WritableComparable<HiveDecimalWritable> {
+
+ static final private Log LOG = LogFactory.getLog(HiveDecimalWritable.class);
+
+ private byte[] internalStorage = new byte[0];
+ private int scale;
+
+ private final VInt vInt = new VInt(); // reusable integer
+
+ public HiveDecimalWritable() {
+ }
+
+ public HiveDecimalWritable(byte[] bytes, int scale) {
+ set(bytes, scale);
+ }
+
+ public HiveDecimalWritable(HiveDecimalWritable writable) {
+ set(writable.getHiveDecimal());
+ }
+
+ public HiveDecimalWritable(HiveDecimal value) {
+ set(value);
+ }
+
+ public void set(HiveDecimal value) {
+ set(value.unscaledValue().toByteArray(), value.scale());
+ }
+
+ public void set(HiveDecimalWritable writable) {
+ set(writable.getHiveDecimal());
+ }
+
+ public void set(byte[] bytes, int scale) {
+ this.internalStorage = bytes;
+ this.scale = scale;
+ }
+
+ public void setFromBytes(byte[] bytes, int offset, int length) {
+ LazyBinaryUtils.readVInt(bytes, offset, vInt);
+ scale = vInt.value;
+ offset += vInt.length;
+ LazyBinaryUtils.readVInt(bytes, offset, vInt);
+ offset += vInt.length;
+ if (internalStorage.length != vInt.value) {
+ internalStorage = new byte[vInt.value];
+ }
+ System.arraycopy(bytes, offset, internalStorage, 0, vInt.value);
+ }
+
+ public HiveDecimal getHiveDecimal() {
+ return new HiveDecimal(new BigInteger(internalStorage), scale);
+ }
+
+ @Override
+ public void readFields(DataInput in) throws IOException {
+ scale = WritableUtils.readVInt(in);
+ int byteArrayLen = WritableUtils.readVInt(in);
+ if (internalStorage.length != byteArrayLen) {
+ internalStorage = new byte[byteArrayLen];
+ }
+ in.readFully(internalStorage);
+ }
+
+ @Override
+ public void write(DataOutput out) throws IOException {
+ WritableUtils.writeVInt(out, scale);
+ WritableUtils.writeVInt(out, internalStorage.length);
+ out.write(internalStorage);
+ }
+
+ @Override
+ public int compareTo(HiveDecimalWritable that) {
+ return getHiveDecimal().compareTo(that.getHiveDecimal());
+ }
+
+ public void writeToByteStream(Output byteStream) {
+ LazyBinaryUtils.writeVInt(byteStream, scale);
+ LazyBinaryUtils.writeVInt(byteStream, internalStorage.length);
+ byteStream.write(internalStorage, 0, internalStorage.length);
+ }
+
+ @Override
+ public String toString() {
+ return getHiveDecimal().toString();
+ }
+
+ @Override
+ public boolean equals(Object other) {
+ if (other == null || !(other instanceof HiveDecimalWritable)) {
+ return false;
+ }
+ HiveDecimalWritable bdw = (HiveDecimalWritable) other;
+
+ // 'equals' and 'compareTo' are not compatible with HiveDecimals. We want
+ // compareTo which returns true iff the numbers are equal (e.g.: 3.14 is
+ // the same as 3.140). 'Equals' returns true iff equal and the same scale
+ // is set in the decimals (e.g.: 3.14 is not the same as 3.140)
+ return getHiveDecimal().compareTo(bdw.getHiveDecimal()) == 0;
+ }
+
+ @Override
+ public int hashCode() {
+ return getHiveDecimal().hashCode();
+ }
+}
Modified: hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/io/TimestampWritable.java
URL: http://svn.apache.org/viewvc/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/io/TimestampWritable.java?rev=1466305&r1=1466304&r2=1466305&view=diff
==============================================================================
--- hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/io/TimestampWritable.java (original)
+++ hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/io/TimestampWritable.java Wed Apr 10 00:38:52 2013
@@ -29,6 +29,7 @@ import java.util.Arrays;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.hive.common.type.HiveDecimal;
import org.apache.hadoop.hive.serde2.ByteStream.Output;
import org.apache.hadoop.hive.serde2.lazybinary.LazyBinaryUtils;
import org.apache.hadoop.hive.serde2.lazybinary.LazyBinaryUtils.VInt;
@@ -451,10 +452,10 @@ public class TimestampWritable implement
return doubleToTimestamp((double) f);
}
- public static Timestamp decimalToTimestamp(BigDecimal d) {
+ public static Timestamp decimalToTimestamp(HiveDecimal d) {
BigDecimal seconds = new BigDecimal(d.longValue());
- long millis = d.multiply(new BigDecimal(1000)).longValue();
- int nanos = d.subtract(seconds).multiply(new BigDecimal(1000000000)).intValue();
+ long millis = d.bigDecimalValue().multiply(new BigDecimal(1000)).longValue();
+ int nanos = d.bigDecimalValue().subtract(seconds).multiply(new BigDecimal(1000000000)).intValue();
Timestamp t = new Timestamp(millis);
t.setNanos(nanos);
Modified: hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyFactory.java
URL: http://svn.apache.org/viewvc/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyFactory.java?rev=1466305&r1=1466304&r2=1466305&view=diff
==============================================================================
--- hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyFactory.java (original)
+++ hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyFactory.java Wed Apr 10 00:38:52 2013
@@ -26,7 +26,7 @@ import org.apache.hadoop.hive.serde2.laz
import org.apache.hadoop.hive.serde2.lazy.objectinspector.LazyObjectInspectorFactory;
import org.apache.hadoop.hive.serde2.lazy.objectinspector.LazySimpleStructObjectInspector;
import org.apache.hadoop.hive.serde2.lazy.objectinspector.LazyUnionObjectInspector;
-import org.apache.hadoop.hive.serde2.lazy.objectinspector.primitive.LazyBigDecimalObjectInspector;
+import org.apache.hadoop.hive.serde2.lazy.objectinspector.primitive.LazyHiveDecimalObjectInspector;
import org.apache.hadoop.hive.serde2.lazy.objectinspector.primitive.LazyBinaryObjectInspector;
import org.apache.hadoop.hive.serde2.lazy.objectinspector.primitive.LazyBooleanObjectInspector;
import org.apache.hadoop.hive.serde2.lazy.objectinspector.primitive.LazyByteObjectInspector;
@@ -114,7 +114,7 @@ public final class LazyFactory {
case BINARY:
return new LazyBinary((LazyBinaryObjectInspector) oi);
case DECIMAL:
- return new LazyBigDecimal((LazyBigDecimalObjectInspector) oi);
+ return new LazyHiveDecimal((LazyHiveDecimalObjectInspector) oi);
default:
throw new RuntimeException("Internal error: no LazyObject for " + p);
}
Added: 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=1466305&view=auto
==============================================================================
--- hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyHiveDecimal.java (added)
+++ hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyHiveDecimal.java Wed Apr 10 00:38:52 2013
@@ -0,0 +1,71 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hive.serde2.lazy;
+
+import java.nio.charset.CharacterCodingException;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.hive.common.type.HiveDecimal;
+import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable;
+import org.apache.hadoop.hive.serde2.lazy.objectinspector.primitive.LazyHiveDecimalObjectInspector;
+import org.apache.hadoop.io.Text;
+
+public class LazyHiveDecimal extends LazyPrimitive<LazyHiveDecimalObjectInspector, HiveDecimalWritable> {
+ static final private Log LOG = LogFactory.getLog(LazyHiveDecimal.class);
+
+ public LazyHiveDecimal(LazyHiveDecimalObjectInspector oi) {
+ super(oi);
+ data = new HiveDecimalWritable();
+ }
+
+ public LazyHiveDecimal(LazyHiveDecimal copy) {
+ super(copy);
+ data = new HiveDecimalWritable(copy.data);
+ }
+
+ /**
+ * Initilizes LazyHiveDecimal object by interpreting the input bytes
+ * as a numeric string
+ *
+ * @param bytes
+ * @param start
+ * @param length
+ */
+ @Override
+ public void init(ByteArrayRef bytes, int start, int length) {
+ 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);
+ }
+ }
+
+ @Override
+ public HiveDecimalWritable getWritableObject() {
+ return data;
+ }
+}
Modified: hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyUtils.java
URL: http://svn.apache.org/viewvc/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyUtils.java?rev=1466305&r1=1466304&r2=1466305&view=diff
==============================================================================
--- hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyUtils.java (original)
+++ hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyUtils.java Wed Apr 10 00:38:52 2013
@@ -21,7 +21,6 @@ package org.apache.hadoop.hive.serde2.la
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
-import java.math.BigDecimal;
import java.nio.ByteBuffer;
import java.nio.charset.CharacterCodingException;
import java.util.ArrayList;
@@ -29,11 +28,12 @@ import java.util.Arrays;
import java.util.Properties;
import org.apache.commons.codec.binary.Base64;
+import org.apache.hadoop.hive.common.type.HiveDecimal;
import org.apache.hadoop.hive.serde.serdeConstants;
import org.apache.hadoop.hive.serde2.SerDeException;
import org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe.SerDeParameters;
import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.BigDecimalObjectInspector;
+import org.apache.hadoop.hive.serde2.objectinspector.primitive.HiveDecimalObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.BinaryObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.BooleanObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.ByteObjectInspector;
@@ -238,7 +238,7 @@ public final class LazyUtils {
break;
}
case DECIMAL: {
- BigDecimal bd = ((BigDecimalObjectInspector) oi).getPrimitiveJavaObject(o);
+ HiveDecimal bd = ((HiveDecimalObjectInspector) oi).getPrimitiveJavaObject(o);
ByteBuffer b = Text.encode(bd.toString());
out.write(b.array(), 0, b.limit());
break;
Added: hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyHiveDecimalObjectInspector.java
URL: http://svn.apache.org/viewvc/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyHiveDecimalObjectInspector.java?rev=1466305&view=auto
==============================================================================
--- hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyHiveDecimalObjectInspector.java (added)
+++ hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyHiveDecimalObjectInspector.java Wed Apr 10 00:38:52 2013
@@ -0,0 +1,45 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hive.serde2.lazy.objectinspector.primitive;
+
+
+import org.apache.hadoop.hive.common.type.HiveDecimal;
+import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable;
+import org.apache.hadoop.hive.serde2.lazy.LazyHiveDecimal;
+import org.apache.hadoop.hive.serde2.objectinspector.primitive.HiveDecimalObjectInspector;
+import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
+
+public class LazyHiveDecimalObjectInspector
+ extends AbstractPrimitiveLazyObjectInspector<HiveDecimalWritable>
+ implements HiveDecimalObjectInspector {
+
+ protected LazyHiveDecimalObjectInspector() {
+ super(PrimitiveObjectInspectorUtils.decimalTypeEntry);
+ }
+
+ @Override
+ public Object copyObject(Object o) {
+ return o == null ? null : new LazyHiveDecimal((LazyHiveDecimal) o);
+ }
+
+ @Override
+ public HiveDecimal getPrimitiveJavaObject(Object o) {
+ return o == null ? null : ((LazyHiveDecimal) o).getWritableObject().getHiveDecimal();
+ }
+
+}
Modified: hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyPrimitiveObjectInspectorFactory.java
URL: http://svn.apache.org/viewvc/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyPrimitiveObjectInspectorFactory.java?rev=1466305&r1=1466304&r2=1466305&view=diff
==============================================================================
--- hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyPrimitiveObjectInspectorFactory.java (original)
+++ hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyPrimitiveObjectInspectorFactory.java Wed Apr 10 00:38:52 2013
@@ -57,8 +57,8 @@ public final class LazyPrimitiveObjectIn
new LazyTimestampObjectInspector();
public static final LazyBinaryObjectInspector LAZY_BINARY_OBJECT_INSPECTOR =
new LazyBinaryObjectInspector();
- public static final LazyBigDecimalObjectInspector LAZY_BIG_DECIMAL_OBJECT_INSPECTOR =
- new LazyBigDecimalObjectInspector();
+ public static final LazyHiveDecimalObjectInspector LAZY_BIG_DECIMAL_OBJECT_INSPECTOR =
+ new LazyHiveDecimalObjectInspector();
static HashMap<ArrayList<Object>, LazyStringObjectInspector> cachedLazyStringObjectInspector =
new HashMap<ArrayList<Object>, LazyStringObjectInspector>();
Modified: hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/LazyBinaryFactory.java
URL: http://svn.apache.org/viewvc/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/LazyBinaryFactory.java?rev=1466305&r1=1466304&r2=1466305&view=diff
==============================================================================
--- hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/LazyBinaryFactory.java (original)
+++ hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/LazyBinaryFactory.java Wed Apr 10 00:38:52 2013
@@ -27,7 +27,7 @@ import org.apache.hadoop.hive.serde2.obj
import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorFactory;
import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector.PrimitiveCategory;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.WritableBigDecimalObjectInspector;
+import org.apache.hadoop.hive.serde2.objectinspector.primitive.WritableHiveDecimalObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.WritableBinaryObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.WritableBooleanObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.WritableByteObjectInspector;
@@ -77,7 +77,7 @@ public final class LazyBinaryFactory {
case BINARY:
return new LazyBinaryBinary((WritableBinaryObjectInspector) oi);
case DECIMAL:
- return new LazyBinaryBigDecimal((WritableBigDecimalObjectInspector) oi);
+ return new LazyBinaryHiveDecimal((WritableHiveDecimalObjectInspector) oi);
default:
throw new RuntimeException("Internal error: no LazyBinaryObject for " + p);
}
Added: hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/LazyBinaryHiveDecimal.java
URL: http://svn.apache.org/viewvc/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/LazyBinaryHiveDecimal.java?rev=1466305&view=auto
==============================================================================
--- hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/LazyBinaryHiveDecimal.java (added)
+++ hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/LazyBinaryHiveDecimal.java Wed Apr 10 00:38:52 2013
@@ -0,0 +1,42 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hive.serde2.lazybinary;
+
+import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable;
+import org.apache.hadoop.hive.serde2.lazy.ByteArrayRef;
+import org.apache.hadoop.hive.serde2.objectinspector.primitive.WritableHiveDecimalObjectInspector;
+
+public class LazyBinaryHiveDecimal extends
+ LazyBinaryPrimitive<WritableHiveDecimalObjectInspector, HiveDecimalWritable> {
+
+ LazyBinaryHiveDecimal(WritableHiveDecimalObjectInspector oi) {
+ super(oi);
+ data = new HiveDecimalWritable();
+ }
+
+ LazyBinaryHiveDecimal(LazyBinaryHiveDecimal copy) {
+ super(copy);
+ data = new HiveDecimalWritable(copy.data);
+ }
+
+ @Override
+ public void init(ByteArrayRef bytes, int start, int length) {
+ data.setFromBytes(bytes.getData(), start, length);
+ }
+
+}
Modified: hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/LazyBinarySerDe.java
URL: http://svn.apache.org/viewvc/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/LazyBinarySerDe.java?rev=1466305&r1=1466304&r2=1466305&view=diff
==============================================================================
--- hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/LazyBinarySerDe.java (original)
+++ hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/LazyBinarySerDe.java Wed Apr 10 00:38:52 2013
@@ -33,7 +33,7 @@ import org.apache.hadoop.hive.serde2.Byt
import org.apache.hadoop.hive.serde2.ByteStream.Output;
import org.apache.hadoop.hive.serde2.SerDeException;
import org.apache.hadoop.hive.serde2.SerDeStats;
-import org.apache.hadoop.hive.serde2.io.BigDecimalWritable;
+import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable;
import org.apache.hadoop.hive.serde2.io.TimestampWritable;
import org.apache.hadoop.hive.serde2.lazy.ByteArrayRef;
import org.apache.hadoop.hive.serde2.objectinspector.ListObjectInspector;
@@ -43,7 +43,7 @@ import org.apache.hadoop.hive.serde2.obj
import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.StructField;
import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.BigDecimalObjectInspector;
+import org.apache.hadoop.hive.serde2.objectinspector.primitive.HiveDecimalObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.BinaryObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.BooleanObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.ByteObjectInspector;
@@ -386,8 +386,8 @@ public class LazyBinarySerDe extends Abs
}
case DECIMAL: {
- BigDecimalObjectInspector bdoi = (BigDecimalObjectInspector) poi;
- BigDecimalWritable t = bdoi.getPrimitiveWritableObject(obj);
+ HiveDecimalObjectInspector bdoi = (HiveDecimalObjectInspector) poi;
+ HiveDecimalWritable t = bdoi.getPrimitiveWritableObject(obj);
t.writeToByteStream(byteStream);
return warnedOnceNullMapKey;
}
Modified: hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorConverters.java
URL: http://svn.apache.org/viewvc/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorConverters.java?rev=1466305&r1=1466304&r2=1466305&view=diff
==============================================================================
--- hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorConverters.java (original)
+++ hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorConverters.java Wed Apr 10 00:38:52 2013
@@ -25,7 +25,7 @@ import java.util.Map;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.JavaStringObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorConverter;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.SettableBigDecimalObjectInspector;
+import org.apache.hadoop.hive.serde2.objectinspector.primitive.SettableHiveDecimalObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.SettableBinaryObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.SettableBooleanObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.SettableByteObjectInspector;
@@ -109,9 +109,9 @@ public final class ObjectInspectorConver
inputOI,
(SettableBinaryObjectInspector)outputOI);
case DECIMAL:
- return new PrimitiveObjectInspectorConverter.BigDecimalConverter(
+ return new PrimitiveObjectInspectorConverter.HiveDecimalConverter(
(PrimitiveObjectInspector) inputOI,
- (SettableBigDecimalObjectInspector) outputOI);
+ (SettableHiveDecimalObjectInspector) outputOI);
default:
throw new RuntimeException("Hive internal error: conversion of "
+ inputOI.getTypeName() + " to " + outputOI.getTypeName()
Modified: hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorUtils.java
URL: http://svn.apache.org/viewvc/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorUtils.java?rev=1466305&r1=1466304&r2=1466305&view=diff
==============================================================================
--- hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorUtils.java (original)
+++ hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorUtils.java Wed Apr 10 00:38:52 2013
@@ -30,12 +30,12 @@ import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.hive.serde.serdeConstants;
-import org.apache.hadoop.hive.serde2.io.BigDecimalWritable;
+import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable;
import org.apache.hadoop.hive.serde2.io.TimestampWritable;
import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector.Category;
import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorFactory.ObjectInspectorOptions;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.AbstractPrimitiveWritableObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.BigDecimalObjectInspector;
+import org.apache.hadoop.hive.serde2.objectinspector.primitive.HiveDecimalObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.BinaryObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.BooleanObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.ByteObjectInspector;
@@ -493,7 +493,7 @@ public final class ObjectInspectorUtils
.getPrimitiveWritableObject(o);
return t.hashCode();
case DECIMAL:
- return ((BigDecimalObjectInspector) poi).getPrimitiveWritableObject(o).hashCode();
+ return ((HiveDecimalObjectInspector) poi).getPrimitiveWritableObject(o).hashCode();
default: {
throw new RuntimeException("Unknown type: "
@@ -680,9 +680,9 @@ public final class ObjectInspectorUtils
return t1.compareTo(t2);
}
case DECIMAL: {
- BigDecimalWritable t1 = ((BigDecimalObjectInspector) poi1)
+ HiveDecimalWritable t1 = ((HiveDecimalObjectInspector) poi1)
.getPrimitiveWritableObject(o1);
- BigDecimalWritable t2 = ((BigDecimalObjectInspector) poi2)
+ HiveDecimalWritable t2 = ((HiveDecimalObjectInspector) poi2)
.getPrimitiveWritableObject(o2);
return t1.compareTo(t2);
}
Added: hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/HiveDecimalObjectInspector.java
URL: http://svn.apache.org/viewvc/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/HiveDecimalObjectInspector.java?rev=1466305&view=auto
==============================================================================
--- hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/HiveDecimalObjectInspector.java (added)
+++ hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/HiveDecimalObjectInspector.java Wed Apr 10 00:38:52 2013
@@ -0,0 +1,33 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hive.serde2.objectinspector.primitive;
+
+
+import org.apache.hadoop.hive.common.type.HiveDecimal;
+import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable;
+import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector;
+
+/**
+ * A DecimalObjectInspector inspects an Object representing a HiveDecimal.
+ */
+public interface HiveDecimalObjectInspector extends PrimitiveObjectInspector {
+
+ HiveDecimalWritable getPrimitiveWritableObject(Object o);
+
+ HiveDecimal getPrimitiveJavaObject(Object o);
+}
Added: 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=1466305&view=auto
==============================================================================
--- hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaHiveDecimalObjectInspector.java (added)
+++ hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaHiveDecimalObjectInspector.java Wed Apr 10 00:38:52 2013
@@ -0,0 +1,87 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hive.serde2.objectinspector.primitive;
+
+import java.math.BigInteger;
+
+import org.apache.hadoop.hive.common.type.HiveDecimal;
+import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable;
+
+public class JavaHiveDecimalObjectInspector
+ extends AbstractPrimitiveJavaObjectInspector
+ implements SettableHiveDecimalObjectInspector {
+
+ protected JavaHiveDecimalObjectInspector() {
+ super(PrimitiveObjectInspectorUtils.decimalTypeEntry);
+ }
+
+ @Override
+ public HiveDecimalWritable getPrimitiveWritableObject(Object o) {
+ if (o == null) {
+ return null;
+ }
+
+ if (o instanceof String) {
+ try {
+ o = new HiveDecimal((String)o);
+ } catch(NumberFormatException e) {
+ return null;
+ }
+ }
+ return new HiveDecimalWritable((HiveDecimal) o);
+ }
+
+ @Override
+ public HiveDecimal getPrimitiveJavaObject(Object o) {
+ return o == null ? null : (HiveDecimal) o;
+ }
+
+ @Override
+ public Object set(Object o, byte[] bytes, int scale) {
+ return new HiveDecimal(new BigInteger(bytes), scale);
+ }
+
+ @Override
+ public Object set(Object o, HiveDecimal t) {
+ return t;
+ }
+
+ @Override
+ public Object set(Object o, HiveDecimalWritable t) {
+ return t == null ? null : t.getHiveDecimal();
+ }
+
+ @Override
+ public Object create(byte[] bytes, int scale) {
+ try {
+ return new HiveDecimal(new BigInteger(bytes), scale);
+ } catch (NumberFormatException e) {
+ return null;
+ }
+ }
+
+ @Override
+ public Object create(HiveDecimal t) {
+ try {
+ return t == null ? null : new HiveDecimal(t.unscaledValue(), t.scale());
+ } catch(NumberFormatException e) {
+ return null;
+ }
+ }
+
+}