http://git-wip-us.apache.org/repos/asf/hive/blob/3228ba7c/ql/src/test/results/clientpositive/vector_decimal_aggregate.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/vector_decimal_aggregate.q.out 
b/ql/src/test/results/clientpositive/vector_decimal_aggregate.q.out
index cf975d1..9b9fb71 100644
--- a/ql/src/test/results/clientpositive/vector_decimal_aggregate.q.out
+++ b/ql/src/test/results/clientpositive/vector_decimal_aggregate.q.out
@@ -110,14 +110,14 @@ POSTHOOK: query: SELECT cint,
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@decimal_vgby
 #### A masked pattern was here ####
--3728  6       5831542.269248378       -3367.6517567568        
5817556.0411483778      6       6984454.211097692       -4033.445769230769      
6967702.8672438458471
--563   2       -515.621072973  -3367.6517567568        -3883.2728297298        
2       -617.5607769230769      -4033.445769230769      -4651.0065461538459
-253665376      1024    9767.0054054054 -9779.5486486487        
-347484.0818378374      1024    11697.969230769231      -11712.99230769231      
-416182.64030769233089
-528534767      1024    5831542.269248378       -9777.1594594595        
11646372.8607481068     1024    6984454.211097692       -11710.130769230771     
13948892.79980307629003
-626923679      1024    9723.4027027027 -9778.9513513514        
10541.0525297287        1024    11645.746153846154      -11712.276923076923     
12625.04759999997746
-6981   3       5831542.269248378       -515.621072973  5830511.027102432       
3       6984454.211097692       -617.5607769230769      6983219.0895438458462
-762    2       5831542.269248378       1531.2194054054 5833073.4886537834      
2       6984454.211097692       1833.9456923076925      6986288.1567899996925
-NULL   3072    9318.4351351351 -4298.1513513514        5018444.1081079808      
3072    11160.715384615385      -5147.907692307693      6010604.3076923073536
+-3728  6       5831542.2692483780      -3367.6517567568        
5817556.0411483778      6       6984454.21109769200000  -4033.44576923076900    
6967702.86724384584710
+-563   2       -515.6210729730 -3367.6517567568        -3883.2728297298        
2       -617.56077692307690     -4033.44576923076900    -4651.00654615384590
+253665376      1024    9767.0054054054 -9779.5486486487        
-347484.0818378374      1024    11697.96923076923100    -11712.99230769231000   
-416182.64030769233089
+528534767      1024    5831542.2692483780      -9777.1594594595        
11646372.8607481068     1024    6984454.21109769200000  -11710.13076923077100   
13948892.79980307629003
+626923679      1024    9723.4027027027 -9778.9513513514        
10541.0525297287        1024    11645.74615384615400    -11712.27692307692300   
12625.04759999997746
+6981   3       5831542.2692483780      -515.6210729730 5830511.0271024320      
3       6984454.21109769200000  -617.56077692307690     6983219.08954384584620
+762    2       5831542.2692483780      1531.2194054054 5833073.4886537834      
2       6984454.21109769200000  1833.94569230769250     6986288.15678999969250
+NULL   3072    9318.4351351351 -4298.1513513514        5018444.1081079808      
3072    11160.71538461538500    -5147.90769230769300    6010604.30769230735360
 PREHOOK: query: -- Now add the others...
 EXPLAIN SELECT cint,
     COUNT(cdecimal1), MAX(cdecimal1), MIN(cdecimal1), SUM(cdecimal1), 
AVG(cdecimal1), STDDEV_POP(cdecimal1), STDDEV_SAMP(cdecimal1),
@@ -208,11 +208,11 @@ POSTHOOK: query: SELECT cint,
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@decimal_vgby
 #### A masked pattern was here ####
--3728  6       5831542.269248378       -3367.6517567568        
5817556.0411483778      969592.67352472963333   2174330.2092403853      
2381859.406131774       6       6984454.211097692       -4033.445769230769      
6967702.8672438458471   1161283.811207307641183333      2604201.2704476737      
2852759.5602156054
--563   2       -515.621072973  -3367.6517567568        -3883.2728297298        
-1941.6364148649        1426.0153418918999      2016.6902366556308      2       
-617.5607769230769      -4033.445769230769      -4651.0065461538459     
-2325.50327307692295    1707.9424961538462      2415.395441814127
-253665376      1024    9767.0054054054 -9779.5486486487        
-347484.0818378374      -339.33992366976309     5708.9563478862 
5711.745967572779       1024    11697.969230769231      -11712.99230769231      
-416182.64030769233089  -406.428359675480791885 6837.632716002934       
6840.973851172274
-528534767      1024    5831542.269248378       -9777.1594594595        
11646372.8607481068     11373.41099682432305    257528.92988206653      
257654.7686043977       1024    6984454.211097692       -11710.130769230771     
13948892.79980307629003 13621.965624807691689482        308443.1074570801       
308593.82484083984
-626923679      1024    9723.4027027027 -9778.9513513514        
10541.0525297287        10.29399661106318       5742.09145323734        
5744.897264034267       1024    11645.746153846154      -11712.276923076923     
12625.04759999997746    12.329148046874977988   6877.318722794877       
6880.679250101603
-6981   3       5831542.269248378       -515.621072973  5830511.027102432       
1943503.67570081066667  2749258.455012492       3367140.1929065133      3       
6984454.211097692       -617.5607769230769      6983219.0895438458462   
2327739.696514615282066667      3292794.4113115156      4032833.0678006653
-762    2       5831542.269248378       1531.2194054054 5833073.4886537834      
2916536.7443268917      2915005.5249214866      4122440.3477364695      2       
6984454.211097692       1833.9456923076925      6986288.1567899996925   
3493144.07839499984625  3491310.1327026924      4937458.140118758
-NULL   3072    9318.4351351351 -4298.1513513514        5018444.1081079808      
1633.60810810806667     5695.483082135364       5696.4103077145055      3072    
11160.715384615385      -5147.907692307693      6010604.3076923073536   
1956.576923076922966667 6821.495748565159       6822.606289190924
+-3728  6       5831542.2692483780      -3367.6517567568        
5817556.0411483778      969592.67352472963333   2174330.2092403853      
2381859.406131774       6       6984454.21109769200000  -4033.44576923076900    
6967702.86724384584710  1161283.811207307641183333      2604201.2704476737      
2852759.5602156054
+-563   2       -515.6210729730 -3367.6517567568        -3883.2728297298        
-1941.63641486490000    1426.0153418918999      2016.6902366556308      2       
-617.56077692307690     -4033.44576923076900    -4651.00654615384590    
-2325.503273076922950000        1707.9424961538462      2415.395441814127
+253665376      1024    9767.0054054054 -9779.5486486487        
-347484.0818378374      -339.33992366976309     5708.9563478862 
5711.745967572779       1024    11697.96923076923100    -11712.99230769231000   
-416182.64030769233089  -406.428359675480791885 6837.632716002934       
6840.973851172274
+528534767      1024    5831542.2692483780      -9777.1594594595        
11646372.8607481068     11373.41099682432305    257528.92988206653      
257654.7686043977       1024    6984454.21109769200000  -11710.13076923077100   
13948892.79980307629003 13621.965624807691689482        308443.1074570801       
308593.82484083984
+626923679      1024    9723.4027027027 -9778.9513513514        
10541.0525297287        10.29399661106318       5742.09145323734        
5744.897264034267       1024    11645.74615384615400    -11712.27692307692300   
12625.04759999997746    12.329148046874977988   6877.318722794877       
6880.679250101603
+6981   3       5831542.2692483780      -515.6210729730 5830511.0271024320      
1943503.67570081066667  2749258.455012492       3367140.1929065133      3       
6984454.21109769200000  -617.56077692307690     6983219.08954384584620  
2327739.696514615282066667      3292794.4113115156      4032833.0678006653
+762    2       5831542.2692483780      1531.2194054054 5833073.4886537834      
2916536.74432689170000  2915005.5249214866      4122440.3477364695      2       
6984454.21109769200000  1833.94569230769250     6986288.15678999969250  
3493144.078394999846250000      3491310.1327026924      4937458.140118758
+NULL   3072    9318.4351351351 -4298.1513513514        5018444.1081079808      
1633.60810810806667     5695.483082135364       5696.4103077145055      3072    
11160.71538461538500    -5147.90769230769300    6010604.30769230735360  
1956.576923076922966667 6821.495748565159       6822.606289190924

