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;
+    }
+  }
+
+}