http://git-wip-us.apache.org/repos/asf/impala/blob/0c8eba07/testdata/workloads/functional-query/queries/QueryTest/kudu_update.test
----------------------------------------------------------------------
diff --git 
a/testdata/workloads/functional-query/queries/QueryTest/kudu_update.test 
b/testdata/workloads/functional-query/queries/QueryTest/kudu_update.test
index 8d0d149..8520677 100644
--- a/testdata/workloads/functional-query/queries/QueryTest/kudu_update.test
+++ b/testdata/workloads/functional-query/queries/QueryTest/kudu_update.test
@@ -3,18 +3,19 @@
 create table tdata
   (id int primary key, name string null, valf float null, vali bigint null,
    valv string null, valb boolean null, valt tinyint null, vals smallint null,
-   vald double null)
+   vald double null, valdec4 decimal(9,9) null, valdec8 decimal(18,2) null,
+   valdec16 decimal(38, 0) null)
   PARTITION BY RANGE (PARTITION VALUES < 10, PARTITION 10 <= VALUES < 30,
   PARTITION 30 <= VALUES <= 10000) STORED AS KUDU
 ---- RESULTS
 ====
 ---- QUERY
 insert into tdata values
-(1, "martin", 1.0, 232232323, cast('a' as string), true, 1, 2, 3),
-(2, "david", cast(1.0 as float), 99398493939, cast('b' as string), false, 4, 
5, 6),
-(3, "todd", cast(1.0 as float), 993393939, "c", true, 7, 8, 9),
-(40, "he", cast(0.0 as float), 43, cast('e' as string), false, 50, 60, 70),
-(120, "she", cast(0.0 as float), 99, cast('f' as string), true, -1, 0, 1)
+(1, "martin", 1.0, 232232323, cast('a' as string), true, 1, 2, 3, 0.000000001, 
2.22, 3),
+(2, "david", cast(1.0 as float), 99398493939, cast('b' as string), false, 4, 
5, 6, 0.000000004, 5.55, 6),
+(3, "todd", cast(1.0 as float), 993393939, "c", true, 7, 8, 9, 0.000000007, 
8.88, 9),
+(40, "he", cast(0.0 as float), 43, cast('e' as string), false, 50, 60, 70, 
0.000000050, 66.60, 70),
+(120, "she", cast(0.0 as float), 99, cast('f' as string), true, -1, 0, 1, 
-0.000000001, 0.00, 1)
 ---- RESULTS
 : 5
 ---- RUNTIME_PROFILE
@@ -30,15 +31,15 @@ update tdata set vali=43 where id = 1
 NumModifiedRows: 1
 NumRowErrors: 0
 ---- LABELS
-ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD
+ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC4, VALDEC8, VALDEC16
 ---- DML_RESULTS: tdata
-1,'martin',1.0,43,'a',true,1,2,3
-2,'david',1.0,99398493939,'b',false,4,5,6
-3,'todd',1.0,993393939,'c',true,7,8,9
-40,'he',0.0,43,'e',false,50,60,70
-120,'she',0.0,99,'f',true,-1,0,1
+1,'martin',1.0,43,'a',true,1,2,3,0.000000001,2.22,3
+2,'david',1.0,99398493939,'b',false,4,5,6,0.000000004,5.55,6
+3,'todd',1.0,993393939,'c',true,7,8,9,0.000000007,8.88,9
+40,'he',0.0,43,'e',false,50,60,70,0.000000050,66.60,70
+120,'she',0.0,99,'f',true,-1,0,1,-0.000000001,0.00,1
 ---- TYPES
-INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
+INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL,DECIMAL,DECIMAL
 ====
 ---- QUERY
 # single row, equality on key, string
@@ -49,15 +50,15 @@ update tdata set 
valv=cast('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' as varchar(20)) wh
 NumModifiedRows: 1
 NumRowErrors: 0
 ---- LABELS
-ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD
+ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC4, VALDEC8, VALDEC16
 ---- DML_RESULTS: tdata
-1,'martin',1.0,43,'aaaaaaaaaaaaaaaaaaaa',true,1,2,3
-2,'david',1.0,99398493939,'b',false,4,5,6
-3,'todd',1.0,993393939,'c',true,7,8,9
-40,'he',0.0,43,'e',false,50,60,70
-120,'she',0.0,99,'f',true,-1,0,1
+1,'martin',1.0,43,'aaaaaaaaaaaaaaaaaaaa',true,1,2,3,0.000000001,2.22,3
+2,'david',1.0,99398493939,'b',false,4,5,6,0.000000004,5.55,6
+3,'todd',1.0,993393939,'c',true,7,8,9,0.000000007,8.88,9
+40,'he',0.0,43,'e',false,50,60,70,0.000000050,66.60,70
+120,'she',0.0,99,'f',true,-1,0,1,-0.000000001,0.00,1
 ---- TYPES
-INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
+INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL,DECIMAL,DECIMAL
 ====
 ---- QUERY
 # single row, equality on key, boolean
@@ -66,15 +67,15 @@ update tdata set valb=false where id = 1
 NumModifiedRows: 1
 NumRowErrors: 0
 ---- LABELS
-ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD
+ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC4, VALDEC8, VALDEC16
 ---- DML_RESULTS: tdata
-1,'martin',1.0,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3
-2,'david',1.0,99398493939,'b',false,4,5,6
-3,'todd',1.0,993393939,'c',true,7,8,9
-40,'he',0.0,43,'e',false,50,60,70
-120,'she',0.0,99,'f',true,-1,0,1
+1,'martin',1.0,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3,0.000000001,2.22,3
+2,'david',1.0,99398493939,'b',false,4,5,6,0.000000004,5.55,6
+3,'todd',1.0,993393939,'c',true,7,8,9,0.000000007,8.88,9
+40,'he',0.0,43,'e',false,50,60,70,0.000000050,66.60,70
+120,'she',0.0,99,'f',true,-1,0,1,-0.000000001,0.00,1
 ---- TYPES
-INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
+INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL,DECIMAL,DECIMAL
 ====
 ---- QUERY
 # single row, equality on key, set to NULL
@@ -83,15 +84,15 @@ update tdata set name=null where id = 40
 NumModifiedRows: 1
 NumRowErrors: 0
 ---- LABELS
-ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD
+ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC4, VALDEC8, VALDEC16
 ---- DML_RESULTS: tdata
-1,'martin',1.0,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3
-2,'david',1.0,99398493939,'b',false,4,5,6
-3,'todd',1.0,993393939,'c',true,7,8,9
-40,'NULL',0.0,43,'e',false,50,60,70
-120,'she',0.0,99,'f',true,-1,0,1
+1,'martin',1.0,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3,0.000000001,2.22,3
+2,'david',1.0,99398493939,'b',false,4,5,6,0.000000004,5.55,6
+3,'todd',1.0,993393939,'c',true,7,8,9,0.000000007,8.88,9
+40,'NULL',0.0,43,'e',false,50,60,70,0.000000050,66.60,70
+120,'she',0.0,99,'f',true,-1,0,1,-0.000000001,0.00,1
 ---- TYPES
-INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
+INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL,DECIMAL,DECIMAL
 ====
 ---- QUERY
 # single row, equlity on key, set from NULL