http://git-wip-us.apache.org/repos/asf/hive/blob/3228ba7c/ql/src/test/results/clientpositive/vector_decimal_cast.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/vector_decimal_cast.q.out 
b/ql/src/test/results/clientpositive/vector_decimal_cast.q.out
index 88c09d9..2d81305 100644
--- a/ql/src/test/results/clientpositive/vector_decimal_cast.q.out
+++ b/ql/src/test/results/clientpositive/vector_decimal_cast.q.out
@@ -46,13 +46,13 @@ POSTHOOK: query: SELECT cdouble, cint, cboolean1, 
ctimestamp1, CAST(cdouble AS D
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@alltypesorc
 #### A masked pattern was here ####
--13326.0       528534767       true    1969-12-31 15:59:46.674 -13326  
528534767       1       -13
--15813.0       528534767       true    1969-12-31 15:59:55.787 -15813  
528534767       1       -4
--9566.0        528534767       true    1969-12-31 15:59:44.187 -9566   
528534767       1       -16
-15007.0        528534767       true    1969-12-31 15:59:50.434 15007   
528534767       1       -10
-7021.0 528534767       true    1969-12-31 16:00:15.007 7021    528534767       
1       15
-4963.0 528534767       true    1969-12-31 16:00:07.021 4963    528534767       
1       7
--7824.0        528534767       true    1969-12-31 16:00:04.963 -7824   
528534767       1       5
--15431.0       528534767       true    1969-12-31 15:59:52.176 -15431  
528534767       1       -8
--15549.0       528534767       true    1969-12-31 15:59:44.569 -15549  
528534767       1       -15
-5780.0 528534767       true    1969-12-31 15:59:44.451 5780    528534767       
1       -16
+-13326.0       528534767       true    1969-12-31 15:59:46.674 
-13326.0000000000       528534767.00000000000000        1.00    -13
+-15813.0       528534767       true    1969-12-31 15:59:55.787 
-15813.0000000000       528534767.00000000000000        1.00    -4
+-9566.0        528534767       true    1969-12-31 15:59:44.187 
-9566.0000000000        528534767.00000000000000        1.00    -16
+15007.0        528534767       true    1969-12-31 15:59:50.434 
15007.0000000000        528534767.00000000000000        1.00    -10
+7021.0 528534767       true    1969-12-31 16:00:15.007 7021.0000000000 
528534767.00000000000000        1.00    15
+4963.0 528534767       true    1969-12-31 16:00:07.021 4963.0000000000 
528534767.00000000000000        1.00    7
+-7824.0        528534767       true    1969-12-31 16:00:04.963 
-7824.0000000000        528534767.00000000000000        1.00    5
+-15431.0       528534767       true    1969-12-31 15:59:52.176 
-15431.0000000000       528534767.00000000000000        1.00    -8
+-15549.0       528534767       true    1969-12-31 15:59:44.569 
-15549.0000000000       528534767.00000000000000        1.00    -15
+5780.0 528534767       true    1969-12-31 15:59:44.451 5780.0000000000 
528534767.00000000000000        1.00    -16

http://git-wip-us.apache.org/repos/asf/hive/blob/3228ba7c/ql/src/test/results/clientpositive/vector_decimal_expressions.q.out
----------------------------------------------------------------------
diff --git 
a/ql/src/test/results/clientpositive/vector_decimal_expressions.q.out 
b/ql/src/test/results/clientpositive/vector_decimal_expressions.q.out
index 6369bc8..e57d6c1 100644
--- a/ql/src/test/results/clientpositive/vector_decimal_expressions.q.out
+++ b/ql/src/test/results/clientpositive/vector_decimal_expressions.q.out
@@ -77,13 +77,13 @@ LIMIT 10
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@decimal_test
 #### A masked pattern was here ####
-1836.441995841977      -1166.027234927254      0.8372697814833714      
245972.55810810256      5.6189189189    835     1000    -24     835     true    
1000.823076923077       835.6189        1000.823076923077       1969-12-31 
16:13:55.618918918
-1856.1322245322462     -1178.5293139292924     0.8372449787014038      
251275.4432432497       4.5783783784    844     1011    -13     844     true    
1011.5538461538462      844.57837       1011.5538461538462      1969-12-31 
16:14:04.578378378
-1858.7575883576155     -1180.196257796231      0.837241711366943       
251986.76756757565      5.772972973     845     1012    -12     845     true    
1012.9846153846155      845.77295       1012.9846153846155      1969-12-31 
16:14:05.772972973
-1862.6956340956693     -1182.6966735966386     0.8372368276344616      
253055.6391891997       7.5648648649    847     1015    -9      847     true    
1015.1307692307693      847.5649        1015.1307692307693      1969-12-31 
16:14:07.564864864
-1883.6985446985233     -1196.0322245322466     0.8372111259286499      
258794.49324323673      7.1216216216    857     1026    2       857     true    
1026.5769230769233      857.12164       1026.5769230769233      1969-12-31 
16:14:17.121621621
-1886.3239085238924     -1197.6991683991848     0.8372079534581902      
259516.37432431948      8.3162162162    858     1028    4       858     true    
1028.0076923076924      858.3162        1028.0076923076924      1969-12-31 
16:14:18.316216216
-1887.636590436577      -1198.532640332654      0.8372063705322131      
259877.69189188787      8.9135135135    858     1028    4       858     true    
1028.723076923077       858.9135        1028.723076923077       1969-12-31 
16:14:18.913513513
-1895.5126819126846     -1203.5334719334692     0.8371969190171343      
262050.87567567648      2.4972972973    862     1033    9       862     true    
1033.0153846153846      862.4973        1033.0153846153846      1969-12-31 
16:14:22.497297297
-1909.9521829522155     -1212.701663201631      0.8371797936946236      
266058.54729730723      9.0675675676    869     1040    16      869     true    
1040.8846153846155      869.06757       1040.8846153846155      1969-12-31 
16:14:29.067567567
-1913.8902286902692     -1215.2020790020384     0.8371751679995797      
267156.8270270395       0.8594594595    870     1043    19      870     true    
1043.0307692307692      870.85944       1043.0307692307692      1969-12-31 
16:14:30.859459459
+1836.44199584197700    -1166.02723492725400    0.8372697814833714      
245972.55810810256      5.6189189189    835     1000    -24     835     true    
1000.823076923077       835.6189        1000.823076923077       1969-12-31 
16:13:55.618918918
+1856.13222453224620    -1178.52931392929240    0.8372449787014038      
251275.4432432497       4.5783783784    844     1011    -13     844     true    
1011.5538461538462      844.57837       1011.5538461538462      1969-12-31 
16:14:04.578378378
+1858.75758835761550    -1180.19625779623100    0.837241711366943       
251986.76756757565      5.7729729730    845     1012    -12     845     true    
1012.9846153846155      845.77295       1012.9846153846155      1969-12-31 
16:14:05.772972973
+1862.69563409566930    -1182.69667359663860    0.8372368276344616      
253055.6391891997       7.5648648649    847     1015    -9      847     true    
1015.1307692307693      847.5649        1015.1307692307693      1969-12-31 
16:14:07.564864864
+1883.69854469852330    -1196.03222453224660    0.8372111259286499      
258794.49324323673      7.1216216216    857     1026    2       857     true    
1026.5769230769233      857.12164       1026.5769230769233      1969-12-31 
16:14:17.121621621
+1886.32390852389240    -1197.69916839918480    0.8372079534581902      
259516.37432431948      8.3162162162    858     1028    4       858     true    
1028.0076923076924      858.3162        1028.0076923076924      1969-12-31 
16:14:18.316216216
+1887.63659043657700    -1198.53264033265400    0.8372063705322131      
259877.69189188787      8.9135135135    858     1028    4       858     true    
1028.723076923077       858.9135        1028.723076923077       1969-12-31 
16:14:18.913513513
+1895.51268191268460    -1203.53347193346920    0.8371969190171343      
262050.87567567648      2.4972972973    862     1033    9       862     true    
1033.0153846153846      862.4973        1033.0153846153846      1969-12-31 
16:14:22.497297297
+1909.95218295221550    -1212.70166320163100    0.8371797936946236      
266058.54729730723      9.0675675676    869     1040    16      869     true    
1040.8846153846155      869.06757       1040.8846153846155      1969-12-31 
16:14:29.067567567
+1913.89022869026920    -1215.20207900203840    0.8371751679995797      
267156.8270270395       0.8594594595    870     1043    19      870     true    
1043.0307692307692      870.85944       1043.0307692307692      1969-12-31 
16:14:30.859459459

http://git-wip-us.apache.org/repos/asf/hive/blob/3228ba7c/ql/src/test/results/clientpositive/vector_decimal_mapjoin.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/vector_decimal_mapjoin.q.out 
b/ql/src/test/results/clientpositive/vector_decimal_mapjoin.q.out
index cf48a32..d3356ed 100644
--- a/ql/src/test/results/clientpositive/vector_decimal_mapjoin.q.out
+++ b/ql/src/test/results/clientpositive/vector_decimal_mapjoin.q.out
@@ -155,109 +155,109 @@ POSTHOOK: type: QUERY
 POSTHOOK: Input: default@t1
 POSTHOOK: Input: default@t2
 #### A masked pattern was here ####
-14     14
-14     14
-14     14
-14     14
-14     14
-14     14
-14     14
-14     14
-14     14
-17     17
-17     17
-17     17
-17     17
-17     17
-17     17
-17     17
-17     17
-17     17
-17     17
-45     45
-45     45
-45     45
-45     45
-45     45
-6      6
-6      6
-6      6
-6      6
-6      6
-6      6
-62     62
-62     62
-62     62
-62     62
-62     62
-62     62
-62     62
-62     62
-62     62
-62     62
-62     62
-62     62
-64     64
-64     64
-64     64
-64     64
-64     64
-64     64
-64     64
-64     64
-64     64
-64     64
-64     64
-64     64
-64     64
-64     64
-64     64
-64     64
-64     64
-64     64
-70     70
-70     70
-70     70
-70     70
-70     70
-70     70
-70     70
-79     79
-79     79
-79     79
-79     79
-79     79
-79     79
-89     89
-89     89
-89     89
-89     89
-89     89
-89     89
-89     89
-89     89
-89     89
-89     89
-89     89
-89     89
-9      9
-9      9
-9      9
-9      9
-9      9
-9      9
-9      9
-9      9
-9      9
-9      9
-9      9
-9      9
-9      9
-9      9
-9      9
-9      9
-9      9
-9      9
-9      9
-9      9
-9      9
+14.00  14
+14.00  14
+14.00  14
+14.00  14
+14.00  14
+14.00  14
+14.00  14
+14.00  14
+14.00  14
+17.00  17
+17.00  17
+17.00  17
+17.00  17
+17.00  17
+17.00  17
+17.00  17
+17.00  17
+17.00  17
+17.00  17
+45.00  45
+45.00  45
+45.00  45
+45.00  45
+45.00  45
+6.00   6
+6.00   6
+6.00   6
+6.00   6
+6.00   6
+6.00   6
+62.00  62
+62.00  62
+62.00  62
+62.00  62
+62.00  62
+62.00  62
+62.00  62
+62.00  62
+62.00  62
+62.00  62
+62.00  62
+62.00  62
+64.00  64
+64.00  64
+64.00  64
+64.00  64
+64.00  64
+64.00  64
+64.00  64
+64.00  64
+64.00  64
+64.00  64
+64.00  64
+64.00  64
+64.00  64
+64.00  64
+64.00  64
+64.00  64
+64.00  64
+64.00  64
+70.00  70
+70.00  70
+70.00  70
+70.00  70
+70.00  70
+70.00  70
+70.00  70
+79.00  79
+79.00  79
+79.00  79
+79.00  79
+79.00  79
+79.00  79
+89.00  89
+89.00  89
+89.00  89
+89.00  89
+89.00  89
+89.00  89
+89.00  89
+89.00  89
+89.00  89
+89.00  89
+89.00  89
+89.00  89
+9.00   9
+9.00   9
+9.00   9
+9.00   9
+9.00   9
+9.00   9
+9.00   9
+9.00   9
+9.00   9
+9.00   9
+9.00   9
+9.00   9
+9.00   9
+9.00   9
+9.00   9
+9.00   9
+9.00   9
+9.00   9
+9.00   9
+9.00   9
+9.00   9

http://git-wip-us.apache.org/repos/asf/hive/blob/3228ba7c/ql/src/test/results/clientpositive/vector_decimal_precision.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/vector_decimal_precision.q.out 
b/ql/src/test/results/clientpositive/vector_decimal_precision.q.out
index f2aaf8d..c5ab8a7 100644
--- a/ql/src/test/results/clientpositive/vector_decimal_precision.q.out
+++ b/ql/src/test/results/clientpositive/vector_decimal_precision.q.out
@@ -99,13 +99,13 @@ NULL
 NULL
 NULL
 NULL
-0
-0
-0
-0
-0
-0.123456789
-0.123456789
+0.0000000000
+0.0000000000
+0.0000000000
+0.0000000000
+0.0000000000
+0.1234567890
+0.1234567890
 1.2345678901
 1.2345678901
 1.2345678901
@@ -122,14 +122,14 @@ NULL
 12345.6789012346
 123456.7890123456
 123456.7890123457
-1234567.890123456
+1234567.8901234560
 1234567.8901234568
-12345678.90123456
+12345678.9012345600
 12345678.9012345679
-123456789.0123456
+123456789.0123456000
 123456789.0123456789
-1234567890.123456
-1234567890.123456789
+1234567890.1234560000
+1234567890.1234567890
 PREHOOK: query: SELECT dec, dec + 1, dec - 1 FROM DECIMAL_PRECISION ORDER BY 
dec
 PREHOOK: type: QUERY
 PREHOOK: Input: default@decimal_precision
@@ -182,13 +182,13 @@ NULL      NULL    NULL
 NULL   NULL    NULL
 NULL   NULL    NULL
 NULL   NULL    NULL
-0      1       -1
-0      1       -1
-0      1       -1
-0      1       -1
-0      1       -1
-0.123456789    1.123456789     -0.876543211
-0.123456789    1.123456789     -0.876543211
+0.0000000000   1.0000000000    -1.0000000000
+0.0000000000   1.0000000000    -1.0000000000
+0.0000000000   1.0000000000    -1.0000000000
+0.0000000000   1.0000000000    -1.0000000000
+0.0000000000   1.0000000000    -1.0000000000
+0.1234567890   1.1234567890    -0.8765432110
+0.1234567890   1.1234567890    -0.8765432110
 1.2345678901   2.2345678901    0.2345678901
 1.2345678901   2.2345678901    0.2345678901
 1.2345678901   2.2345678901    0.2345678901
@@ -205,14 +205,14 @@ NULL      NULL    NULL
 12345.6789012346       12346.6789012346        12344.6789012346
 123456.7890123456      123457.7890123456       123455.7890123456
 123456.7890123457      123457.7890123457       123455.7890123457
-1234567.890123456      1234568.890123456       1234566.890123456
+1234567.8901234560     1234568.8901234560      1234566.8901234560
 1234567.8901234568     1234568.8901234568      1234566.8901234568
-12345678.90123456      12345679.90123456       12345677.90123456
+12345678.9012345600    12345679.9012345600     12345677.9012345600
 12345678.9012345679    12345679.9012345679     12345677.9012345679
-123456789.0123456      123456790.0123456       123456788.0123456
+123456789.0123456000   123456790.0123456000    123456788.0123456000
 123456789.0123456789   123456790.0123456789    123456788.0123456789
-1234567890.123456      1234567891.123456       1234567889.123456
-1234567890.123456789   1234567891.123456789    1234567889.123456789
+1234567890.1234560000  1234567891.1234560000   1234567889.1234560000
+1234567890.1234567890  1234567891.1234567890   1234567889.1234567890
 PREHOOK: query: SELECT dec, dec * 2, dec / 3  FROM DECIMAL_PRECISION ORDER BY 
dec
 PREHOOK: type: QUERY
 PREHOOK: Input: default@decimal_precision
@@ -265,37 +265,37 @@ NULL      NULL    NULL
 NULL   NULL    NULL
 NULL   NULL    NULL
 NULL   NULL    NULL
-0      0       0
-0      0       0
-0      0       0
-0      0       0
-0      0       0
-0.123456789    0.246913578     0.041152263
-0.123456789    0.246913578     0.041152263
+0.0000000000   0.0000000000    0.000000000000
+0.0000000000   0.0000000000    0.000000000000
+0.0000000000   0.0000000000    0.000000000000
+0.0000000000   0.0000000000    0.000000000000
+0.0000000000   0.0000000000    0.000000000000
+0.1234567890   0.2469135780    0.041152263000
+0.1234567890   0.2469135780    0.041152263000
 1.2345678901   2.4691357802    0.411522630033
 1.2345678901   2.4691357802    0.411522630033
 1.2345678901   2.4691357802    0.411522630033
-12.3456789012  24.6913578024   4.1152263004
-12.3456789012  24.6913578024   4.1152263004
-12.3456789012  24.6913578024   4.1152263004
-123.4567890123 246.9135780246  41.1522630041
-123.4567890123 246.9135780246  41.1522630041
-123.4567890123 246.9135780246  41.1522630041
-1234.5678901235        2469.135780247  411.522630041167
-1234.5678901235        2469.135780247  411.522630041167
-1234.5678901235        2469.135780247  411.522630041167
+12.3456789012  24.6913578024   4.115226300400
+12.3456789012  24.6913578024   4.115226300400
+12.3456789012  24.6913578024   4.115226300400
+123.4567890123 246.9135780246  41.152263004100
+123.4567890123 246.9135780246  41.152263004100
+123.4567890123 246.9135780246  41.152263004100
+1234.5678901235        2469.1357802470 411.522630041167
+1234.5678901235        2469.1357802470 411.522630041167
+1234.5678901235        2469.1357802470 411.522630041167
 12345.6789012346       24691.3578024692        4115.226300411533
 12345.6789012346       24691.3578024692        4115.226300411533
-123456.7890123456      246913.5780246912       41152.2630041152
+123456.7890123456      246913.5780246912       41152.263004115200
 123456.7890123457      246913.5780246914       41152.263004115233
-1234567.890123456      2469135.780246912       411522.630041152
+1234567.8901234560     2469135.7802469120      411522.630041152000
 1234567.8901234568     2469135.7802469136      411522.630041152267
-12345678.90123456      24691357.80246912       4115226.30041152
+12345678.9012345600    24691357.8024691200     4115226.300411520000
 12345678.9012345679    24691357.8024691358     4115226.300411522633
-123456789.0123456      246913578.0246912       41152263.0041152
-123456789.0123456789   246913578.0246913578    41152263.0041152263
-1234567890.123456      2469135780.246912       411522630.041152
-1234567890.123456789   2469135780.246913578    411522630.041152263
+123456789.0123456000   246913578.0246912000    41152263.004115200000
+123456789.0123456789   246913578.0246913578    41152263.004115226300
+1234567890.1234560000  2469135780.2469120000   411522630.041152000000
+1234567890.1234567890  2469135780.2469135780   411522630.041152263000
 PREHOOK: query: SELECT dec, dec / 9 FROM DECIMAL_PRECISION ORDER BY dec
 PREHOOK: type: QUERY
 PREHOOK: Input: default@decimal_precision
@@ -348,13 +348,13 @@ NULL      NULL
 NULL   NULL
 NULL   NULL
 NULL   NULL
-0      0
-0      0
-0      0
-0      0
-0      0
-0.123456789    0.013717421
-0.123456789    0.013717421
+0.0000000000   0.000000000000
+0.0000000000   0.000000000000
+0.0000000000   0.000000000000
+0.0000000000   0.000000000000
+0.0000000000   0.000000000000
+0.1234567890   0.013717421000
+0.1234567890   0.013717421000
 1.2345678901   0.137174210011
 1.2345678901   0.137174210011
 1.2345678901   0.137174210011
@@ -371,14 +371,14 @@ NULL      NULL
 12345.6789012346       1371.742100137178
 123456.7890123456      13717.421001371733
 123456.7890123457      13717.421001371744
-1234567.890123456      137174.210013717333
+1234567.8901234560     137174.210013717333
 1234567.8901234568     137174.210013717422
-12345678.90123456      1371742.100137173333
+12345678.9012345600    1371742.100137173333
 12345678.9012345679    1371742.100137174211
-123456789.0123456      13717421.001371733333
-123456789.0123456789   13717421.0013717421
-1234567890.123456      137174210.013717333333
-1234567890.123456789   137174210.013717421
+123456789.0123456000   13717421.001371733333
+123456789.0123456789   13717421.001371742100
+1234567890.1234560000  137174210.013717333333
+1234567890.1234567890  137174210.013717421000
 PREHOOK: query: SELECT dec, dec / 27 FROM DECIMAL_PRECISION ORDER BY dec
 PREHOOK: type: QUERY
 PREHOOK: Input: default@decimal_precision
@@ -431,13 +431,13 @@ NULL      NULL
 NULL   NULL
 NULL   NULL
 NULL   NULL
-0      0
-0      0
-0      0
-0      0
-0      0
-0.123456789    0.0045724736667
-0.123456789    0.0045724736667
+0.0000000000   0.0000000000000
+0.0000000000   0.0000000000000
+0.0000000000   0.0000000000000
+0.0000000000   0.0000000000000
+0.0000000000   0.0000000000000
+0.1234567890   0.0045724736667
+0.1234567890   0.0045724736667
 1.2345678901   0.0457247366704
 1.2345678901   0.0457247366704
 1.2345678901   0.0457247366704
@@ -454,14 +454,14 @@ NULL      NULL
 12345.6789012346       457.2473667123926
 123456.7890123456      4572.4736671239111
 123456.7890123457      4572.4736671239148
-1234567.890123456      45724.7366712391111
+1234567.8901234560     45724.7366712391111
 1234567.8901234568     45724.7366712391407
-12345678.90123456      457247.3667123911111
+12345678.9012345600    457247.3667123911111
 12345678.9012345679    457247.3667123914037
-123456789.0123456      4572473.6671239111111
+123456789.0123456000   4572473.6671239111111
 123456789.0123456789   4572473.6671239140333
-1234567890.123456      45724736.6712391111111
-1234567890.123456789   45724736.6712391403333
+1234567890.1234560000  45724736.6712391111111
+1234567890.1234567890  45724736.6712391403333
 PREHOOK: query: SELECT dec, dec * dec FROM DECIMAL_PRECISION ORDER BY dec
 PREHOOK: type: QUERY
 PREHOOK: Input: default@decimal_precision
@@ -514,13 +514,13 @@ NULL      NULL
 NULL   NULL
 NULL   NULL
 NULL   NULL
-0      0
-0      0
-0      0
-0      0
-0      0
-0.123456789    0.015241578750190521
-0.123456789    0.015241578750190521
+0.0000000000   0.00000000000000000000
+0.0000000000   0.00000000000000000000
+0.0000000000   0.00000000000000000000
+0.0000000000   0.00000000000000000000
+0.0000000000   0.00000000000000000000
+0.1234567890   0.01524157875019052100
+0.1234567890   0.01524157875019052100
 1.2345678901   1.52415787526596567801
 1.2345678901   1.52415787526596567801
 1.2345678901   1.52415787526596567801
@@ -537,14 +537,14 @@ NULL      NULL
 12345.6789012346       152415787.53238916034140423716
 123456.7890123456      15241578753.23881726870921383936
 123456.7890123457      15241578753.23884196006701630849
-1234567.890123456      1524157875323.881726870921383936
+1234567.8901234560     1524157875323.88172687092138393600
 1234567.8901234568     1524157875323.88370217954558146624
-12345678.90123456      152415787532388.1726870921383936
+12345678.9012345600    152415787532388.17268709213839360000
 12345678.9012345679    152415787532388.36774881877789971041
-123456789.0123456      15241578753238817.26870921383936
+123456789.0123456000   15241578753238817.26870921383936000000
 123456789.0123456789   15241578753238836.75019051998750190521
-1234567890.123456      NULL
-1234567890.123456789   NULL
+1234567890.1234560000  NULL
+1234567890.1234567890  NULL
 PREHOOK: query: EXPLAIN SELECT avg(dec), sum(dec) FROM DECIMAL_PRECISION
 PREHOOK: type: QUERY
 POSTHOOK: query: EXPLAIN SELECT avg(dec), sum(dec) FROM DECIMAL_PRECISION
@@ -637,7 +637,7 @@ POSTHOOK: query: SELECT 
MIN(cast('12345678901234567890.12345678' as decimal(38,1
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@decimal_precision
 #### A masked pattern was here ####
-12345678901234567890.12345678
+12345678901234567890.123456780000000000
 PREHOOK: query: SELECT COUNT(cast('12345678901234567890.12345678' as 
decimal(38,18))) FROM DECIMAL_PRECISION
 PREHOOK: type: QUERY
 PREHOOK: Input: default@decimal_precision

http://git-wip-us.apache.org/repos/asf/hive/blob/3228ba7c/ql/src/test/results/clientpositive/vector_decimal_round_2.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/vector_decimal_round_2.q.out 
b/ql/src/test/results/clientpositive/vector_decimal_round_2.q.out
index 0151b04..5291609 100644
--- a/ql/src/test/results/clientpositive/vector_decimal_round_2.q.out
+++ b/ql/src/test/results/clientpositive/vector_decimal_round_2.q.out
@@ -25,7 +25,7 @@ POSTHOOK: query: select * from decimal_tbl_1_orc
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@decimal_tbl_1_orc
 #### A masked pattern was here ####
-55555
+55555.000000000000000000
 PREHOOK: query: -- EXPLAIN
 -- SELECT dec, round(null), round(null, 0), round(125, null), 
 -- round(1.0/0.0, 0), round(power(-1.0,0.5), 0)
@@ -114,7 +114,7 @@ FROM decimal_tbl_1_orc ORDER BY d
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@decimal_tbl_1_orc
 #### A masked pattern was here ####
-55555  55555   55555   55555   55555   55560   55600   56000   60000   100000  
0       0       0
+55555  55555   55555.0 55555.00        55555.000       55560   55600   56000   
60000   100000  0       0       0
 PREHOOK: query: create table decimal_tbl_2_orc (pos decimal(38,18), neg 
decimal(38,18)) 
 STORED AS ORC
 PREHOOK: type: CREATETABLE
@@ -143,7 +143,7 @@ POSTHOOK: query: select * from decimal_tbl_2_orc
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@decimal_tbl_2_orc
 #### A masked pattern was here ####
-125.315        -125.315
+125.315000000000000000 -125.315000000000000000
 PREHOOK: query: EXPLAIN
 SELECT
   round(pos) as p, round(pos, 0),
@@ -226,7 +226,7 @@ FROM decimal_tbl_2_orc ORDER BY p
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@decimal_tbl_2_orc
 #### A masked pattern was here ####
-125    125     125.3   125.32  125.315 125.315 130     100     0       0       
-125    -125    -125.3  -125.32 -125.315        -125.315        -130    -100    
0       0
+125    125     125.3   125.32  125.315 125.3150        130     100     0       
0       -125    -125    -125.3  -125.32 -125.315        -125.3150       -130    
-100    0       0
 PREHOOK: query: create table decimal_tbl_3_orc (dec decimal(38,18)) 
 STORED AS ORC
 PREHOOK: type: CREATETABLE
@@ -254,7 +254,7 @@ POSTHOOK: query: select * from decimal_tbl_3_orc
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@decimal_tbl_3_orc
 #### A masked pattern was here ####
-3.141592653589793
+3.141592653589793000
 PREHOOK: query: EXPLAIN
 SELECT
   round(dec, -15) as d, round(dec, -16),
@@ -381,7 +381,7 @@ FROM decimal_tbl_3_orc ORDER BY d
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@decimal_tbl_3_orc
 #### A masked pattern was here ####
-0      0       0       0       0       0       0       0       0       0       
0       0       0       0       0       0       3       3.1     3.14    3.142   
3.1416  3.14159 3.141593        3.1415927       3.14159265      3.141592654     
3.1415926536    3.14159265359   3.14159265359   3.1415926535898 3.1415926535898 
3.14159265358979        3.141592653589793       3.141592653589793
+0      0       0       0       0       0       0       0       0       0       
0       0       0       0       0       0       3       3.1     3.14    3.142   
3.1416  3.14159 3.141593        3.1415927       3.14159265      3.141592654     
3.1415926536    3.14159265359   3.141592653590  3.1415926535898 3.1415926535898 
3.14159265358979        3.141592653589793       3.1415926535897930
 PREHOOK: query: create table decimal_tbl_4_orc (pos decimal(38,18), neg 
decimal(38,18)) 
 STORED AS ORC
 PREHOOK: type: CREATETABLE
@@ -410,7 +410,7 @@ POSTHOOK: query: select * from decimal_tbl_4_orc
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@decimal_tbl_4_orc
 #### A masked pattern was here ####
-1809242.3151111344     -1809242.3151111344
+1809242.315111134400000000     -1809242.315111134400000000
 PREHOOK: query: EXPLAIN
 SELECT round(pos, 9) as p, round(neg, 9), round(1809242.3151111344BD, 9), 
round(-1809242.3151111344BD, 9)
 FROM decimal_tbl_4_orc ORDER BY p

http://git-wip-us.apache.org/repos/asf/hive/blob/3228ba7c/ql/src/test/results/clientpositive/vector_decimal_trailing.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/vector_decimal_trailing.q.out 
b/ql/src/test/results/clientpositive/vector_decimal_trailing.q.out
index ffdb1c9..7dea1a2 100644
--- a/ql/src/test/results/clientpositive/vector_decimal_trailing.q.out
+++ b/ql/src/test/results/clientpositive/vector_decimal_trailing.q.out
@@ -73,16 +73,16 @@ POSTHOOK: query: SELECT * FROM DECIMAL_TRAILING ORDER BY id
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@decimal_trailing
 #### A masked pattern was here ####
-0      0       0
-1      0       0
+0      0.0000  0.00000000
+1      0.0000  0.00000000
 2      NULL    NULL
-3      1       1
-4      10      10
-5      100     100
-6      1000    1000
-7      10000   10000
-8      100000  100000
-9      NULL    1000000
+3      1.0000  1.00000000
+4      10.0000 10.00000000
+5      100.0000        100.00000000
+6      1000.0000       1000.00000000
+7      10000.0000      10000.00000000
+8      100000.0000     100000.00000000
+9      NULL    1000000.00000000
 10     NULL    NULL
 11     NULL    NULL
 12     NULL    NULL
@@ -91,18 +91,18 @@ POSTHOOK: Input: default@decimal_trailing
 15     NULL    NULL
 16     NULL    NULL
 17     NULL    NULL
-18     1       1
-19     10      10
-20     100     100
-21     1000    1000
-22     100000  10000
-23     0       0
-24     0       0
-25     0       0
-26     0       0
-27     0       0
-28     12313.2 134134.312525
-29     99999.999       134134.31242553
+18     1.0000  1.00000000
+19     10.0000 10.00000000
+20     100.0000        100.00000000
+21     1000.0000       1000.00000000
+22     100000.0000     10000.00000000
+23     0.0000  0.00000000
+24     0.0000  0.00000000
+25     0.0000  0.00000000
+26     0.0000  0.00000000
+27     0.0000  0.00000000
+28     12313.2000      134134.31252500
+29     99999.9990      134134.31242553
 PREHOOK: query: DROP TABLE DECIMAL_TRAILING_txt
 PREHOOK: type: DROPTABLE
 PREHOOK: Input: default@decimal_trailing_txt

http://git-wip-us.apache.org/repos/asf/hive/blob/3228ba7c/ql/src/test/results/clientpositive/vector_decimal_udf.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/vector_decimal_udf.q.out 
b/ql/src/test/results/clientpositive/vector_decimal_udf.q.out
index cfd2a55..6837b76 100644
--- a/ql/src/test/results/clientpositive/vector_decimal_udf.q.out
+++ b/ql/src/test/results/clientpositive/vector_decimal_udf.q.out
@@ -92,44 +92,44 @@ POSTHOOK: query: SELECT key + key FROM DECIMAL_UDF
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@decimal_udf
 #### A masked pattern was here ####
--8800
+-8800.0000000000
 NULL
-0
-0
-200
-20
-2
-0.2
-0.02
-400
-40
-4
-0
-0.4
-0.04
-0.6
-0.66
-0.666
--0.6
--0.66
--0.666
-2
-4
-6.28
--2.24
--2.24
--2.244
-2.24
-2.244
-248
-250.4
--2510.98
-6.28
-6.28
-6.28
-2
--2469135780.246913578
-2469135780.24691356
+0.0000000000
+0.0000000000
+200.0000000000
+20.0000000000
+2.0000000000
+0.2000000000
+0.0200000000
+400.0000000000
+40.0000000000
+4.0000000000
+0.0000000000
+0.4000000000
+0.0400000000
+0.6000000000
+0.6600000000
+0.6660000000
+-0.6000000000
+-0.6600000000
+-0.6660000000
+2.0000000000
+4.0000000000
+6.2800000000
+-2.2400000000
+-2.2400000000
+-2.2440000000
+2.2400000000
+2.2440000000
+248.0000000000
+250.4000000000
+-2510.9800000000
+6.2800000000
+6.2800000000
+6.2800000000
+2.0000000000
+-2469135780.2469135780
+2469135780.2469135600
 PREHOOK: query: EXPLAIN SELECT key + value FROM DECIMAL_UDF
 PREHOOK: type: QUERY
 POSTHOOK: query: EXPLAIN SELECT key + value FROM DECIMAL_UDF
@@ -172,44 +172,44 @@ POSTHOOK: query: SELECT key + value FROM DECIMAL_UDF
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@decimal_udf
 #### A masked pattern was here ####
-0
+0.0000000000
 NULL
-0
-0
-200
-20
-2
-0.1
-0.01
-400
-40
-4
-0
-0.2
-0.02
-0.3
-0.33
-0.333
--0.3
--0.33
--0.333
-2
-4
-6.14
--2.12
--2.12
--12.122
-2.12
-2.122
-248
-250.2
--2510.49
-6.14
-6.14
-7.14
-2
--2469135780.123456789
-2469135780.12345678
+0.0000000000
+0.0000000000
+200.0000000000
+20.0000000000
+2.0000000000
+0.1000000000
+0.0100000000
+400.0000000000
+40.0000000000
+4.0000000000
+0.0000000000
+0.2000000000
+0.0200000000
+0.3000000000
+0.3300000000
+0.3330000000
+-0.3000000000
+-0.3300000000
+-0.3330000000
+2.0000000000
+4.0000000000
+6.1400000000
+-2.1200000000
+-2.1200000000
+-12.1220000000
+2.1200000000
+2.1220000000
+248.0000000000
+250.2000000000
+-2510.4900000000
+6.1400000000
+6.1400000000
+7.1400000000
+2.0000000000
+-2469135780.1234567890
+2469135780.1234567800
 PREHOOK: query: EXPLAIN SELECT key + (value/2) FROM DECIMAL_UDF
 PREHOOK: type: QUERY
 POSTHOOK: query: EXPLAIN SELECT key + (value/2) FROM DECIMAL_UDF
@@ -414,44 +414,44 @@ POSTHOOK: query: SELECT key - key FROM DECIMAL_UDF
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@decimal_udf
 #### A masked pattern was here ####
-0
+0.0000000000
 NULL
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
+0.0000000000
+0.0000000000
+0.0000000000
+0.0000000000
+0.0000000000
+0.0000000000
+0.0000000000
+0.0000000000
+0.0000000000
+0.0000000000
+0.0000000000
+0.0000000000
+0.0000000000
+0.0000000000
+0.0000000000
+0.0000000000
+0.0000000000
+0.0000000000
+0.0000000000
+0.0000000000
+0.0000000000
+0.0000000000
+0.0000000000
+0.0000000000
+0.0000000000
+0.0000000000
+0.0000000000
+0.0000000000
+0.0000000000
+0.0000000000
+0.0000000000
+0.0000000000
+0.0000000000
+0.0000000000
+0.0000000000
+0.0000000000
 PREHOOK: query: EXPLAIN SELECT key - value FROM DECIMAL_UDF
 PREHOOK: type: QUERY
 POSTHOOK: query: EXPLAIN SELECT key - value FROM DECIMAL_UDF
@@ -494,44 +494,44 @@ POSTHOOK: query: SELECT key - value FROM DECIMAL_UDF
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@decimal_udf
 #### A masked pattern was here ####
--8800
+-8800.0000000000
 NULL
-0
-0
-0
-0
-0
-0.1
-0.01
-0
-0
-0
-0
-0.2
-0.02
-0.3
-0.33
-0.333
--0.3
--0.33
--0.333
-0
-0
-0.14
--0.12
--0.12
-9.878
-0.12
-0.122
-0
-0.2
--0.49
-0.14
-0.14
--0.86
-0
--0.123456789
-0.12345678
+0.0000000000
+0.0000000000
+0.0000000000
+0.0000000000
+0.0000000000
+0.1000000000
+0.0100000000
+0.0000000000
+0.0000000000
+0.0000000000
+0.0000000000
+0.2000000000
+0.0200000000
+0.3000000000
+0.3300000000
+0.3330000000
+-0.3000000000
+-0.3300000000
+-0.3330000000
+0.0000000000
+0.0000000000
+0.1400000000
+-0.1200000000
+-0.1200000000
+9.8780000000
+0.1200000000
+0.1220000000
+0.0000000000
+0.2000000000
+-0.4900000000
+0.1400000000
+0.1400000000
+-0.8600000000
+0.0000000000
+-0.1234567890
+0.1234567800
 PREHOOK: query: EXPLAIN SELECT key - (value/2) FROM DECIMAL_UDF
 PREHOOK: type: QUERY
 POSTHOOK: query: EXPLAIN SELECT key - (value/2) FROM DECIMAL_UDF
@@ -736,42 +736,42 @@ POSTHOOK: query: SELECT key * key FROM DECIMAL_UDF
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@decimal_udf
 #### A masked pattern was here ####
-19360000
+19360000.00000000000000000000
 NULL
-0
-0
-10000
-100
-1
-0.01
-0.0001
-40000
-400
-4
-0
-0.04
-0.0004
-0.09
-0.1089
-0.110889
-0.09
-0.1089
-0.110889
-1
-4
-9.8596
-1.2544
-1.2544
-1.258884
-1.2544
-1.258884
-15376
-15675.04
-1576255.1401
-9.8596
-9.8596
-9.8596
-1
+0.00000000000000000000
+0.00000000000000000000
+10000.00000000000000000000
+100.00000000000000000000
+1.00000000000000000000
+0.01000000000000000000
+0.00010000000000000000
+40000.00000000000000000000
+400.00000000000000000000
+4.00000000000000000000
+0.00000000000000000000
+0.04000000000000000000
+0.00040000000000000000
+0.09000000000000000000
+0.10890000000000000000
+0.11088900000000000000
+0.09000000000000000000
+0.10890000000000000000
+0.11088900000000000000
+1.00000000000000000000
+4.00000000000000000000
+9.85960000000000000000
+1.25440000000000000000
+1.25440000000000000000
+1.25888400000000000000
+1.25440000000000000000
+1.25888400000000000000
+15376.00000000000000000000
+15675.04000000000000000000
+1576255.14010000000000000000
+9.85960000000000000000
+9.85960000000000000000
+9.85960000000000000000
+1.00000000000000000000
 NULL
 NULL
 PREHOOK: query: EXPLAIN SELECT key, value FROM DECIMAL_UDF where key * value > 0
@@ -819,29 +819,29 @@ POSTHOOK: query: SELECT key, value FROM DECIMAL_UDF where 
key * value > 0
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@decimal_udf
 #### A masked pattern was here ####
-100    100
-10     10
-1      1
-200    200
-20     20
-2      2
-1      1
-2      2
-3.14   3
--1.12  -1
--1.12  -1
--1.122 -11
-1.12   1
-1.122  1
-124    124
-125.2  125
--1255.49       -1255
-3.14   3
-3.14   3
-3.14   4
-1      1
--1234567890.123456789  -1234567890
-1234567890.12345678    1234567890
+100.0000000000 100
+10.0000000000  10
+1.0000000000   1
+200.0000000000 200
+20.0000000000  20
+2.0000000000   2
+1.0000000000   1
+2.0000000000   2
+3.1400000000   3
+-1.1200000000  -1
+-1.1200000000  -1
+-1.1220000000  -11
+1.1200000000   1
+1.1220000000   1
+124.0000000000 124
+125.2000000000 125
+-1255.4900000000       -1255
+3.1400000000   3
+3.1400000000   3
+3.1400000000   4
+1.0000000000   1
+-1234567890.1234567890 -1234567890
+1234567890.1234567800  1234567890
 PREHOOK: query: EXPLAIN SELECT key * value FROM DECIMAL_UDF
 PREHOOK: type: QUERY
 POSTHOOK: query: EXPLAIN SELECT key * value FROM DECIMAL_UDF
@@ -884,44 +884,44 @@ POSTHOOK: query: SELECT key * value FROM DECIMAL_UDF
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@decimal_udf
 #### A masked pattern was here ####
--19360000
+-19360000.0000000000
 NULL
-0
-0
-10000
-100
-1
-0
-0
-40000
-400
-4
-0
-0
-0
-0
-0
-0
-0
-0
-0
-1
-4
-9.42
-1.12
-1.12
-12.342
-1.12
-1.122
-15376
-15650
-1575639.95
-9.42
-9.42
-12.56
-1
-1524157875171467887.50190521
-1524157875171467876.3907942
+0.0000000000
+0.0000000000
+10000.0000000000
+100.0000000000
+1.0000000000
+0.0000000000
+0.0000000000
+40000.0000000000
+400.0000000000
+4.0000000000
+0.0000000000
+0.0000000000
+0.0000000000
+0.0000000000
+0.0000000000
+0.0000000000
+0.0000000000
+0.0000000000
+0.0000000000
+1.0000000000
+4.0000000000
+9.4200000000
+1.1200000000
+1.1200000000
+12.3420000000
+1.1200000000
+1.1220000000
+15376.0000000000
+15650.0000000000
+1575639.9500000000
+9.4200000000
+9.4200000000
+12.5600000000
+1.0000000000
+1524157875171467887.5019052100
+1524157875171467876.3907942000
 PREHOOK: query: EXPLAIN SELECT key * (value/2) FROM DECIMAL_UDF
 PREHOOK: type: QUERY
 POSTHOOK: query: EXPLAIN SELECT key * (value/2) FROM DECIMAL_UDF
@@ -1220,40 +1220,40 @@ POSTHOOK: query: SELECT key / key FROM DECIMAL_UDF 
WHERE key is not null and key
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@decimal_udf
 #### A masked pattern was here ####
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
+1.000000000000000000000000
+1.000000000000000000000000
+1.000000000000000000000000
+1.000000000000000000000000
+1.000000000000000000000000
+1.000000000000000000000000
+1.000000000000000000000000
+1.000000000000000000000000
+1.000000000000000000000000
+1.000000000000000000000000
+1.000000000000000000000000
+1.000000000000000000000000
+1.000000000000000000000000
+1.000000000000000000000000
+1.000000000000000000000000
+1.000000000000000000000000
+1.000000000000000000000000
+1.000000000000000000000000
+1.000000000000000000000000
+1.000000000000000000000000
+1.000000000000000000000000
+1.000000000000000000000000
+1.000000000000000000000000
+1.000000000000000000000000
+1.000000000000000000000000
+1.000000000000000000000000
+1.000000000000000000000000
+1.000000000000000000000000
+1.000000000000000000000000
+1.000000000000000000000000
+1.000000000000000000000000
+1.000000000000000000000000
+1.000000000000000000000000
+1.000000000000000000000000
 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
@@ -1299,30 +1299,30 @@ POSTHOOK: query: SELECT key / value FROM DECIMAL_UDF 
WHERE value is not null and
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@decimal_udf
 #### A masked pattern was here ####
--1
-1
-1
-1
-1
-1
-1
-1
-1
+-1.000000000000000000000
+1.000000000000000000000
+1.000000000000000000000
+1.000000000000000000000
+1.000000000000000000000
+1.000000000000000000000
+1.000000000000000000000
+1.000000000000000000000
+1.000000000000000000000
 1.046666666666666666667
-1.12
-1.12
-0.102
-1.12
-1.122
-1
-1.0016
+1.120000000000000000000
+1.120000000000000000000
+0.102000000000000000000
+1.120000000000000000000
+1.122000000000000000000
+1.000000000000000000000
+1.001600000000000000000
 1.000390438247011952191
 1.046666666666666666667
 1.046666666666666666667
-0.785
-1
-1.0000000001
-1.00000000009999999271
+0.785000000000000000000
+1.000000000000000000000
+1.000000000100000000000
+1.000000000099999992710
 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
@@ -1516,44 +1516,44 @@ POSTHOOK: query: SELECT abs(key) FROM DECIMAL_UDF
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@decimal_udf
 #### A masked pattern was here ####
-4400
+4400.0000000000
 NULL
-0
-0
-100
-10
-1
-0.1
-0.01
-200
-20
-2
-0
-0.2
-0.02
-0.3
-0.33
-0.333
-0.3
-0.33
-0.333
-1
-2
-3.14
-1.12
-1.12
-1.122
-1.12
-1.122
-124
-125.2
-1255.49
-3.14
-3.14
-3.14
-1
-1234567890.123456789
-1234567890.12345678
+0.0000000000
+0.0000000000
+100.0000000000
+10.0000000000
+1.0000000000
+0.1000000000
+0.0100000000
+200.0000000000
+20.0000000000
+2.0000000000
+0.0000000000
+0.2000000000
+0.0200000000
+0.3000000000
+0.3300000000
+0.3330000000
+0.3000000000
+0.3300000000
+0.3330000000
+1.0000000000
+2.0000000000
+3.1400000000
+1.1200000000
+1.1200000000
+1.1220000000
+1.1200000000
+1.1220000000
+124.0000000000
+125.2000000000
+1255.4900000000
+3.1400000000
+3.1400000000
+3.1400000000
+1.0000000000
+1234567890.1234567890
+1234567890.1234567800
 PREHOOK: query: -- avg
 EXPLAIN SELECT value, sum(key) / count(key), avg(key), sum(key) FROM 
DECIMAL_UDF GROUP BY value ORDER BY value
 PREHOOK: type: QUERY
@@ -1643,23 +1643,23 @@ POSTHOOK: query: SELECT value, sum(key) / count(key), 
avg(key), sum(key) FROM DE
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@decimal_udf
 #### A masked pattern was here ####
--1234567890    -1234567890.123456789   -1234567890.123456789   
-1234567890.123456789
--1255  -1255.49        -1255.49        -1255.49
--11    -1.122  -1.122  -1.122
--1     -1.12   -1.12   -2.24
-0      0.02538461538461538461538       0.02538461538462        0.33
-1      1.0484  1.0484  5.242
-2      2       2       4
-3      3.14    3.14    9.42
-4      3.14    3.14    3.14
-10     10      10      10
-20     20      20      20
-100    100     100     100
-124    124     124     124
-125    125.2   125.2   125.2
-200    200     200     200
-4400   -4400   -4400   -4400
-1234567890     1234567890.12345678     1234567890.12345678     
1234567890.12345678
+-1234567890    -1234567890.12345678900000000000000     
-1234567890.12345678900000      -1234567890.1234567890
+-1255  -1255.49000000000000000000000   -1255.49000000000000    -1255.4900000000
+-11    -1.12200000000000000000000      -1.12200000000000       -1.1220000000
+-1     -1.12000000000000000000000      -1.12000000000000       -2.2400000000
+0      0.02538461538461538461538       0.02538461538462        0.3300000000
+1      1.04840000000000000000000       1.04840000000000        5.2420000000
+2      2.00000000000000000000000       2.00000000000000        4.0000000000
+3      3.14000000000000000000000       3.14000000000000        9.4200000000
+4      3.14000000000000000000000       3.14000000000000        3.1400000000
+10     10.00000000000000000000000      10.00000000000000       10.0000000000
+20     20.00000000000000000000000      20.00000000000000       20.0000000000
+100    100.00000000000000000000000     100.00000000000000      100.0000000000
+124    124.00000000000000000000000     124.00000000000000      124.0000000000
+125    125.20000000000000000000000     125.20000000000000      125.2000000000
+200    200.00000000000000000000000     200.00000000000000      200.0000000000
+4400   -4400.00000000000000000000000   -4400.00000000000000    -4400.0000000000
+1234567890     1234567890.12345678000000000000000      
1234567890.12345678000000       1234567890.1234567800
 PREHOOK: query: -- negative
 EXPLAIN SELECT -key FROM DECIMAL_UDF
 PREHOOK: type: QUERY
@@ -1704,44 +1704,44 @@ POSTHOOK: query: SELECT -key FROM DECIMAL_UDF
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@decimal_udf
 #### A masked pattern was here ####
-4400
+4400.0000000000
 NULL
-0
-0
--100
--10
--1
--0.1
--0.01
--200
--20
--2
-0
--0.2
--0.02
--0.3
--0.33
--0.333
-0.3
-0.33
-0.333
--1
--2
--3.14
-1.12
-1.12
-1.122
--1.12
--1.122
--124
--125.2
-1255.49
--3.14
--3.14
--3.14
--1
-1234567890.123456789
--1234567890.12345678
+0.0000000000
+0.0000000000
+-100.0000000000
+-10.0000000000
+-1.0000000000
+-0.1000000000
+-0.0100000000
+-200.0000000000
+-20.0000000000
+-2.0000000000
+0.0000000000
+-0.2000000000
+-0.0200000000
+-0.3000000000
+-0.3300000000
+-0.3330000000
+0.3000000000
+0.3300000000
+0.3330000000
+-1.0000000000
+-2.0000000000
+-3.1400000000
+1.1200000000
+1.1200000000
+1.1220000000
+-1.1200000000
+-1.1220000000
+-124.0000000000
+-125.2000000000
+1255.4900000000
+-3.1400000000
+-3.1400000000
+-3.1400000000
+-1.0000000000
+1234567890.1234567890
+-1234567890.1234567800
 PREHOOK: query: -- positive
 EXPLAIN SELECT +key FROM DECIMAL_UDF
 PREHOOK: type: QUERY
@@ -1773,44 +1773,44 @@ POSTHOOK: query: SELECT +key FROM DECIMAL_UDF
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@decimal_udf
 #### A masked pattern was here ####
--4400
+-4400.0000000000
 NULL
-0
-0
-100
-10
-1
-0.1
-0.01
-200
-20
-2
-0
-0.2
-0.02
-0.3
-0.33
-0.333
--0.3
--0.33
--0.333
-1
-2
-3.14
--1.12
--1.12
--1.122
-1.12
-1.122
-124
-125.2
--1255.49
-3.14
-3.14
-3.14
-1
--1234567890.123456789
-1234567890.12345678
+0.0000000000
+0.0000000000
+100.0000000000
+10.0000000000
+1.0000000000
+0.1000000000
+0.0100000000
+200.0000000000
+20.0000000000
+2.0000000000
+0.0000000000
+0.2000000000
+0.0200000000
+0.3000000000
+0.3300000000
+0.3330000000
+-0.3000000000
+-0.3300000000
+-0.3330000000
+1.0000000000
+2.0000000000
+3.1400000000
+-1.1200000000
+-1.1200000000
+-1.1220000000
+1.1200000000
+1.1220000000
+124.0000000000
+125.2000000000
+-1255.4900000000
+3.1400000000
+3.1400000000
+3.1400000000
+1.0000000000
+-1234567890.1234567890
+1234567890.1234567800
 PREHOOK: query: -- ceiling
 EXPlAIN SELECT CEIL(key) FROM DECIMAL_UDF
 PREHOOK: type: QUERY
@@ -2019,42 +2019,42 @@ POSTHOOK: query: SELECT ROUND(key, 2) FROM DECIMAL_UDF
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@decimal_udf
 #### A masked pattern was here ####
--4400
+-4400.00
 NULL
-0
-0
-100
-10
-1
-0.1
+0.00
+0.00
+100.00
+10.00
+1.00
+0.10
 0.01
-200
-20
-2
-0
-0.2
+200.00
+20.00
+2.00
+0.00
+0.20
 0.02
-0.3
+0.30
 0.33
 0.33
--0.3
+-0.30
 -0.33
 -0.33
-1
-2
+1.00
+2.00
 3.14
 -1.12
 -1.12
 -1.12
 1.12
 1.12
-124
-125.2
+124.00
+125.20
 -1255.49
 3.14
 3.14
 3.14
-1
+1.00
 -1234567890.12
 1234567890.12
 PREHOOK: query: -- power
@@ -2182,44 +2182,44 @@ POSTHOOK: query: SELECT (key + 1) % (key / 2) FROM 
DECIMAL_UDF
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@decimal_udf
 #### A masked pattern was here ####
--2199
+-2199.000000000000
 NULL
 NULL
 NULL
-1
-1
-0
-0
-0
-1
-1
-0
+1.000000000000
+1.000000000000
+0.000000000000
+0.000000000000
+0.000000000000
+1.000000000000
+1.000000000000
+0.000000000000
 NULL
-0
-0
-0.1
-0.01
-0.001
-0.1
-0.01
-0.001
-0
-0
-1
--0.12
--0.12
--0.122
-0.44
-0.439
-1
-1
--626.745
-1
-1
-1
-0
--617283944.0617283945
-1
+0.000000000000
+0.000000000000
+0.100000000000
+0.010000000000
+0.001000000000
+0.100000000000
+0.010000000000
+0.001000000000
+0.000000000000
+0.000000000000
+1.000000000000
+-0.120000000000
+-0.120000000000
+-0.122000000000
+0.440000000000
+0.439000000000
+1.000000000000
+1.000000000000
+-626.745000000000
+1.000000000000
+1.000000000000
+1.000000000000
+0.000000000000
+-617283944.061728394500
+1.000000000000
 PREHOOK: query: -- stddev, var
 EXPLAIN SELECT value, stddev(key), variance(key) FROM DECIMAL_UDF GROUP BY 
value
 PREHOOK: type: QUERY
@@ -2498,7 +2498,7 @@ POSTHOOK: query: SELECT MIN(key) FROM DECIMAL_UDF
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@decimal_udf
 #### A masked pattern was here ####
--1234567890.123456789
+-1234567890.1234567890
 PREHOOK: query: -- max
 EXPLAIN SELECT MAX(key) FROM DECIMAL_UDF
 PREHOOK: type: QUERY
@@ -2558,7 +2558,7 @@ POSTHOOK: query: SELECT MAX(key) FROM DECIMAL_UDF
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@decimal_udf
 #### A masked pattern was here ####
-1234567890.12345678
+1234567890.1234567800
 PREHOOK: query: -- count
 EXPLAIN SELECT COUNT(key) FROM DECIMAL_UDF
 PREHOOK: type: QUERY

http://git-wip-us.apache.org/repos/asf/hive/blob/3228ba7c/ql/src/test/results/clientpositive/vector_reduce_groupby_decimal.q.out
----------------------------------------------------------------------
diff --git 
a/ql/src/test/results/clientpositive/vector_reduce_groupby_decimal.q.out 
b/ql/src/test/results/clientpositive/vector_reduce_groupby_decimal.q.out
index 77dc175..5352885 100644
--- a/ql/src/test/results/clientpositive/vector_reduce_groupby_decimal.q.out
+++ b/ql/src/test/results/clientpositive/vector_reduce_groupby_decimal.q.out
@@ -113,56 +113,56 @@ LIMIT 50
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@decimal_test
 #### A masked pattern was here ####
--1073051226    -7382.0 -4409.2486486486        -5280.969230769231      
-4409.2486486486
--1072081801    8373.0  5001.1702702703 5989.915384615385       5001.1702702703
--1072076362    -5470.0 -3267.2162162162        -3913.1538461538466     
-3267.2162162162
--1070883071    -741.0  -442.5972972973 -530.1  -442.5972972973
--1070551679    -947.0  -565.6405405405 -677.4692307692308      -565.6405405405
--1069512165    11417.0 6819.3432432432 8167.546153846154       6819.3432432432
--1069109166    8390.0  5011.3243243243 6002.076923076923       5011.3243243243
--1068623584    -14005.0        -8365.1486486486        -10018.961538461539     
-8365.1486486486
--1067386090    -3977.0 -2375.4513513514        -2845.084615384616      
-2375.4513513514
--1066922682    -9987.0 -5965.2081081081        -7144.546153846154      
-5965.2081081081
--1066226047    -9439.0 -5637.8891891892        -6752.515384615385      
-5637.8891891892
--1065117869    2538.0  1515.9405405405 1815.646153846154       1515.9405405405
--1064949302    6454.0  3854.9567567568 4617.092307692308       3854.9567567568
--1063498122    -11480.0        -6856.972972973 -8212.615384615387      
-6856.972972973
--1062973443    10541.0 6296.1108108108 7540.869230769231       6296.1108108108
--1061614989    -4234.0 -2528.9567567568        -3028.938461538462      
-2528.9567567568
--1061057428    -1085.0 -648.0675675676 -776.1923076923077      -648.0675675676
--1059941909    8782.0  5245.4648648649 6282.507692307693       5245.4648648649
--1059338191    7322.0  4373.4108108108 5238.046153846154       4373.4108108108
--1059047258    12452.0 7437.5459459459 8907.969230769231       7437.5459459459
--1056684111    13991.0 8356.7864864865 10008.946153846155      8356.7864864865
--1055945837    13690.0 8177    9793.615384615387       8177
--1055669248    2570.0  1535.0540540541 1838.538461538462       1535.0540540541
--1055316250    -14990.0        -8953.4864864865        -10723.615384615385     
-8953.4864864865
--1053385587    14504.0 8663.2  10375.938461538462      8663.2
--1053238077    -3704.0 -2212.3891891892        -2649.784615384616      
-2212.3891891892
--1052745800    -12404.0        -7408.8756756757        -8873.630769230771      
-7408.8756756757
--1052322972    -7433.0 -4439.7108108108        -5317.453846153847      
-4439.7108108108
--1050684541    -8261.0 -4934.272972973 -5909.792307692308      -4934.272972973
--1050657303    -6999.0 -4180.4837837838        -5006.976923076923      
-4180.4837837838
--1050165799    8634.0  5157.0648648649 6176.63076923077        5157.0648648649
+-1073051226    -7382.0 -4409.2486486486        -5280.96923076923100    
-4409.2486486486
+-1072081801    8373.0  5001.1702702703 5989.91538461538500     5001.1702702703
+-1072076362    -5470.0 -3267.2162162162        -3913.15384615384660    
-3267.2162162162
+-1070883071    -741.0  -442.5972972973 -530.10000000000000     -442.5972972973
+-1070551679    -947.0  -565.6405405405 -677.46923076923080     -565.6405405405
+-1069512165    11417.0 6819.3432432432 8167.54615384615400     6819.3432432432
+-1069109166    8390.0  5011.3243243243 6002.07692307692300     5011.3243243243
+-1068623584    -14005.0        -8365.1486486486        -10018.96153846153900   
-8365.1486486486
+-1067386090    -3977.0 -2375.4513513514        -2845.08461538461600    
-2375.4513513514
+-1066922682    -9987.0 -5965.2081081081        -7144.54615384615400    
-5965.2081081081
+-1066226047    -9439.0 -5637.8891891892        -6752.51538461538500    
-5637.8891891892
+-1065117869    2538.0  1515.9405405405 1815.64615384615400     1515.9405405405
+-1064949302    6454.0  3854.9567567568 4617.09230769230800     3854.9567567568
+-1063498122    -11480.0        -6856.9729729730        -8212.61538461538700    
-6856.9729729730
+-1062973443    10541.0 6296.1108108108 7540.86923076923100     6296.1108108108
+-1061614989    -4234.0 -2528.9567567568        -3028.93846153846200    
-2528.9567567568
+-1061057428    -1085.0 -648.0675675676 -776.19230769230770     -648.0675675676
+-1059941909    8782.0  5245.4648648649 6282.50769230769300     5245.4648648649
+-1059338191    7322.0  4373.4108108108 5238.04615384615400     4373.4108108108
+-1059047258    12452.0 7437.5459459459 8907.96923076923100     7437.5459459459
+-1056684111    13991.0 8356.7864864865 10008.94615384615500    8356.7864864865
+-1055945837    13690.0 8177.0000000000 9793.61538461538700     8177.0000000000
+-1055669248    2570.0  1535.0540540541 1838.53846153846200     1535.0540540541
+-1055316250    -14990.0        -8953.4864864865        -10723.61538461538500   
-8953.4864864865
+-1053385587    14504.0 8663.2000000000 10375.93846153846200    8663.2000000000
+-1053238077    -3704.0 -2212.3891891892        -2649.78461538461600    
-2212.3891891892
+-1052745800    -12404.0        -7408.8756756757        -8873.63076923077100    
-7408.8756756757
+-1052322972    -7433.0 -4439.7108108108        -5317.45384615384700    
-4439.7108108108
+-1050684541    -8261.0 -4934.2729729730        -5909.79230769230800    
-4934.2729729730
+-1050657303    -6999.0 -4180.4837837838        -5006.97692307692300    
-4180.4837837838
+-1050165799    8634.0  5157.0648648649 6176.63076923077000     5157.0648648649
 -1048934049    -524.0  -312.9837837838 -374.86153846153854     -312.9837837838
--1046399794    4130.0  2466.8378378378 2954.5384615384614      2466.8378378378
--1045867222    -8034.0 -4798.6864864865        -5747.400000000001      
-4798.6864864865
--1045196363    -5039.0 -3009.7810810811        -3604.823076923077      
-3009.7810810811
--1045181724    -5706.0 -3408.1783783784        -4081.9846153846156     
-3408.1783783784
--1045087657    -5865.0 -3503.1486486486        -4195.7307692307695     
-3503.1486486486
--1044207190    5381.0  3214.0567567568 3849.4846153846156      3214.0567567568
--1044093617    -3422.0 -2043.9513513514        -2448.046153846154      
-2043.9513513514
--1043573508    16216.0 9685.772972973  11600.676923076924      9685.772972973
--1043132597    12302.0 7347.9513513514 8800.66153846154        7347.9513513514
--1043082182    9180.0  5483.1891891892 6567.2307692307695      5483.1891891892
--1042805968    5133.0  3065.927027027  3672.0692307692307      3065.927027027
--1042712895    9296.0  5552.4756756757 6650.215384615385       5552.4756756757
--1042396242    9583.0  5723.9  6855.53076923077        5723.9
--1041734429    -836.0  -499.3405405405 -598.0615384615385      -499.3405405405
--1041391389    -12970.0        -7746.9459459459        -9278.538461538463      
-7746.9459459459
--1041252354    756.0   451.5567567568  540.8307692307692       451.5567567568
--1039776293    13704.0 8185.3621621622 9803.630769230771       8185.3621621622
--1039762548    -3802.0 -2270.9243243243        -2719.8923076923083     
-2270.9243243243
+-1046399794    4130.0  2466.8378378378 2954.53846153846140     2466.8378378378
+-1045867222    -8034.0 -4798.6864864865        -5747.40000000000100    
-4798.6864864865
+-1045196363    -5039.0 -3009.7810810811        -3604.82307692307700    
-3009.7810810811
+-1045181724    -5706.0 -3408.1783783784        -4081.98461538461560    
-3408.1783783784
+-1045087657    -5865.0 -3503.1486486486        -4195.73076923076950    
-3503.1486486486
+-1044207190    5381.0  3214.0567567568 3849.48461538461560     3214.0567567568
+-1044093617    -3422.0 -2043.9513513514        -2448.04615384615400    
-2043.9513513514
+-1043573508    16216.0 9685.7729729730 11600.67692307692400    9685.7729729730
+-1043132597    12302.0 7347.9513513514 8800.66153846154000     7347.9513513514
+-1043082182    9180.0  5483.1891891892 6567.23076923076950     5483.1891891892
+-1042805968    5133.0  3065.9270270270 3672.06923076923070     3065.9270270270
+-1042712895    9296.0  5552.4756756757 6650.21538461538500     5552.4756756757
+-1042396242    9583.0  5723.9000000000 6855.53076923077000     5723.9000000000
+-1041734429    -836.0  -499.3405405405 -598.06153846153850     -499.3405405405
+-1041391389    -12970.0        -7746.9459459459        -9278.53846153846300    
-7746.9459459459
+-1041252354    756.0   451.5567567568  540.83076923076920      451.5567567568
+-1039776293    13704.0 8185.3621621622 9803.63076923077100     8185.3621621622
+-1039762548    -3802.0 -2270.9243243243        -2719.89230769230830    
-2270.9243243243
 PREHOOK: query: SELECT sum(hash(*))
   FROM (SELECT cint, cdouble, cdecimal1, cdecimal2, min(cdecimal1) as 
min_decimal1 FROM decimal_test
         WHERE cdecimal1 is not null and cdecimal2 is not null

http://git-wip-us.apache.org/repos/asf/hive/blob/3228ba7c/ql/src/test/results/clientpositive/windowing_decimal.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/windowing_decimal.q.out 
b/ql/src/test/results/clientpositive/windowing_decimal.q.out
index 60563ba..b157a23 100644
--- a/ql/src/test/results/clientpositive/windowing_decimal.q.out
+++ b/ql/src/test/results/clientpositive/windowing_decimal.q.out
@@ -57,32 +57,32 @@ from part_dec
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@part_dec
 #### A masked pattern was here ####
-Manufacturer#1 1173.15 1173.15 2346.3
-Manufacturer#1 1173.15 1173.15 2346.3
-Manufacturer#1 1414.42 1173.15 3760.72
-Manufacturer#1 1602.59 1173.15 5363.31
-Manufacturer#1 1632.66 1173.15 6995.97
-Manufacturer#1 1753.76 1173.15 8749.73
-Manufacturer#2 1690.68 1690.68 1690.68
-Manufacturer#2 1698.66 1690.68 3389.34
-Manufacturer#2 1701.6  1690.68 5090.94
-Manufacturer#2 1800.7  1690.68 6891.64
-Manufacturer#2 2031.98 1690.68 8923.62
-Manufacturer#3 1190.27 1190.27 1190.27
-Manufacturer#3 1337.29 1190.27 2527.56
-Manufacturer#3 1410.39 1190.27 3937.95
-Manufacturer#3 1671.68 1190.27 5609.63
-Manufacturer#3 1922.98 1190.27 7532.61
-Manufacturer#4 1206.26 1206.26 1206.26
-Manufacturer#4 1290.35 1206.26 2496.61
-Manufacturer#4 1375.42 1206.26 3872.03
-Manufacturer#4 1620.67 1206.26 5492.7
-Manufacturer#4 1844.92 1206.26 7337.62
-Manufacturer#5 1018.1  1018.1  1018.1
-Manufacturer#5 1464.48 1018.1  2482.58
-Manufacturer#5 1611.66 1018.1  4094.24
-Manufacturer#5 1788.73 1018.1  5882.97
-Manufacturer#5 1789.69 1018.1  7672.66
+Manufacturer#1 1173.150        1173.150        2346.300
+Manufacturer#1 1173.150        1173.150        2346.300
+Manufacturer#1 1414.420        1173.150        3760.720
+Manufacturer#1 1602.590        1173.150        5363.310
+Manufacturer#1 1632.660        1173.150        6995.970
+Manufacturer#1 1753.760        1173.150        8749.730
+Manufacturer#2 1690.680        1690.680        1690.680
+Manufacturer#2 1698.660        1690.680        3389.340
+Manufacturer#2 1701.600        1690.680        5090.940
+Manufacturer#2 1800.700        1690.680        6891.640
+Manufacturer#2 2031.980        1690.680        8923.620
+Manufacturer#3 1190.270        1190.270        1190.270
+Manufacturer#3 1337.290        1190.270        2527.560
+Manufacturer#3 1410.390        1190.270        3937.950
+Manufacturer#3 1671.680        1190.270        5609.630
+Manufacturer#3 1922.980        1190.270        7532.610
+Manufacturer#4 1206.260        1206.260        1206.260
+Manufacturer#4 1290.350        1206.260        2496.610
+Manufacturer#4 1375.420        1206.260        3872.030
+Manufacturer#4 1620.670        1206.260        5492.700
+Manufacturer#4 1844.920        1206.260        7337.620
+Manufacturer#5 1018.100        1018.100        1018.100
+Manufacturer#5 1464.480        1018.100        2482.580
+Manufacturer#5 1611.660        1018.100        4094.240
+Manufacturer#5 1788.730        1018.100        5882.970
+Manufacturer#5 1789.690        1018.100        7672.660
 PREHOOK: query: select p_mfgr, p_retailprice, 
 first_value(p_retailprice) over(partition by p_mfgr order by p_retailprice 
range between 5 preceding and current row) ,
 sum(p_retailprice) over(partition by p_mfgr order by p_retailprice range 
between 5 preceding and current row)
@@ -97,29 +97,29 @@ from part_dec
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@part_dec
 #### A masked pattern was here ####
-Manufacturer#1 1173.15 1173.15 2346.3
-Manufacturer#1 1173.15 1173.15 2346.3
-Manufacturer#1 1414.42 1414.42 1414.42
-Manufacturer#1 1602.59 1602.59 1602.59
-Manufacturer#1 1632.66 1632.66 1632.66
-Manufacturer#1 1753.76 1753.76 1753.76
-Manufacturer#2 1690.68 1690.68 1690.68
-Manufacturer#2 1698.66 1698.66 1698.66
-Manufacturer#2 1701.6  1698.66 3400.26
-Manufacturer#2 1800.7  1800.7  1800.7
-Manufacturer#2 2031.98 2031.98 2031.98
-Manufacturer#3 1190.27 1190.27 1190.27
-Manufacturer#3 1337.29 1337.29 1337.29
-Manufacturer#3 1410.39 1410.39 1410.39
-Manufacturer#3 1671.68 1671.68 1671.68
-Manufacturer#3 1922.98 1922.98 1922.98
-Manufacturer#4 1206.26 1206.26 1206.26
-Manufacturer#4 1290.35 1290.35 1290.35
-Manufacturer#4 1375.42 1375.42 1375.42
-Manufacturer#4 1620.67 1620.67 1620.67
-Manufacturer#4 1844.92 1844.92 1844.92
-Manufacturer#5 1018.1  1018.1  1018.1
-Manufacturer#5 1464.48 1464.48 1464.48
-Manufacturer#5 1611.66 1611.66 1611.66
-Manufacturer#5 1788.73 1788.73 1788.73
-Manufacturer#5 1789.69 1788.73 3578.42
+Manufacturer#1 1173.150        1173.150        2346.300
+Manufacturer#1 1173.150        1173.150        2346.300
+Manufacturer#1 1414.420        1414.420        1414.420
+Manufacturer#1 1602.590        1602.590        1602.590
+Manufacturer#1 1632.660        1632.660        1632.660
+Manufacturer#1 1753.760        1753.760        1753.760
+Manufacturer#2 1690.680        1690.680        1690.680
+Manufacturer#2 1698.660        1698.660        1698.660
+Manufacturer#2 1701.600        1698.660        3400.260
+Manufacturer#2 1800.700        1800.700        1800.700
+Manufacturer#2 2031.980        2031.980        2031.980
+Manufacturer#3 1190.270        1190.270        1190.270
+Manufacturer#3 1337.290        1337.290        1337.290
+Manufacturer#3 1410.390        1410.390        1410.390
+Manufacturer#3 1671.680        1671.680        1671.680
+Manufacturer#3 1922.980        1922.980        1922.980
+Manufacturer#4 1206.260        1206.260        1206.260
+Manufacturer#4 1290.350        1290.350        1290.350
+Manufacturer#4 1375.420        1375.420        1375.420
+Manufacturer#4 1620.670        1620.670        1620.670
+Manufacturer#4 1844.920        1844.920        1844.920
+Manufacturer#5 1018.100        1018.100        1018.100
+Manufacturer#5 1464.480        1464.480        1464.480
+Manufacturer#5 1611.660        1611.660        1611.660
+Manufacturer#5 1788.730        1788.730        1788.730
+Manufacturer#5 1789.690        1788.730        3578.420

http://git-wip-us.apache.org/repos/asf/hive/blob/3228ba7c/ql/src/test/results/clientpositive/windowing_navfn.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/windowing_navfn.q.out 
b/ql/src/test/results/clientpositive/windowing_navfn.q.out
index ae7d95a..a79fccc 100644
--- a/ql/src/test/results/clientpositive/windowing_navfn.q.out
+++ b/ql/src/test/results/clientpositive/windowing_navfn.q.out
@@ -287,13 +287,13 @@ POSTHOOK: Input: default@over10k
 65536  98.42
 65536  0.93
 65536  83.48
-65536  75.7
+65536  75.70
 65536  88.04
 65536  94.09
 65536  33.45
 65536  44.41
 65536  22.15
-65536  20.5
+65536  20.50
 65536  58.86
 65536  30.91
 65536  74.47
@@ -310,9 +310,9 @@ POSTHOOK: Input: default@over10k
 65536  80.26
 65536  35.07
 65536  95.88
-65536  30.6
+65536  30.60
 65536  46.97
-65536  58.8
+65536  58.80
 65536  5.72
 65536  29.27
 65536  62.25
@@ -336,7 +336,7 @@ POSTHOOK: Input: default@over10k
 65537  35.86
 65537  47.75
 65537  1.12
-65537  52.9
+65537  52.90
 65537  53.92
 65537  43.45
 65537  7.52
@@ -350,20 +350,20 @@ POSTHOOK: Input: default@over10k
 65537  56.48
 65537  83.21
 65537  56.52
-65537  36.6
-65537  59.7
+65537  36.60
+65537  59.70
 65537  80.14
-65537  66.3
+65537  66.30
 65537  94.87
 65537  40.92
-65537  25.2
+65537  25.20
 65537  7.36
 65538  NULL
 65538  53.35
 65538  54.64
 65538  76.67
 65538  15.17
-65538  1.2
+65538  1.20
 65538  13.71
 65538  81.59
 65538  43.33

http://git-wip-us.apache.org/repos/asf/hive/blob/3228ba7c/ql/src/test/results/clientpositive/windowing_rank.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/windowing_rank.q.out 
b/ql/src/test/results/clientpositive/windowing_rank.q.out
index 6a74a8e..67975f3 100644
--- a/ql/src/test/results/clientpositive/windowing_rank.q.out
+++ b/ql/src/test/results/clientpositive/windowing_rank.q.out
@@ -508,16 +508,16 @@ where rnk =  1 limit 10
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@over10k
 #### A masked pattern was here ####
-2013-03-01 09:11:58.70307      0.5     1
-2013-03-01 09:11:58.70307      0.5     1
-2013-03-01 09:11:58.70307      0.5     1
-2013-03-01 09:11:58.70307      0.5     1
-2013-03-01 09:11:58.70307      0.5     1
-2013-03-01 09:11:58.70307      0.5     1
-2013-03-01 09:11:58.70307      0.5     1
-2013-03-01 09:11:58.70307      0.5     1
-2013-03-01 09:11:58.70307      0.5     1
-2013-03-01 09:11:58.70307      0.5     1
+2013-03-01 09:11:58.70307      0.50    1
+2013-03-01 09:11:58.70307      0.50    1
+2013-03-01 09:11:58.70307      0.50    1
+2013-03-01 09:11:58.70307      0.50    1
+2013-03-01 09:11:58.70307      0.50    1
+2013-03-01 09:11:58.70307      0.50    1
+2013-03-01 09:11:58.70307      0.50    1
+2013-03-01 09:11:58.70307      0.50    1
+2013-03-01 09:11:58.70307      0.50    1
+2013-03-01 09:11:58.70307      0.50    1
 PREHOOK: query: select ts, dec, rnk
 from
   (select ts, dec,
@@ -546,16 +546,16 @@ where dec = 89.5 limit 10
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@over10k
 #### A masked pattern was here ####
-2013-03-01 09:11:58.703124     89.5    1
-2013-03-01 09:11:58.703124     89.5    1
-2013-03-01 09:11:58.703124     89.5    1
-2013-03-01 09:11:58.703124     89.5    1
-2013-03-01 09:11:58.703124     89.5    1
-2013-03-01 09:11:58.703124     89.5    1
-2013-03-01 09:11:58.703124     89.5    1
-2013-03-01 09:11:58.703124     89.5    1
-2013-03-01 09:11:58.703124     89.5    1
-2013-03-01 09:11:58.703124     89.5    1
+2013-03-01 09:11:58.703124     89.50   1
+2013-03-01 09:11:58.703124     89.50   1
+2013-03-01 09:11:58.703124     89.50   1
+2013-03-01 09:11:58.703124     89.50   1
+2013-03-01 09:11:58.703124     89.50   1
+2013-03-01 09:11:58.703124     89.50   1
+2013-03-01 09:11:58.703124     89.50   1
+2013-03-01 09:11:58.703124     89.50   1
+2013-03-01 09:11:58.703124     89.50   1
+2013-03-01 09:11:58.703124     89.50   1
 PREHOOK: query: select ts, dec, rnk
 from
   (select ts, dec,
@@ -586,13 +586,13 @@ where rnk = 1 limit 10
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@over10k
 #### A masked pattern was here ####
-2013-03-01 09:11:58.70307      37.3    1
-2013-03-01 09:11:58.70307      37.3    1
-2013-03-01 09:11:58.70307      37.3    1
-2013-03-01 09:11:58.70307      37.3    1
-2013-03-01 09:11:58.70307      37.3    1
-2013-03-01 09:11:58.70307      37.3    1
-2013-03-01 09:11:58.70307      37.3    1
-2013-03-01 09:11:58.70307      37.3    1
-2013-03-01 09:11:58.70307      37.3    1
-2013-03-01 09:11:58.70307      37.3    1
+2013-03-01 09:11:58.70307      37.30   1
+2013-03-01 09:11:58.70307      37.30   1
+2013-03-01 09:11:58.70307      37.30   1
+2013-03-01 09:11:58.70307      37.30   1
+2013-03-01 09:11:58.70307      37.30   1
+2013-03-01 09:11:58.70307      37.30   1
+2013-03-01 09:11:58.70307      37.30   1
+2013-03-01 09:11:58.70307      37.30   1
+2013-03-01 09:11:58.70307      37.30   1
+2013-03-01 09:11:58.70307      37.30   1

http://git-wip-us.apache.org/repos/asf/hive/blob/3228ba7c/ql/src/test/results/clientpositive/windowing_windowspec3.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/windowing_windowspec3.q.out 
b/ql/src/test/results/clientpositive/windowing_windowspec3.q.out
index aeb5adc..e311cf9 100644
--- a/ql/src/test/results/clientpositive/windowing_windowspec3.q.out
+++ b/ql/src/test/results/clientpositive/windowing_windowspec3.q.out
@@ -215,18 +215,18 @@ POSTHOOK: type: QUERY
 POSTHOOK: Input: default@emp
 #### A masked pattern was here ####
 10     7839    NULL    5000.0  5000.0  5000.0  NULL    NULL    1687.5  5000.0
-10     7782    50      2450.0  2450.0  1687.5  NULL    1500.0  NULL    2350.0
-10     7934    100     1300.0  1875.0  1687.5  NULL    NULL    NULL    2350.0
-10     7987    150.5   1500.0  1750.0  1687.5  NULL    NULL    NULL    2350.0
-10     7988    200     1500.0  1687.5  1687.5  2450.0  NULL    NULL    2350.0
+10     7782    50.00   2450.0  2450.0  1687.5  NULL    1500.0  NULL    2350.0
+10     7934    100.00  1300.0  1875.0  1687.5  NULL    NULL    NULL    2350.0
+10     7987    150.50  1500.0  1750.0  1687.5  NULL    NULL    NULL    2350.0
+10     7988    200.00  1500.0  1687.5  1687.5  2450.0  NULL    NULL    2350.0
 20     7788    NULL    3000.0  1975.0  1975.0  NULL    NULL    2975.0  1975.0
 20     7902    NULL    3000.0  1975.0  1975.0  NULL    NULL    2975.0  1975.0
 20     7876    NULL    1100.0  1975.0  1975.0  NULL    NULL    2975.0  1975.0
 20     7369    NULL    800.0   1975.0  1975.0  NULL    NULL    2975.0  1975.0
-20     7566    100     2975.0  2975.0  2975.0  NULL    NULL    NULL    2175.0
+20     7566    100.00  2975.0  2975.0  2975.0  NULL    NULL    NULL    2175.0
 30     7900    NULL    950.0   1900.0  1900.0  NULL    NULL    1400.0  1900.0
 30     7698    NULL    2850.0  1900.0  1900.0  NULL    NULL    1400.0  1900.0
-30     7499    200.5   1600.0  1600.0  1450.0  NULL    NULL    1250.0  1630.0
-30     7844    300     1500.0  1550.0  1400.0  NULL    1250.0  NULL    
1566.6666666666667
-30     7521    300.5   1250.0  1450.0  1400.0  NULL    1250.0  NULL    
1566.6666666666667
-30     7654    500     1250.0  1333.3333333333333      1333.3333333333333      
1375.0  NULL    NULL    1566.6666666666667
+30     7499    200.50  1600.0  1600.0  1450.0  NULL    NULL    1250.0  1630.0
+30     7844    300.00  1500.0  1550.0  1400.0  NULL    1250.0  NULL    
1566.6666666666667
+30     7521    300.50  1250.0  1450.0  1400.0  NULL    1250.0  NULL    
1566.6666666666667
+30     7654    500.00  1250.0  1333.3333333333333      1333.3333333333333      
1375.0  NULL    NULL    1566.6666666666667

http://git-wip-us.apache.org/repos/asf/hive/blob/3228ba7c/serde/src/java/org/apache/hadoop/hive/serde2/binarysortable/fast/BinarySortableSerializeWrite.java
----------------------------------------------------------------------
diff --git 
a/serde/src/java/org/apache/hadoop/hive/serde2/binarysortable/fast/BinarySortableSerializeWrite.java
 
b/serde/src/java/org/apache/hadoop/hive/serde2/binarysortable/fast/BinarySortableSerializeWrite.java
index 709e53f..9ea6e91 100644
--- 
a/serde/src/java/org/apache/hadoop/hive/serde2/binarysortable/fast/BinarySortableSerializeWrite.java
+++ 
b/serde/src/java/org/apache/hadoop/hive/serde2/binarysortable/fast/BinarySortableSerializeWrite.java
@@ -366,7 +366,7 @@ public final class BinarySortableSerializeWrite implements 
SerializeWrite {
    * DECIMAL.
    */
   @Override
-  public void writeHiveDecimal(HiveDecimal dec) throws IOException {
+  public void writeHiveDecimal(HiveDecimal dec, int scale) throws IOException {
     final boolean invert = columnSortOrderIsDesc[++index];
 
     // This field is not a null.

http://git-wip-us.apache.org/repos/asf/hive/blob/3228ba7c/serde/src/java/org/apache/hadoop/hive/serde2/fast/SerializeWrite.java
----------------------------------------------------------------------
diff --git 
a/serde/src/java/org/apache/hadoop/hive/serde2/fast/SerializeWrite.java 
b/serde/src/java/org/apache/hadoop/hive/serde2/fast/SerializeWrite.java
index e6fb8b6..21daa8b 100644
--- a/serde/src/java/org/apache/hadoop/hive/serde2/fast/SerializeWrite.java
+++ b/serde/src/java/org/apache/hadoop/hive/serde2/fast/SerializeWrite.java
@@ -151,5 +151,5 @@ public interface SerializeWrite {
   /*
    * DECIMAL.
    */
-  void writeHiveDecimal(HiveDecimal dec) throws IOException;
+  void writeHiveDecimal(HiveDecimal dec, int scale) throws IOException;
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/3228ba7c/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyHiveDecimal.java
----------------------------------------------------------------------
diff --git 
a/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyHiveDecimal.java 
b/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyHiveDecimal.java
index 40601c0..4e82e9b 100644
--- a/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyHiveDecimal.java
+++ b/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyHiveDecimal.java
@@ -102,12 +102,12 @@ public class LazyHiveDecimal extends 
LazyPrimitive<LazyHiveDecimalObjectInspecto
    * @param hiveDecimal
    * @throws IOException
    */
-  public static void writeUTF8(OutputStream outputStream, HiveDecimal 
hiveDecimal)
+  public static void writeUTF8(OutputStream outputStream, HiveDecimal 
hiveDecimal, int scale)
     throws IOException {
     if (hiveDecimal == null) {
       outputStream.write(nullBytes);
     } else {
-      ByteBuffer b = Text.encode(hiveDecimal.toString());
+      ByteBuffer b = Text.encode(hiveDecimal.toFormatString(scale));
       outputStream.write(b.array(), 0, b.limit());
     }
   }

http://git-wip-us.apache.org/repos/asf/hive/blob/3228ba7c/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyUtils.java
----------------------------------------------------------------------
diff --git a/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyUtils.java 
b/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyUtils.java
index d6b2219..29d6ad8 100644
--- a/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyUtils.java
+++ b/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyUtils.java
@@ -304,8 +304,9 @@ public final class LazyUtils {
       break;
     }
     case DECIMAL: {
+      HiveDecimalObjectInspector decimalOI = (HiveDecimalObjectInspector) oi;
       LazyHiveDecimal.writeUTF8(out,
-        ((HiveDecimalObjectInspector) oi).getPrimitiveJavaObject(o));
+        decimalOI.getPrimitiveJavaObject(o), decimalOI.scale());
       break;
     }
     default: {

http://git-wip-us.apache.org/repos/asf/hive/blob/3228ba7c/serde/src/java/org/apache/hadoop/hive/serde2/lazy/fast/LazySimpleSerializeWrite.java
----------------------------------------------------------------------
diff --git 
a/serde/src/java/org/apache/hadoop/hive/serde2/lazy/fast/LazySimpleSerializeWrite.java
 
b/serde/src/java/org/apache/hadoop/hive/serde2/lazy/fast/LazySimpleSerializeWrite.java
index 986d246..b64a803 100644
--- 
a/serde/src/java/org/apache/hadoop/hive/serde2/lazy/fast/LazySimpleSerializeWrite.java
+++ 
b/serde/src/java/org/apache/hadoop/hive/serde2/lazy/fast/LazySimpleSerializeWrite.java
@@ -20,7 +20,6 @@ package org.apache.hadoop.hive.serde2.lazy.fast;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
-import java.nio.charset.CharacterCodingException;
 import java.sql.Date;
 import java.sql.Timestamp;
 
@@ -34,7 +33,6 @@ import 
org.apache.hadoop.hive.common.type.HiveIntervalYearMonth;
 import org.apache.hadoop.hive.common.type.HiveVarchar;
 import org.apache.hadoop.hive.serde2.ByteStream.Output;
 import org.apache.hadoop.hive.serde2.io.DateWritable;
-import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable;
 import org.apache.hadoop.hive.serde2.io.HiveIntervalDayTimeWritable;
 import org.apache.hadoop.hive.serde2.io.HiveIntervalYearMonthWritable;
 import org.apache.hadoop.hive.serde2.io.TimestampWritable;
@@ -47,13 +45,6 @@ import org.apache.hadoop.hive.serde2.lazy.LazyLong;
 import org.apache.hadoop.hive.serde2.lazy.LazySerDeParameters;
 import org.apache.hadoop.hive.serde2.lazy.LazyTimestamp;
 import org.apache.hadoop.hive.serde2.lazy.LazyUtils;
-import 
org.apache.hadoop.hive.serde2.lazy.objectinspector.primitive.LazyObjectInspectorParameters;
-import org.apache.hadoop.hive.serde2.lazybinary.LazyBinaryUtils;
-import 
org.apache.hadoop.hive.serde2.objectinspector.primitive.ByteObjectInspector;
-import 
org.apache.hadoop.hive.serde2.objectinspector.primitive.DateObjectInspector;
-import 
org.apache.hadoop.hive.serde2.objectinspector.primitive.HiveDecimalObjectInspector;
-import 
org.apache.hadoop.hive.serde2.objectinspector.primitive.LongObjectInspector;
-import 
org.apache.hadoop.hive.serde2.objectinspector.primitive.TimestampObjectInspector;
 import org.apache.hadoop.hive.serde2.fast.SerializeWrite;
 import org.apache.hadoop.io.Text;
 import org.apache.hive.common.util.DateUtils;
@@ -506,13 +497,12 @@ public final class LazySimpleSerializeWrite implements 
SerializeWrite {
    * DECIMAL.
    */
   @Override
-  public void writeHiveDecimal(HiveDecimal v) throws IOException {
-
+  public void writeHiveDecimal(HiveDecimal v, int scale) throws IOException {
     if (index > 0) {
       output.write(separator);
     }
 
-    LazyHiveDecimal.writeUTF8(output, v);
+    LazyHiveDecimal.writeUTF8(output, v, scale);
 
     index++;
   }

http://git-wip-us.apache.org/repos/asf/hive/blob/3228ba7c/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/fast/LazyBinarySerializeWrite.java
----------------------------------------------------------------------
diff --git 
a/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/fast/LazyBinarySerializeWrite.java
 
b/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/fast/LazyBinarySerializeWrite.java
index ebe4181..8f81df6 100644
--- 
a/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/fast/LazyBinarySerializeWrite.java
+++ 
b/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/fast/LazyBinarySerializeWrite.java
@@ -713,7 +713,7 @@ public class LazyBinarySerializeWrite implements 
SerializeWrite {
    * DECIMAL.
    */
   @Override
-  public void writeHiveDecimal(HiveDecimal v) throws IOException {
+  public void writeHiveDecimal(HiveDecimal v, int scale) throws IOException {
 
     // Every 8 fields we write a NULL byte.
     if ((fieldIndex % 8) == 0) {

http://git-wip-us.apache.org/repos/asf/hive/blob/3228ba7c/serde/src/test/org/apache/hadoop/hive/serde2/VerifyFast.java
----------------------------------------------------------------------
diff --git a/serde/src/test/org/apache/hadoop/hive/serde2/VerifyFast.java 
b/serde/src/test/org/apache/hadoop/hive/serde2/VerifyFast.java
index fa46c9e..fc845a5 100644
--- a/serde/src/test/org/apache/hadoop/hive/serde2/VerifyFast.java
+++ b/serde/src/test/org/apache/hadoop/hive/serde2/VerifyFast.java
@@ -259,12 +259,12 @@ public class VerifyFast {
     }
   }
 
-  public static void serializeWrite(SerializeWrite serializeWrite, 
PrimitiveCategory primitiveCategory, Object object) throws IOException {
+  public static void serializeWrite(SerializeWrite serializeWrite, 
PrimitiveTypeInfo primitiveTypeInfo, Object object) throws IOException {
     if (object == null) {
       serializeWrite.writeNull();
       return;
     }
-    switch (primitiveCategory) {
+    switch (primitiveTypeInfo.getPrimitiveCategory()) {
       case BOOLEAN:
       {
         boolean value = (Boolean) object;
@@ -330,7 +330,8 @@ public class VerifyFast {
     case DECIMAL:
       {
         HiveDecimal value = (HiveDecimal) object;
-        serializeWrite.writeHiveDecimal(value);
+        DecimalTypeInfo decTypeInfo = (DecimalTypeInfo)primitiveTypeInfo;
+        serializeWrite.writeHiveDecimal(value, decTypeInfo.scale());
       }
       break;
     case DATE:
@@ -365,7 +366,7 @@ public class VerifyFast {
       }
       break;
     default:
-      throw new Error("Unknown primitive category " + 
primitiveCategory.name());
+      throw new Error("Unknown primitive category " + 
primitiveTypeInfo.getPrimitiveCategory().name());
     }
   }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/hive/blob/3228ba7c/serde/src/test/org/apache/hadoop/hive/serde2/binarysortable/TestBinarySortableFast.java
----------------------------------------------------------------------
diff --git 
a/serde/src/test/org/apache/hadoop/hive/serde2/binarysortable/TestBinarySortableFast.java
 
b/serde/src/test/org/apache/hadoop/hive/serde2/binarysortable/TestBinarySortableFast.java
index 4438bdc..ae476ae 100644
--- 
a/serde/src/test/org/apache/hadoop/hive/serde2/binarysortable/TestBinarySortableFast.java
+++ 
b/serde/src/test/org/apache/hadoop/hive/serde2/binarysortable/TestBinarySortableFast.java
@@ -62,8 +62,7 @@ public class TestBinarySortableFast extends TestCase {
       int[] perFieldWriteLengths = new 
int[MyTestPrimitiveClass.primitiveCount];
       for (int index = 0; index < MyTestPrimitiveClass.primitiveCount; 
index++) {
         Object object = t.getPrimitiveObject(index);
-        PrimitiveCategory primitiveCategory = t.getPrimitiveCategory(index);
-        VerifyFast.serializeWrite(binarySortableSerializeWrite, 
primitiveCategory, object);
+        VerifyFast.serializeWrite(binarySortableSerializeWrite, 
primitiveTypeInfoMap.get(t)[index], object);
         perFieldWriteLengths[index] = output.getLength();
       }
       perFieldWriteLengthsArray[i] = perFieldWriteLengths;

http://git-wip-us.apache.org/repos/asf/hive/blob/3228ba7c/serde/src/test/org/apache/hadoop/hive/serde2/lazy/TestLazySimpleFast.java
----------------------------------------------------------------------
diff --git 
a/serde/src/test/org/apache/hadoop/hive/serde2/lazy/TestLazySimpleFast.java 
b/serde/src/test/org/apache/hadoop/hive/serde2/lazy/TestLazySimpleFast.java
index 951d91a..7ebe7ae 100644
--- a/serde/src/test/org/apache/hadoop/hive/serde2/lazy/TestLazySimpleFast.java
+++ b/serde/src/test/org/apache/hadoop/hive/serde2/lazy/TestLazySimpleFast.java
@@ -61,8 +61,7 @@ public class TestLazySimpleFast extends TestCase {
 
       for (int index = 0; index < MyTestPrimitiveClass.primitiveCount; 
index++) {
         Object object = t.getPrimitiveObject(index);
-        PrimitiveCategory primitiveCategory = t.getPrimitiveCategory(index);
-        VerifyFast.serializeWrite(lazySimpleSerializeWrite, primitiveCategory, 
object);
+        VerifyFast.serializeWrite(lazySimpleSerializeWrite, 
primitiveTypeInfosArray[i][index], object);
       }
 
       BytesWritable bytesWritable = new BytesWritable();

http://git-wip-us.apache.org/repos/asf/hive/blob/3228ba7c/serde/src/test/org/apache/hadoop/hive/serde2/lazybinary/TestLazyBinaryFast.java
----------------------------------------------------------------------
diff --git 
a/serde/src/test/org/apache/hadoop/hive/serde2/lazybinary/TestLazyBinaryFast.java
 
b/serde/src/test/org/apache/hadoop/hive/serde2/lazybinary/TestLazyBinaryFast.java
index a169586..4032743 100644
--- 
a/serde/src/test/org/apache/hadoop/hive/serde2/lazybinary/TestLazyBinaryFast.java
+++ 
b/serde/src/test/org/apache/hadoop/hive/serde2/lazybinary/TestLazyBinaryFast.java
@@ -60,8 +60,7 @@ public class TestLazyBinaryFast extends TestCase {
 
       for (int index = 0; index < MyTestPrimitiveClass.primitiveCount; 
index++) {
         Object object = t.getPrimitiveObject(index);
-        PrimitiveCategory primitiveCategory = t.getPrimitiveCategory(index);
-        VerifyFast.serializeWrite(lazyBinarySerializeWrite, primitiveCategory, 
object);
+        VerifyFast.serializeWrite(lazyBinarySerializeWrite, 
primitiveTypeInfosArray[i][index], object);
       }
 
       BytesWritable bytesWritable = new BytesWritable();

http://git-wip-us.apache.org/repos/asf/hive/blob/3228ba7c/storage-api/src/java/org/apache/hadoop/hive/common/type/HiveDecimal.java
----------------------------------------------------------------------
diff --git 
a/storage-api/src/java/org/apache/hadoop/hive/common/type/HiveDecimal.java 
b/storage-api/src/java/org/apache/hadoop/hive/common/type/HiveDecimal.java
index 4ed17a2..1c6be91 100644
--- a/storage-api/src/java/org/apache/hadoop/hive/common/type/HiveDecimal.java
+++ b/storage-api/src/java/org/apache/hadoop/hive/common/type/HiveDecimal.java
@@ -102,6 +102,17 @@ public class HiveDecimal implements 
Comparable<HiveDecimal> {
   public String toString() {
      return bd.toPlainString();
   }
+  
+  /**
+   * Return a string representation of the number with the number of decimal 
digits as
+   * the given scale. Please note that this is different from toString().
+   * @param scale the number of digits after the decimal point
+   * @return the string representation of exact number of decimal digits
+   */
+  public String toFormatString(int scale) {
+    return (bd.scale() == scale ? bd :
+      bd.setScale(scale, RoundingMode.HALF_UP)).toPlainString();
+  }
 
   public HiveDecimal setScale(int i) {
     return new HiveDecimal(bd.setScale(i, RoundingMode.HALF_UP));

http://git-wip-us.apache.org/repos/asf/hive/blob/3228ba7c/storage-api/src/java/org/apache/hadoop/hive/ql/exec/vector/DecimalColumnVector.java
----------------------------------------------------------------------
diff --git 
a/storage-api/src/java/org/apache/hadoop/hive/ql/exec/vector/DecimalColumnVector.java
 
b/storage-api/src/java/org/apache/hadoop/hive/ql/exec/vector/DecimalColumnVector.java
index a7d31fa..fe8ad85 100644
--- 
a/storage-api/src/java/org/apache/hadoop/hive/ql/exec/vector/DecimalColumnVector.java
+++ 
b/storage-api/src/java/org/apache/hadoop/hive/ql/exec/vector/DecimalColumnVector.java
@@ -17,10 +17,8 @@
  */
 
 package org.apache.hadoop.hive.ql.exec.vector;
-import java.io.IOException;
 import java.math.BigInteger;
 
-
 import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable;
 import org.apache.hadoop.hive.common.type.HiveDecimal;
 

Reply via email to