Add execution for vararg UDFs.

Change-Id: I46e5670c09ac0b8e62f39dfc832fe880dd1dc995
Reviewed-on: http://gerrit.ent.cloudera.com:8080/572
Tested-by: jenkins
Reviewed-by: Nong Li <nong@cloudera.com>
This commit is contained in:
Nong Li
2013-09-30 23:26:34 -07:00
committed by Henry Robinson
parent ee42aa8d36
commit 1eb2b7a964
12 changed files with 237 additions and 34 deletions

View File

@@ -11,8 +11,9 @@ drop function if exists udf_test.identity(string);
drop function if exists udf_test.all_types_fn(
string, boolean, tinyint, smallint, int, bigint, float, double);
drop function if exists udf_test.no_args();
drop function if exists udf_test.var_sum(int...);
drop function if exists udf_test.var_sum_multiply(double, int...);
drop database if exists udf_test;
create database if not exists udf_test;
create function udf_test.identity(boolean) returns boolean
@@ -56,4 +57,12 @@ symbol='_Z8AllTypesPN10impala_udf15FunctionContextERKNS_9StringValERKNS_10Boolea
create function udf_test.no_args() returns string
location '/test-warehouse/test-udfs.ll'
symbol='_Z6NoArgsPN10impala_udf15FunctionContextE';
create function udf_test.var_sum(int...) returns int
location '/test-warehouse/test-udfs.ll'
symbol='_Z6VarSumPN10impala_udf15FunctionContextEiPKNS_6IntValE';
create function udf_test.var_sum_multiply(double, int...) returns double
location '/test-warehouse/test-udfs.ll'
symbol='_Z14VarSumMultiplyPN10impala_udf15FunctionContextERKNS_9DoubleValEiPKNS_6IntValE';
====

View File

@@ -11,8 +11,9 @@ drop function if exists udf_test.identity(string);
drop function if exists udf_test.all_types_fn(
string, boolean, tinyint, smallint, int, bigint, float, double);
drop function if exists udf_test.no_args();
drop function if exists udf_test.var_sum(int...);
drop function if exists udf_test.var_sum_multiply(double, int...);
drop database if exists udf_test;
create database if not exists udf_test;
create function udf_test.identity(boolean) returns boolean
@@ -56,4 +57,12 @@ symbol='_Z8AllTypesPN10impala_udf15FunctionContextERKNS_9StringValERKNS_10Boolea
create function udf_test.no_args() returns string
location '/test-warehouse/libTestUdfs.so'
symbol='_Z6NoArgsPN10impala_udf15FunctionContextE';
create function udf_test.var_sum(int...) returns int
location '/test-warehouse/libTestUdfs.so'
symbol='_Z6VarSumPN10impala_udf15FunctionContextEiPKNS_6IntValE';
create function udf_test.var_sum_multiply(double, int...) returns double
location '/test-warehouse/libTestUdfs.so'
symbol='_Z14VarSumMultiplyPN10impala_udf15FunctionContextERKNS_9DoubleValEiPKNS_6IntValE';
====

View File

@@ -184,3 +184,68 @@ int
---- RESULT
NULL
====
---- QUERY
select udf_test.var_sum(NULL, NULL, NULL)
---- TYPES
int
---- RESULT
NULL
====
---- QUERY
select udf_test.var_sum(1, 2, 3, 4, 5, 6)
---- TYPES
int
---- RESULT
21
====
---- QUERY
select tinyint_col, int_col, udf_test.var_sum(tinyint_col, int_col)
from functional.alltypestiny
---- TYPES
tinyint, int, int
---- RESULT
0,0,0
1,1,2
0,0,0
1,1,2
0,0,0
1,1,2
0,0,0
1,1,2
====
---- QUERY
select udf_test.var_sum_multiply(NULL, 1, 2)
---- TYPES
double
---- RESULT
NULL
====
---- QUERY
select udf_test.var_sum_multiply(1.0, 1, 2, NULL, 3)
---- TYPES
double
---- RESULT
NULL
====
---- QUERY
select udf_test.var_sum_multiply(5.0, 1, 2, 3, 4, 5, 6)
---- TYPES
double
---- RESULT
105
====
---- QUERY
select tinyint_col, int_col, udf_test.var_sum_multiply(2, tinyint_col, int_col)
from functional.alltypestiny
---- TYPES
tinyint, int, double
---- RESULT
0,0,0
1,1,4
0,0,0
1,1,4
0,0,0
1,1,4
0,0,0
1,1,4
====