@@ -100,15 +101,15 @@ update tdata set name='he' where id = 40
 NumModifiedRows: 1
 NumRowErrors: 0
 ---- LABELS
-ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD
+ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC4, VALDEC8, VALDEC16
 ---- DML_RESULTS: tdata
-1,'martin',1.0,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3
-2,'david',1.0,99398493939,'b',false,4,5,6
-3,'todd',1.0,993393939,'c',true,7,8,9
-40,'he',0.0,43,'e',false,50,60,70
-120,'she',0.0,99,'f',true,-1,0,1
+1,'martin',1.0,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3,0.000000001,2.22,3
+2,'david',1.0,99398493939,'b',false,4,5,6,0.000000004,5.55,6
+3,'todd',1.0,993393939,'c',true,7,8,9,0.000000007,8.88,9
+40,'he',0.0,43,'e',false,50,60,70,0.000000050,66.60,70
+120,'she',0.0,99,'f',true,-1,0,1,-0.000000001,0.00,1
 ---- TYPES
-INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
+INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL,DECIMAL,DECIMAL
 ====
 ---- QUERY
 # single row, equality on key, boundary value
@@ -117,15 +118,15 @@ update tdata set vali = max_bigint() where id = 120
 NumModifiedRows: 1
 NumRowErrors: 0
 ---- LABELS
-ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD
+ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC4, VALDEC8, VALDEC16
 ---- DML_RESULTS: tdata
-1,'martin',1.0,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3
-2,'david',1.0,99398493939,'b',false,4,5,6
-3,'todd',1.0,993393939,'c',true,7,8,9
-40,'he',0.0,43,'e',false,50,60,70
-120,'she',0.0,9223372036854775807,'f',true,-1,0,1
+1,'martin',1.0,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3,0.000000001,2.22,3
+2,'david',1.0,99398493939,'b',false,4,5,6,0.000000004,5.55,6
+3,'todd',1.0,993393939,'c',true,7,8,9,0.000000007,8.88,9
+40,'he',0.0,43,'e',false,50,60,70,0.000000050,66.60,70
+120,'she',0.0,9223372036854775807,'f',true,-1,0,1,-0.000000001,0.00,1
 ---- TYPES
-INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
+INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL,DECIMAL,DECIMAL
 ====
 ---- QUERY
 # single row, inequality on key, float
@@ -134,15 +135,15 @@ update tdata set valf = -1 where id > 2 and id < 4
 NumModifiedRows: 1
 NumRowErrors: 0
 ---- LABELS
-ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD
+ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC4, VALDEC8, VALDEC16
 ---- DML_RESULTS: tdata
-1,'martin',1.0,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3
-2,'david',1.0,99398493939,'b',false,4,5,6
-3,'todd',-1.0,993393939,'c',true,7,8,9
-40,'he',0.0,43,'e',false,50,60,70
-120,'she',0.0,9223372036854775807,'f',true,-1,0,1
+1,'martin',1.0,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3,0.000000001,2.22,3
+2,'david',1.0,99398493939,'b',false,4,5,6,0.000000004,5.55,6
+3,'todd',-1.0,993393939,'c',true,7,8,9,0.000000007,8.88,9
+40,'he',0.0,43,'e',false,50,60,70,0.000000050,66.60,70
+120,'she',0.0,9223372036854775807,'f',true,-1,0,1,-0.000000001,0.00,1
 ---- TYPES
-INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
+INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL,DECIMAL,DECIMAL
 ====
 ---- QUERY
 # single row, inequality on key, tinyint
@@ -151,15 +152,15 @@ update tdata set valt = 10 where id > 100
 NumModifiedRows: 1
 NumRowErrors: 0
 ---- LABELS
-ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD
+ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC4, VALDEC8, VALDEC16
 ---- DML_RESULTS: tdata
-1,'martin',1.0,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3
-2,'david',1.0,99398493939,'b',false,4,5,6
-3,'todd',-1.0,993393939,'c',true,7,8,9
-40,'he',0.0,43,'e',false,50,60,70
-120,'she',0.0,9223372036854775807,'f',true,10,0,1
+1,'martin',1.0,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3,0.000000001,2.22,3
+2,'david',1.0,99398493939,'b',false,4,5,6,0.000000004,5.55,6
+3,'todd',-1.0,993393939,'c',true,7,8,9,0.000000007,8.88,9
+40,'he',0.0,43,'e',false,50,60,70,0.000000050,66.60,70
+120,'she',0.0,9223372036854775807,'f',true,10,0,1,-0.000000001,0.00,1
 ---- TYPES
-INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
+INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL,DECIMAL,DECIMAL
 ====
 ---- QUERY
 # single row, equality on non-key, string
@@ -168,15 +169,15 @@ update tdata set name='unknown' where name = 'martin'
 NumModifiedRows: 1
 NumRowErrors: 0
 ---- LABELS
-ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD
+ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC4, VALDEC8, VALDEC16
 ---- DML_RESULTS: tdata
-1,'unknown',1.0,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3
-2,'david',1.0,99398493939,'b',false,4,5,6
-3,'todd',-1.0,993393939,'c',true,7,8,9
-40,'he',0.0,43,'e',false,50,60,70
-120,'she',0.0,9223372036854775807,'f',true,10,0,1
+1,'unknown',1.0,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3,0.000000001,2.22,3
+2,'david',1.0,99398493939,'b',false,4,5,6,0.000000004,5.55,6
+3,'todd',-1.0,993393939,'c',true,7,8,9,0.000000007,8.88,9
+40,'he',0.0,43,'e',false,50,60,70,0.000000050,66.60,70
+120,'she',0.0,9223372036854775807,'f',true,10,0,1,-0.000000001,0.00,1
 ---- TYPES
-INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
+INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL,DECIMAL,DECIMAL
 ====
 ---- QUERY
 # single row, inequality on non-key, double
@@ -185,15 +186,32 @@ update tdata set vald = 0 where valf < 0
 NumModifiedRows: 1
 NumRowErrors: 0
 ---- LABELS
-ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD
+ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC4, VALDEC8, VALDEC16
 ---- DML_RESULTS: tdata
-1,'unknown',1.0,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3
-2,'david',1.0,99398493939,'b',false,4,5,6
-3,'todd',-1.0,993393939,'c',true,7,8,0
-40,'he',0.0,43,'e',false,50,60,70
-120,'she',0.0,9223372036854775807,'f',true,10,0,1
+1,'unknown',1.0,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3,0.000000001,2.22,3
+2,'david',1.0,99398493939,'b',false,4,5,6,0.000000004,5.55,6
+3,'todd',-1.0,993393939,'c',true,7,8,0,0.000000007,8.88,9
+40,'he',0.0,43,'e',false,50,60,70,0.000000050,66.60,70
+120,'she',0.0,9223372036854775807,'f',true,10,0,1,-0.000000001,0.00,1
 ---- TYPES
-INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
+INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL,DECIMAL,DECIMAL
+====
+---- QUERY
+# single row, inequality on non-key, decimal
+update tdata set valdec4 = 0.000000001, valdec16 = -1 where valdec4 < 0
+---- RUNTIME_PROFILE
+NumModifiedRows: 1
+NumRowErrors: 0
+---- LABELS
+ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC4, VALDEC8, VALDEC16
+---- DML_RESULTS: tdata
+1,'unknown',1.0,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3,0.000000001,2.22,3
+2,'david',1.0,99398493939,'b',false,4,5,6,0.000000004,5.55,6
+3,'todd',-1.0,993393939,'c',true,7,8,0,0.000000007,8.88,9
+40,'he',0.0,43,'e',false,50,60,70,0.000000050,66.60,70
+120,'she',0.0,9223372036854775807,'f',true,10,0,1,0.000000001,0.00,-1
+---- TYPES
+INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL,DECIMAL,DECIMAL
 ====
 ---- QUERY
 # multiple rows, predicate on key
@@ -202,15 +220,15 @@ update tdata set vali=43 where id > 1 and id < 10
 NumModifiedRows: 2
 NumRowErrors: 0
 ---- LABELS
-ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD
+ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC4, VALDEC8, VALDEC16
 ---- DML_RESULTS: tdata
-1,'unknown',1.0,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3
-2,'david',1.0,43,'b',false,4,5,6
-3,'todd',-1.0,43,'c',true,7,8,0
-40,'he',0.0,43,'e',false,50,60,70
-120,'she',0.0,9223372036854775807,'f',true,10,0,1
+1,'unknown',1.0,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3,0.000000001,2.22,3
+2,'david',1.0,43,'b',false,4,5,6,0.000000004,5.55,6
+3,'todd',-1.0,43,'c',true,7,8,0,0.000000007,8.88,9
+40,'he',0.0,43,'e',false,50,60,70,0.000000050,66.60,70
+120,'she',0.0,9223372036854775807,'f',true,10,0,1,0.000000001,0.00,-1
 ---- TYPES
-INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
+INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL,DECIMAL,DECIMAL
 ====
 ---- QUERY
 # multiple rows, predicate on non-key
@@ -219,15 +237,15 @@ update tdata set valb=false where name LIKE '%he'
 NumModifiedRows: 2
 NumRowErrors: 0
 ---- LABELS
-ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD
+ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC4, VALDEC8, VALDEC16
 ---- DML_RESULTS: tdata
-1,'unknown',1.0,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3
-2,'david',1.0,43,'b',false,4,5,6
-3,'todd',-1.0,43,'c',true,7,8,0
-40,'he',0.0,43,'e',false,50,60,70
-120,'she',0.0,9223372036854775807,'f',false,10,0,1
+1,'unknown',1.0,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3,0.000000001,2.22,3
+2,'david',1.0,43,'b',false,4,5,6,0.000000004,5.55,6
+3,'todd',-1.0,43,'c',true,7,8,0,0.000000007,8.88,9
+40,'he',0.0,43,'e',false,50,60,70,0.000000050,66.60,70
+120,'she',0.0,9223372036854775807,'f',false,10,0,1,0.000000001,0.00,-1
 ---- TYPES
-INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
+INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL,DECIMAL,DECIMAL
 ====
 ---- QUERY
 # update the same row multiple times: cross join produces 5 identical updates
@@ -236,15 +254,15 @@ update a set a.name='they' from tdata a, tdata b where 
a.id = 1
 NumModifiedRows: 5
 NumRowErrors: 0
 ---- LABELS
-ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD
+ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC4, VALDEC8, VALDEC16
 ---- DML_RESULTS: tdata
-1,'they',1.0,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3
-2,'david',1.0,43,'b',false,4,5,6
-3,'todd',-1.0,43,'c',true,7,8,0
-40,'he',0.0,43,'e',false,50,60,70
-120,'she',0.0,9223372036854775807,'f',false,10,0,1
+1,'they',1.0,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3,0.000000001,2.22,3
+2,'david',1.0,43,'b',false,4,5,6,0.000000004,5.55,6
+3,'todd',-1.0,43,'c',true,7,8,0,0.000000007,8.88,9
+40,'he',0.0,43,'e',false,50,60,70,0.000000050,66.60,70
+120,'she',0.0,9223372036854775807,'f',false,10,0,1,0.000000001,0.00,-1
 ---- TYPES
-INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
+INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL,DECIMAL,DECIMAL
 ====
 ---- QUERY
 # value of update is a constant expression
@@ -253,15 +271,15 @@ update tdata set valf = 1 + 2 where id = 1
 NumModifiedRows: 1
 NumRowErrors: 0
 ---- LABELS
-ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD
+ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC4, VALDEC8, VALDEC16
 ---- DML_RESULTS: tdata
-1,'they',3,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3
-2,'david',1.0,43,'b',false,4,5,6
-3,'todd',-1.0,43,'c',true,7,8,0
-40,'he',0.0,43,'e',false,50,60,70
-120,'she',0.0,9223372036854775807,'f',false,10,0,1
+1,'they',3,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3,0.000000001,2.22,3
+2,'david',1.0,43,'b',false,4,5,6,0.000000004,5.55,6
+3,'todd',-1.0,43,'c',true,7,8,0,0.000000007,8.88,9
+40,'he',0.0,43,'e',false,50,60,70,0.000000050,66.60,70
+120,'she',0.0,9223372036854775807,'f',false,10,0,1,0.000000001,0.00,-1
 ---- TYPES
-INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
+INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL,DECIMAL,DECIMAL
 ====
 ---- QUERY
 # value of update is a non-constant expression
@@ -270,15 +288,15 @@ update tdata set name = concat(name, name) where id % 2 = 
1
 NumModifiedRows: 2
 NumRowErrors: 0
 ---- LABELS
-ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD
+ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC4, VALDEC8, VALDEC16
 ---- DML_RESULTS: tdata
-1,'theythey',3,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3
-2,'david',1.0,43,'b',false,4,5,6
-3,'toddtodd',-1.0,43,'c',true,7,8,0
-40,'he',0.0,43,'e',false,50,60,70
-120,'she',0.0,9223372036854775807,'f',false,10,0,1
+1,'theythey',3,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3,0.000000001,2.22,3
+2,'david',1.0,43,'b',false,4,5,6,0.000000004,5.55,6
+3,'toddtodd',-1.0,43,'c',true,7,8,0,0.000000007,8.88,9
+40,'he',0.0,43,'e',false,50,60,70,0.000000050,66.60,70
+120,'she',0.0,9223372036854775807,'f',false,10,0,1,0.000000001,0.00,-1
 ---- TYPES
-INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
+INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL,DECIMAL,DECIMAL
 ====
 ---- QUERY
 # error - update key column
@@ -293,15 +311,15 @@ update tdata set name = 'none' where id = 10
 NumModifiedRows: 0
 NumRowErrors: 0
 ---- LABELS
-ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD
+ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC4, VALDEC8, VALDEC16
 ---- DML_RESULTS: tdata
-1,'theythey',3,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3
-2,'david',1.0,43,'b',false,4,5,6
-3,'toddtodd',-1.0,43,'c',true,7,8,0
-40,'he',0.0,43,'e',false,50,60,70
-120,'she',0.0,9223372036854775807,'f',false,10,0,1
+1,'theythey',3,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3,0.000000001,2.22,3
+2,'david',1.0,43,'b',false,4,5,6,0.000000004,5.55,6
+3,'toddtodd',-1.0,43,'c',true,7,8,0,0.000000007,8.88,9
+40,'he',0.0,43,'e',false,50,60,70,0.000000050,66.60,70
+120,'she',0.0,9223372036854775807,'f',false,10,0,1,0.000000001,0.00,-1
 ---- TYPES
-INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
+INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL,DECIMAL,DECIMAL
 ====
 ---- QUERY
 # Try to update a row with a primary key value that is not covered by the 
existing range
@@ -311,20 +329,20 @@ update tdata set vali = 10 where id = 10001
 NumModifiedRows: 0
 NumRowErrors: 0
 ---- LABELS
-ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD
+ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC4, VALDEC8, VALDEC16
 ---- DML_RESULTS: tdata
-1,'theythey',3,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3
-2,'david',1.0,43,'b',false,4,5,6
-3,'toddtodd',-1.0,43,'c',true,7,8,0
-40,'he',0.0,43,'e',false,50,60,70
-120,'she',0.0,9223372036854775807,'f',false,10,0,1
+1,'theythey',3,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3,0.000000001,2.22,3
+2,'david',1.0,43,'b',false,4,5,6,0.000000004,5.55,6
+3,'toddtodd',-1.0,43,'c',true,7,8,0,0.000000007,8.88,9
+40,'he',0.0,43,'e',false,50,60,70,0.000000050,66.60,70
+120,'she',0.0,9223372036854775807,'f',false,10,0,1,0.000000001,0.00,-1
 ---- TYPES
-INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
+INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL,DECIMAL,DECIMAL
 ====
 ---- QUERY
 insert into tdata
 select id, string_col, float_col, bigint_col, string_col, bool_col, 
tinyint_col,
-smallint_col, double_col from functional_kudu.alltypes
+smallint_col, double_col, NULL, NULL, NULL from functional_kudu.alltypes
 ---- RESULTS
 : 7295
 ---- RUNTIME_PROFILE

http://git-wip-us.apache.org/repos/asf/impala/blob/0c8eba07/testdata/workloads/functional-query/queries/QueryTest/kudu_upsert.test
----------------------------------------------------------------------
diff --git 
a/testdata/workloads/functional-query/queries/QueryTest/kudu_upsert.test 
b/testdata/workloads/functional-query/queries/QueryTest/kudu_upsert.test
index 57aaa46..1c12f33 100644
--- a/testdata/workloads/functional-query/queries/QueryTest/kudu_upsert.test
+++ b/testdata/workloads/functional-query/queries/QueryTest/kudu_upsert.test
@@ -3,149 +3,149 @@
 create table tdata
   (id int primary key, name string null, valf float null, vali bigint null,
    valv string null, valb boolean null, valt tinyint null, vals smallint null,
-   vald double null)
+   vald double null, valdec decimal(9, 0) null)
   PARTITION BY RANGE (PARTITION VALUES < 10, PARTITION 10 <= VALUES < 30,
   PARTITION 30 <= VALUES) STORED AS KUDU
 ---- RESULTS
 ====
 ---- QUERY
 insert into table tdata values
-(40,'he',0,43,'e',false,35,36,1.2),
-(1,'unknown',1,43,'aaaaaaaaaaaaaaaaaaaa',false,-1,-2,0),
-(2,'david',1,43,'b',false,0,0,0),
-(3,'todd',1,43,'c',true,3,3,3)
+(40,'he',0,43,'e',false,35,36,1.2,37),
+(1,'unknown',1,43,'aaaaaaaaaaaaaaaaaaaa',false,-1,-2,0,-3),
+(2,'david',1,43,'b',false,0,0,0,0),
+(3,'todd',1,43,'c',true,3,3,3,3)
 ---- RESULTS
 : 4
 ====
 ---- QUERY
 # VALUES, single row, all cols, results in insert
-upsert into table tdata values (4, 'a', 0, 1, 'b', false, 1, 2, 1.5)
+upsert into table tdata values (4, 'a', 0, 1, 'b', false, 1, 2, 1.5, 4)
 ---- RUNTIME_PROFILE
 NumModifiedRows: 1
 NumRowErrors: 0
 ---- LABELS
-ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD
+ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC
 ---- DML_RESULTS: tdata
-40,'he',0,43,'e',false,35,36,1.2
-1,'unknown',1,43,'aaaaaaaaaaaaaaaaaaaa',false,-1,-2,0
-2,'david',1,43,'b',false,0,0,0
-3,'todd',1,43,'c',true,3,3,3
-4,'a',0,1,'b',false,1,2,1.5
+40,'he',0,43,'e',false,35,36,1.2,37
+1,'unknown',1,43,'aaaaaaaaaaaaaaaaaaaa',false,-1,-2,0,-3
+2,'david',1,43,'b',false,0,0,0,0
+3,'todd',1,43,'c',true,3,3,3,3
+4,'a',0,1,'b',false,1,2,1.5,4
 ---- TYPES
-INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
+INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL
 ====
 ---- QUERY
 # VALUES, single row, all cols, results in update
-upsert into table tdata values (4, 'b', -1, 1, 'a', true, 2, 3, 2.5)
+upsert into table tdata values (4, 'b', -1, 1, 'a', true, 2, 3, 2.5, 5)
 ---- RUNTIME_PROFILE
 NumModifiedRows: 1
 NumRowErrors: 0
 ---- LABELS
-ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD
+ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC
 ---- DML_RESULTS: tdata
-40,'he',0,43,'e',false,35,36,1.2
-1,'unknown',1,43,'aaaaaaaaaaaaaaaaaaaa',false,-1,-2,0
-2,'david',1,43,'b',false,0,0,0
-3,'todd',1,43,'c',true,3,3,3
-4,'b',-1,1,'a',true,2,3,2.5
+40,'he',0,43,'e',false,35,36,1.2,37
+1,'unknown',1,43,'aaaaaaaaaaaaaaaaaaaa',false,-1,-2,0,-3
+2,'david',1,43,'b',false,0,0,0,0
+3,'todd',1,43,'c',true,3,3,3,3
+4,'b',-1,1,'a',true,2,3,2.5,5
 ---- TYPES
-INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
+INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL
 ====
 ---- QUERY
 # VALUES, single row, all cols, insert NULL all types
-upsert into table tdata values (10, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
NULL)
+upsert into table tdata values (10, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
NULL, NULL)
 ---- RUNTIME_PROFILE
 NumModifiedRows: 1
 NumRowErrors: 0
 ---- LABELS
-ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD
+ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC
 ---- DML_RESULTS: tdata
-40,'he',0,43,'e',false,35,36,1.2
-1,'unknown',1,43,'aaaaaaaaaaaaaaaaaaaa',false,-1,-2,0
-2,'david',1,43,'b',false,0,0,0
-3,'todd',1,43,'c',true,3,3,3
-4,'b',-1,1,'a',true,2,3,2.5
-10,'NULL',NULL,NULL,'NULL',NULL,NULL,NULL,NULL
+40,'he',0,43,'e',false,35,36,1.2,37
+1,'unknown',1,43,'aaaaaaaaaaaaaaaaaaaa',false,-1,-2,0,-3
+2,'david',1,43,'b',false,0,0,0,0
+3,'todd',1,43,'c',true,3,3,3,3
+4,'b',-1,1,'a',true,2,3,2.5,5
+10,'NULL',NULL,NULL,'NULL',NULL,NULL,NULL,NULL,NULL
 ---- TYPES
-INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
+INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL
 ====
 ---- QUERY
 # VALUES, single row, all cols, update NULL all types
-upsert into table tdata values (4, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
NULL)
+upsert into table tdata values (4, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
NULL, NULL)
 ---- RUNTIME_PROFILE
 NumModifiedRows: 1
 NumRowErrors: 0
 ---- LABELS
-ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD
+ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC
 ---- DML_RESULTS: tdata
-40,'he',0,43,'e',false,35,36,1.2
-1,'unknown',1,43,'aaaaaaaaaaaaaaaaaaaa',false,-1,-2,0
-2,'david',1,43,'b',false,0,0,0
-3,'todd',1,43,'c',true,3,3,3
-4,'NULL',NULL,NULL,'NULL',NULL,NULL,NULL,NULL
-10,'NULL',NULL,NULL,'NULL',NULL,NULL,NULL,NULL
+40,'he',0,43,'e',false,35,36,1.2,37
+1,'unknown',1,43,'aaaaaaaaaaaaaaaaaaaa',false,-1,-2,0,-3
+2,'david',1,43,'b',false,0,0,0,0
+3,'todd',1,43,'c',true,3,3,3,3
+4,'NULL',NULL,NULL,'NULL',NULL,NULL,NULL,NULL,NULL
+10,'NULL',NULL,NULL,'NULL',NULL,NULL,NULL,NULL,NULL
 ---- TYPES
-INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
+INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL
 ====
 ---- QUERY
 # VALUES, single row, all cols, update from NULL all types
-upsert into table tdata values (4, 'four', 5, 6, 'f', true, 7, 8, 7.5)
+upsert into table tdata values (4, 'four', 5, 6, 'f', true, 7, 8, 7.5, 9)
 ---- RUNTIME_PROFILE
 NumModifiedRows: 1
 NumRowErrors: 0
 ---- LABELS
-ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD
+ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC
 ---- DML_RESULTS: tdata
-40,'he',0,43,'e',false,35,36,1.2
-1,'unknown',1,43,'aaaaaaaaaaaaaaaaaaaa',false,-1,-2,0
-2,'david',1,43,'b',false,0,0,0
-3,'todd',1,43,'c',true,3,3,3
-4,'four',5,6,'f',true,7,8,7.5
-10,'NULL',NULL,NULL,'NULL',NULL,NULL,NULL,NULL
+40,'he',0,43,'e',false,35,36,1.2,37
+1,'unknown',1,43,'aaaaaaaaaaaaaaaaaaaa',false,-1,-2,0,-3
+2,'david',1,43,'b',false,0,0,0,0
+3,'todd',1,43,'c',true,3,3,3,3
+4,'four',5,6,'f',true,7,8,7.5,9
+10,'NULL',NULL,NULL,'NULL',NULL,NULL,NULL,NULL,NULL
 ---- TYPES
-INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
+INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL
 ====
 ---- QUERY
 # VALUES, single row, all cols, insert boundary values
 upsert into table tdata values
 (max_int(), '', cast('nan' as float), min_bigint(), '', true, max_tinyint(),
-  min_smallint(), cast('inf' as double))
+  min_smallint(), cast('inf' as double), cast(999999999 as decimal(9, 0)))
 ---- RUNTIME_PROFILE
 NumModifiedRows: 1
 NumRowErrors: 0
 ---- LABELS
-ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD
+ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC
 ---- DML_RESULTS: tdata
-40,'he',0,43,'e',false,35,36,1.2
-1,'unknown',1,43,'aaaaaaaaaaaaaaaaaaaa',false,-1,-2,0
-2,'david',1,43,'b',false,0,0,0
-3,'todd',1,43,'c',true,3,3,3
-4,'four',5,6,'f',true,7,8,7.5
-10,'NULL',NULL,NULL,'NULL',NULL,NULL,NULL,NULL
-2147483647,'',NaN,-9223372036854775808,'',true,127,-32768,Infinity
+40,'he',0,43,'e',false,35,36,1.2,37
+1,'unknown',1,43,'aaaaaaaaaaaaaaaaaaaa',false,-1,-2,0,-3
+2,'david',1,43,'b',false,0,0,0,0
+3,'todd',1,43,'c',true,3,3,3,3
+4,'four',5,6,'f',true,7,8,7.5,9
+10,'NULL',NULL,NULL,'NULL',NULL,NULL,NULL,NULL,NULL
+2147483647,'',NaN,-9223372036854775808,'',true,127,-32768,Infinity,999999999
 ---- TYPES
-INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
+INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL
 ====
 ---- QUERY
 # VALUES, single row, all cols, update boundary values
 upsert into table tdata values
 (max_int(), '', cast('-inf' as float), max_bigint(), '', true, min_tinyint(),
-  max_smallint(), cast('nan' as double))
+  max_smallint(), cast('nan' as double), cast(-999999999 as decimal(9, 0)))
 ---- RUNTIME_PROFILE
 NumModifiedRows: 1
 NumRowErrors: 0
 ---- LABELS
-ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD
+ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC
 ---- DML_RESULTS: tdata
-40,'he',0,43,'e',false,35,36,1.2
-1,'unknown',1,43,'aaaaaaaaaaaaaaaaaaaa',false,-1,-2,0
-2,'david',1,43,'b',false,0,0,0
-3,'todd',1,43,'c',true,3,3,3
-4,'four',5,6,'f',true,7,8,7.5
-10,'NULL',NULL,NULL,'NULL',NULL,NULL,NULL,NULL
-2147483647,'',-Infinity,9223372036854775807,'',true,-128,32767,NaN
+40,'he',0,43,'e',false,35,36,1.2,37
+1,'unknown',1,43,'aaaaaaaaaaaaaaaaaaaa',false,-1,-2,0,-3
+2,'david',1,43,'b',false,0,0,0,0
+3,'todd',1,43,'c',true,3,3,3,3
+4,'four',5,6,'f',true,7,8,7.5,9
+10,'NULL',NULL,NULL,'NULL',NULL,NULL,NULL,NULL,NULL
+2147483647,'',-Infinity,9223372036854775807,'',true,-128,32767,NaN,-999999999
 ---- TYPES
-INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
+INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL
 ====
 ---- QUERY
 # VALUES, single row, subset of cols, results in insert
@@ -154,18 +154,18 @@ upsert into table tdata (id, name, vali, valb, vald) 
values (5, 'five', -5, NULL
 NumModifiedRows: 1
 NumRowErrors: 0
 ---- LABELS
-ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD
+ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC
 ---- DML_RESULTS: tdata
-40,'he',0,43,'e',false,35,36,1.2
-1,'unknown',1,43,'aaaaaaaaaaaaaaaaaaaa',false,-1,-2,0
-2,'david',1,43,'b',false,0,0,0
-3,'todd',1,43,'c',true,3,3,3
-4,'four',5,6,'f',true,7,8,7.5
-10,'NULL',NULL,NULL,'NULL',NULL,NULL,NULL,NULL
-2147483647,'',-Infinity,9223372036854775807,'',true,-128,32767,NaN
-5,'five',NULL,-5,'NULL',NULL,NULL,NULL,0.5
+40,'he',0,43,'e',false,35,36,1.2,37
+1,'unknown',1,43,'aaaaaaaaaaaaaaaaaaaa',false,-1,-2,0,-3
+2,'david',1,43,'b',false,0,0,0,0
+3,'todd',1,43,'c',true,3,3,3,3
+4,'four',5,6,'f',true,7,8,7.5,9
+10,'NULL',NULL,NULL,'NULL',NULL,NULL,NULL,NULL,NULL
+2147483647,'',-Infinity,9223372036854775807,'',true,-128,32767,NaN,-999999999
+5,'five',NULL,-5,'NULL',NULL,NULL,NULL,0.5,NULL
 ---- TYPES
-INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
+INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL
 ====
 ---- QUERY
 # VALUES, single row, subset of cols, results in update
@@ -174,44 +174,44 @@ upsert into table tdata (id, name, valf, valv, valb) 
values (5, NULL, 0, 'six',
 NumModifiedRows: 1
 NumRowErrors: 0
 ---- LABELS
-ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD
+ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC
 ---- DML_RESULTS: tdata
-40,'he',0,43,'e',false,35,36,1.2
-1,'unknown',1,43,'aaaaaaaaaaaaaaaaaaaa',false,-1,-2,0
-2,'david',1,43,'b',false,0,0,0
-3,'todd',1,43,'c',true,3,3,3
-4,'four',5,6,'f',true,7,8,7.5
-10,'NULL',NULL,NULL,'NULL',NULL,NULL,NULL,NULL
-2147483647,'',-Infinity,9223372036854775807,'',true,-128,32767,NaN
-5,'NULL',0,-5,'six',false,NULL,NULL,0.5
+40,'he',0,43,'e',false,35,36,1.2,37
+1,'unknown',1,43,'aaaaaaaaaaaaaaaaaaaa',false,-1,-2,0,-3
+2,'david',1,43,'b',false,0,0,0,0
+3,'todd',1,43,'c',true,3,3,3,3
+4,'four',5,6,'f',true,7,8,7.5,9
+10,'NULL',NULL,NULL,'NULL',NULL,NULL,NULL,NULL,NULL
+2147483647,'',-Infinity,9223372036854775807,'',true,-128,32767,NaN,-999999999
+5,'NULL',0,-5,'six',false,NULL,NULL,0.5,NULL
 ---- TYPES
-INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
+INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL
 ====
 ---- QUERY
 # VALUES, multiple rows, all cols, no errors
 upsert into table tdata values
-(1, 'one', NULL, 44, 'a', true, -1, -2, 0),
-(6, '', -6, 40, 'b', NULL, 0, 0, 10),
-(7, 'seven', 0, min_bigint(), NULL, true, 7, 1, 2),
-(2, 'you', cast('inf' as float), 0, 't', false, NULL, min_smallint(), 0)
+(1, 'one', NULL, 44, 'a', true, -1, -2, 0, 0),
+(6, '', -6, 40, 'b', NULL, 0, 0, 10, 11),
+(7, 'seven', 0, min_bigint(), NULL, true, 7, 1, 2, 3),
+(2, 'you', cast('inf' as float), 0, 't', false, NULL, min_smallint(), 0, 0)
 ---- RUNTIME_PROFILE
 NumModifiedRows: 4
 NumRowErrors: 0
 ---- LABELS
-ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD
+ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC
 ---- DML_RESULTS: tdata
-40,'he',0,43,'e',false,35,36,1.2
-1,'one',NULL,44,'a',true,-1,-2,0
-2,'you',Infinity,0,'t',false,NULL,-32768,0
-3,'todd',1,43,'c',true,3,3,3
-4,'four',5,6,'f',true,7,8,7.5
-10,'NULL',NULL,NULL,'NULL',NULL,NULL,NULL,NULL
-2147483647,'',-Infinity,9223372036854775807,'',true,-128,32767,NaN
-5,'NULL',0,-5,'six',false,NULL,NULL,0.5
-6,'',-6,40,'b',NULL,0,0,10
-7,'seven',0,-9223372036854775808,'NULL',true,7,1,2
+40,'he',0,43,'e',false,35,36,1.2,37
+1,'one',NULL,44,'a',true,-1,-2,0,0
+2,'you',Infinity,0,'t',false,NULL,-32768,0,0
+3,'todd',1,43,'c',true,3,3,3,3
+4,'four',5,6,'f',true,7,8,7.5,9
+10,'NULL',NULL,NULL,'NULL',NULL,NULL,NULL,NULL,NULL
+2147483647,'',-Infinity,9223372036854775807,'',true,-128,32767,NaN,-999999999
+5,'NULL',0,-5,'six',false,NULL,NULL,0.5,NULL
+6,'',-6,40,'b',NULL,0,0,10,11
+7,'seven',0,-9223372036854775808,'NULL',true,7,1,2,3
 ---- TYPES
-INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
+INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL
 ====
 ---- QUERY
 # VALUES, multiple rows, subset of cols, no errors
@@ -224,72 +224,72 @@ upsert into table tdata (id, valb, name, vali) values
 NumModifiedRows: 4
 NumRowErrors: 0
 ---- LABELS
-ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD
+ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC
 ---- DML_RESULTS: tdata
-40,'he',0,43,'e',false,35,36,1.2
-1,'NULL',NULL,1,'a',true,-1,-2,0
-2,'you',Infinity,0,'t',false,NULL,-32768,0
-3,'todd',1,43,'c',true,3,3,3
-4,'four',5,6,'f',true,7,8,7.5
-10,'NULL',NULL,NULL,'NULL',NULL,NULL,NULL,NULL
-2147483647,'',-Infinity,9223372036854775807,'',true,-128,32767,NaN
-5,'five',0,10,'six',NULL,NULL,NULL,0.5
-6,'',-6,40,'b',NULL,0,0,10
-7,'seven',0,-9223372036854775808,'NULL',true,7,1,2
-8,'hello',NULL,2,'NULL',false,NULL,NULL,NULL
-9,'nine',NULL,9,'NULL',true,NULL,NULL,NULL
+40,'he',0,43,'e',false,35,36,1.2,37
+1,'NULL',NULL,1,'a',true,-1,-2,0,0
+2,'you',Infinity,0,'t',false,NULL,-32768,0,0
+3,'todd',1,43,'c',true,3,3,3,3
+4,'four',5,6,'f',true,7,8,7.5,9
+10,'NULL',NULL,NULL,'NULL',NULL,NULL,NULL,NULL,NULL
+2147483647,'',-Infinity,9223372036854775807,'',true,-128,32767,NaN,-999999999
+5,'five',0,10,'six',NULL,NULL,NULL,0.5,NULL
+6,'',-6,40,'b',NULL,0,0,10,11
+7,'seven',0,-9223372036854775808,'NULL',true,7,1,2,3
+8,'hello',NULL,2,'NULL',false,NULL,NULL,NULL,NULL
+9,'nine',NULL,9,'NULL',true,NULL,NULL,NULL,NULL
 ---- TYPES
-INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
+INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL
 ====
 ---- QUERY
 # SELECT, all cols, single row, no errors
 upsert into table tdata
-select id, 'a', valf, vali, valv, NULL, valt, vals, 3 from tdata where id = 1
+select id, 'a', valf, vali, valv, NULL, valt, vals, 3, valdec from tdata where 
id = 1
 ---- RUNTIME_PROFILE
 NumModifiedRows: 1
 NumRowErrors: 0
 ---- LABELS
-ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD
+ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC
 ---- DML_RESULTS: tdata
-40,'he',0,43,'e',false,35,36,1.2
-1,'a',NULL,1,'a',NULL,-1,-2,3
-2,'you',Infinity,0,'t',false,NULL,-32768,0
-3,'todd',1,43,'c',true,3,3,3
-4,'four',5,6,'f',true,7,8,7.5
-10,'NULL',NULL,NULL,'NULL',NULL,NULL,NULL,NULL
-2147483647,'',-Infinity,9223372036854775807,'',true,-128,32767,NaN
-5,'five',0,10,'six',NULL,NULL,NULL,0.5
-6,'',-6,40,'b',NULL,0,0,10
-7,'seven',0,-9223372036854775808,'NULL',true,7,1,2
-8,'hello',NULL,2,'NULL',false,NULL,NULL,NULL
-9,'nine',NULL,9,'NULL',true,NULL,NULL,NULL
+40,'he',0,43,'e',false,35,36,1.2,37
+1,'a',NULL,1,'a',NULL,-1,-2,3,0
+2,'you',Infinity,0,'t',false,NULL,-32768,0,0
+3,'todd',1,43,'c',true,3,3,3,3
+4,'four',5,6,'f',true,7,8,7.5,9
+10,'NULL',NULL,NULL,'NULL',NULL,NULL,NULL,NULL,NULL
+2147483647,'',-Infinity,9223372036854775807,'',true,-128,32767,NaN,-999999999
+5,'five',0,10,'six',NULL,NULL,NULL,0.5,NULL
+6,'',-6,40,'b',NULL,0,0,10,11
+7,'seven',0,-9223372036854775808,'NULL',true,7,1,2,3
+8,'hello',NULL,2,'NULL',false,NULL,NULL,NULL,NULL
+9,'nine',NULL,9,'NULL',true,NULL,NULL,NULL,NULL
 ---- TYPES
-INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
+INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL
 ====
 ---- QUERY
 # SELECT, all cols, multiple rows, no errors
 upsert into table tdata
-select id, valv, valf, vali, name, valb, valt, vals, vald from tdata where id 
% 2 = 0
+select id, valv, valf, vali, name, valb, valt, vals, vald, valdec from tdata 
where id % 2 = 0
 ---- RUNTIME_PROFILE
 NumModifiedRows: 6
 NumRowErrors: 0
 ---- LABELS
-ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD
+ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC
 ---- DML_RESULTS: tdata
-40,'e',0,43,'he',false,35,36,1.2
-1,'a',NULL,1,'a',NULL,-1,-2,3
-2,'t',Infinity,0,'you',false,NULL,-32768,0
-3,'todd',1,43,'c',true,3,3,3
-4,'f',5,6,'four',true,7,8,7.5
-10,'NULL',NULL,NULL,'NULL',NULL,NULL,NULL,NULL
-2147483647,'',-Infinity,9223372036854775807,'',true,-128,32767,NaN
-5,'five',0,10,'six',NULL,NULL,NULL,0.5
-6,'b',-6,40,'',NULL,0,0,10
-7,'seven',0,-9223372036854775808,'NULL',true,7,1,2
-8,'NULL',NULL,2,'hello',false,NULL,NULL,NULL
-9,'nine',NULL,9,'NULL',true,NULL,NULL,NULL
+40,'e',0,43,'he',false,35,36,1.2,37
+1,'a',NULL,1,'a',NULL,-1,-2,3,0
+2,'t',Infinity,0,'you',false,NULL,-32768,0,0
+3,'todd',1,43,'c',true,3,3,3,3
+4,'f',5,6,'four',true,7,8,7.5,9
+10,'NULL',NULL,NULL,'NULL',NULL,NULL,NULL,NULL,NULL
+2147483647,'',-Infinity,9223372036854775807,'',true,-128,32767,NaN,-999999999
+5,'five',0,10,'six',NULL,NULL,NULL,0.5,NULL
+6,'b',-6,40,'',NULL,0,0,10,11
+7,'seven',0,-9223372036854775808,'NULL',true,7,1,2,3
+8,'NULL',NULL,2,'hello',false,NULL,NULL,NULL,NULL
+9,'nine',NULL,9,'NULL',true,NULL,NULL,NULL,NULL
 ---- TYPES
-INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
+INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL
 ====
 ---- QUERY
 # SELECT, subset of cols, single row, no errors
@@ -299,23 +299,23 @@ select int_col, string_col, bigint_col from 
functional.alltypes where id = 0
 NumModifiedRows: 1
 NumRowErrors: 0
 ---- LABELS
-ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD
+ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC
 ---- DML_RESULTS: tdata
-40,'e',0,43,'he',false,35,36,1.2
-1,'a',NULL,1,'a',NULL,-1,-2,3
-2,'t',Infinity,0,'you',false,NULL,-32768,0
-3,'todd',1,43,'c',true,3,3,3
-4,'f',5,6,'four',true,7,8,7.5
-10,'NULL',NULL,NULL,'NULL',NULL,NULL,NULL,NULL
-2147483647,'',-Infinity,9223372036854775807,'',true,-128,32767,NaN
-5,'five',0,10,'six',NULL,NULL,NULL,0.5
-6,'b',-6,40,'',NULL,0,0,10
-7,'seven',0,-9223372036854775808,'NULL',true,7,1,2
-8,'NULL',NULL,2,'hello',false,NULL,NULL,NULL
-9,'nine',NULL,9,'NULL',true,NULL,NULL,NULL
-0,'NULL',NULL,0,'0',NULL,NULL,NULL,NULL
+40,'e',0,43,'he',false,35,36,1.2,37
+1,'a',NULL,1,'a',NULL,-1,-2,3,0
+2,'t',Infinity,0,'you',false,NULL,-32768,0,0
+3,'todd',1,43,'c',true,3,3,3,3
+4,'f',5,6,'four',true,7,8,7.5,9
+10,'NULL',NULL,NULL,'NULL',NULL,NULL,NULL,NULL,NULL
+2147483647,'',-Infinity,9223372036854775807,'',true,-128,32767,NaN,-999999999
+5,'five',0,10,'six',NULL,NULL,NULL,0.5,NULL
+6,'b',-6,40,'',NULL,0,0,10,11
+7,'seven',0,-9223372036854775808,'NULL',true,7,1,2,3
+8,'NULL',NULL,2,'hello',false,NULL,NULL,NULL,NULL
+9,'nine',NULL,9,'NULL',true,NULL,NULL,NULL,NULL
+0,'NULL',NULL,0,'0',NULL,NULL,NULL,NULL,NULL
 ---- TYPES
-INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
+INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL
 ====
 ---- QUERY
 # SELECT, subset of cols, multiple rows, no errors
@@ -325,27 +325,53 @@ select int_col, bool_col, string_col, tinyint_col from 
functional.alltypes where
 NumModifiedRows: 4
 NumRowErrors: 0
 ---- LABELS
-ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD
+ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC
 ---- DML_RESULTS: tdata
-40,'e',0,43,'he',false,35,36,1.2
-1,'1',NULL,1,'a',false,1,-2,3
-2,'2',Infinity,0,'you',true,2,-32768,0
-3,'3',1,43,'c',false,3,3,3
-4,'f',5,6,'four',true,7,8,7.5
-10,'NULL',NULL,NULL,'NULL',NULL,NULL,NULL,NULL
-2147483647,'',-Infinity,9223372036854775807,'',true,-128,32767,NaN
-5,'five',0,10,'six',NULL,NULL,NULL,0.5
-6,'b',-6,40,'',NULL,0,0,10
-7,'seven',0,-9223372036854775808,'NULL',true,7,1,2
-8,'NULL',NULL,2,'hello',false,NULL,NULL,NULL
-9,'nine',NULL,9,'NULL',true,NULL,NULL,NULL
-0,'0',NULL,0,'0',true,0,NULL,NULL
+40,'e',0,43,'he',false,35,36,1.2,37
+1,'1',NULL,1,'a',false,1,-2,3,0
+2,'2',Infinity,0,'you',true,2,-32768,0,0
+3,'3',1,43,'c',false,3,3,3,3
+4,'f',5,6,'four',true,7,8,7.5,9
+10,'NULL',NULL,NULL,'NULL',NULL,NULL,NULL,NULL,NULL
+2147483647,'',-Infinity,9223372036854775807,'',true,-128,32767,NaN,-999999999
+5,'five',0,10,'six',NULL,NULL,NULL,0.5,NULL
+6,'b',-6,40,'',NULL,0,0,10,11
+7,'seven',0,-9223372036854775808,'NULL',true,7,1,2,3
+8,'NULL',NULL,2,'hello',false,NULL,NULL,NULL,NULL
+9,'nine',NULL,9,'NULL',true,NULL,NULL,NULL,NULL
+0,'0',NULL,0,'0',true,0,NULL,NULL,NULL
 ---- TYPES
-INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
+INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL
+====
+---- QUERY
+# SELECT, decimal column, multiple rows, no errors
+upsert into table tdata (id, valdec)
+select id, cast((valdec * 2) as decimal(9,0)) from tdata where valdec > 0
+---- RUNTIME_PROFILE
+NumModifiedRows: 5
+NumRowErrors: 0
+---- LABELS
+ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC
+---- DML_RESULTS: tdata
+40,'e',0,43,'he',false,35,36,1.2,74
+1,'1',NULL,1,'a',false,1,-2,3,0
+2,'2',Infinity,0,'you',true,2,-32768,0,0
+3,'3',1,43,'c',false,3,3,3,6
+4,'f',5,6,'four',true,7,8,7.5,18
+10,'NULL',NULL,NULL,'NULL',NULL,NULL,NULL,NULL,NULL
+2147483647,'',-Infinity,9223372036854775807,'',true,-128,32767,NaN,-999999999
+5,'five',0,10,'six',NULL,NULL,NULL,0.5,NULL
+6,'b',-6,40,'',NULL,0,0,10,22
+7,'seven',0,-9223372036854775808,'NULL',true,7,1,2,6
+8,'NULL',NULL,2,'hello',false,NULL,NULL,NULL,NULL
+9,'nine',NULL,9,'NULL',true,NULL,NULL,NULL,NULL
+0,'0',NULL,0,'0',true,0,NULL,NULL,NULL
+---- TYPES
+INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL
 ====
 ---- QUERY
 # VALUES, single row, all cols, null for non-nullable column
-upsert into table tdata values (null, '', 0, 0, cast('' as VARCHAR(20)), 
false, 0, 0, 0)
+upsert into table tdata values (null, '', 0, 0, cast('' as VARCHAR(20)), 
false, 0, 0, 0, null)
 ---- RUNTIME_PROFILE
 NumModifiedRows: 0
 NumRowErrors: 1
@@ -360,10 +386,10 @@ NumRowErrors: 1
 ---- QUERY
 # VALUES, multiple rows, all cols, null for non-nullable column
 upsert into table tdata values
-(3,'todd',1,43,'c',true,3,3,3),
-(4,'four',5,6,'f',true,7,8,7.5),
-(6,'',-6,40,'b',NULL,0,0,10),
-(NULL,'seven',0,0,'NULL',true,7,1,2)
+(3,'todd',1,43,'c',true,3,3,3,null),
+(4,'four',5,6,'f',true,7,8,7.5,null),
+(6,'',-6,40,'b',NULL,0,0,10,null),
+(NULL,'seven',0,0,'NULL',true,7,1,2,null)
 ---- RUNTIME_PROFILE
 NumModifiedRows: 3
 NumRowErrors: 1

http://git-wip-us.apache.org/repos/asf/impala/blob/0c8eba07/tests/query_test/test_decimal_queries.py
----------------------------------------------------------------------
diff --git a/tests/query_test/test_decimal_queries.py 
b/tests/query_test/test_decimal_queries.py
index a250ae2..3a14ed3 100644
--- a/tests/query_test/test_decimal_queries.py
+++ b/tests/query_test/test_decimal_queries.py
@@ -43,7 +43,7 @@ class TestDecimalQueries(ImpalaTestSuite):
     cls.ImpalaTestMatrix.add_constraint(lambda v:\
         (v.get_value('table_format').file_format == 'text' and
          v.get_value('table_format').compression_codec == 'none') or
-         v.get_value('table_format').file_format == 'parquet')
+         v.get_value('table_format').file_format in ['parquet', 'kudu'])
 
   def test_queries(self, vector):
     self.run_test_case('QueryTest/decimal', vector)
@@ -60,7 +60,7 @@ class TestDecimalExprs(ImpalaTestSuite):
   def add_test_dimensions(cls):
     super(TestDecimalExprs, cls).add_test_dimensions()
     cls.ImpalaTestMatrix.add_constraint(lambda v:
-        (v.get_value('table_format').file_format == 'parquet'))
+        (v.get_value('table_format').file_format in ['parquet', 'kudu']))
 
   def test_exprs(self, vector):
     self.run_test_case('QueryTest/decimal-exprs', vector)

http://git-wip-us.apache.org/repos/asf/impala/blob/0c8eba07/tests/query_test/test_kudu.py
----------------------------------------------------------------------
diff --git a/tests/query_test/test_kudu.py b/tests/query_test/test_kudu.py
index ddf59f2..3d7b727 100644
--- a/tests/query_test/test_kudu.py
+++ b/tests/query_test/test_kudu.py
@@ -357,7 +357,7 @@ class TestKuduOperations(KuduTestSuite):
       pytest.skip("Only runs in exhaustive to reduce core time.")
     table_name = "%s.storage_attrs" % unique_database
     types = ['boolean', 'tinyint', 'smallint', 'int', 'bigint', 'float', 
'double', \
-        'string', 'timestamp']
+        'string', 'timestamp', 'decimal(9, 2)', 'decimal(18)', 'decimal(38, 
38)']
 
     create_query = "create table %s (id int primary key" % table_name
     for t in types:
@@ -485,6 +485,7 @@ class TestCreateExternalTable(KuduTestSuite):
 
   def test_col_types(self, cursor, kudu_client):
     """Check that a table can be created using all available column types."""
+    # TODO: Add DECIMAL when the Kudu python client supports decimal
     kudu_types = [STRING, BOOL, DOUBLE, FLOAT, INT16, INT32, INT64, INT8]
     with self.temp_kudu_table(kudu_client, kudu_types) as kudu_table:
       impala_table_name = self.get_kudu_table_base_name(kudu_table.name)

Reply via email to