blob: 252d85cf379d56b7d4202319a6e4a8a316192a71 [file] [log] [blame]
====
---- QUERY
create function if not exists hive_pi() returns double
location '$FILESYSTEM_PREFIX/test-warehouse/hive-exec.jar'
symbol='org.apache.hadoop.hive.ql.udf.UDFPI';
---- RESULTS
'Function has been created.'
====
---- QUERY
create function if not exists foo() returns double
location '$FILESYSTEM_PREFIX/test-warehouse/not-a-real-file.so'
symbol='FnDoesNotExist';
---- CATCH
Could not load binary: $FILESYSTEM_PREFIX/test-warehouse/not-a-real-file.so
====
---- QUERY
create function if not exists foo() returns double
location '$FILESYSTEM_PREFIX/test-warehouse/not-a-real-file.so'
symbol='FnDoesNotExist';
---- CATCH
Could not load binary: $FILESYSTEM_PREFIX/test-warehouse/not-a-real-file.so
====
---- QUERY
create function if not exists foo (string, string) returns string location
'$FILESYSTEM_PREFIX/test-warehouse/$DATABASE_bad_udf.ll' symbol='MyAwesomeUdf';
---- CATCH
Could not load binary: $FILESYSTEM_PREFIX/test-warehouse/$DATABASE_bad_udf.ll
Invalid bitcode signature
====
---- QUERY
# This test is run with codegen disabled. Interpretation only handles up to 20 arguments.
create function if not exists twenty_args(int, int, int, int, int, int,
int, int, int, int, int, int, int, int, int, int, int, int, int, int) returns int
location '$FILESYSTEM_PREFIX/test-warehouse/libTestUdfs.so'
symbol='TwentyArgs';
---- RESULTS
'Function has been created.'
====
---- QUERY
# Verifies that interpretation can support up to 20 arguments
select twenty_args(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20);
---- TYPES
INT
---- RESULTS
210
====
---- QUERY
# This test is run with codegen disabled. Interpretation only handles up to 20 arguments.
create function if not exists twenty_one_args(int, int, int, int, int, int,
int, int, int, int, int, int, int, int, int, int, int, int, int, int, int) returns int
location '$FILESYSTEM_PREFIX/test-warehouse/libTestUdfs.so'
symbol='TwentyOneArgs';
---- RESULTS
'Function has been created.'
====
---- QUERY
# Verifies that interpretation fails with more than 20 arguments.
select twenty_one_args(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21);
---- CATCH
Cannot interpret native UDF 'twenty_one_args': number of arguments is more than 20. Codegen is needed. Please set DISABLE_CODEGEN to false.
====
---- QUERY
# This test is run with codegen disabled. IR UDF will fail.
create function if not exists nine_args_ir(int, int, int, int, int, int,
int, int, int) returns int
location '$FILESYSTEM_PREFIX/test-warehouse/test-udfs.ll'
symbol='NineArgs';
---- RESULTS
'Function has been created.'
====
---- QUERY
select nine_args_ir(1,2,3,4,5,6,7,8,9);
---- CATCH
Cannot interpret LLVM IR UDF 'nine_args_ir': Codegen is needed. Please set DISABLE_CODEGEN to false.
====
---- QUERY
create function if not exists bad_expr(double) returns boolean
location '$FILESYSTEM_PREFIX/test-warehouse/libTestUdfs.so'
symbol='BadExpr' prepare_fn='BadExprPrepare' close_fn='BadExprClose';
---- RESULTS
'Function has been created.'
====
---- QUERY
create function if not exists bad_expr2(double) returns boolean
location '$FILESYSTEM_PREFIX/test-warehouse/libTestUdfs.so'
symbol='BadExpr' prepare_fn='BadExpr2Prepare' close_fn='BadExprClose';
---- RESULTS
'Function has been created.'
====
---- QUERY
select count(t1.int_col) from functional.alltypes t1 join functional.alltypes t2
on (bad_expr(rand()) = (t2.bool_col && t1.bool_col));
---- CATCH
BadExpr prepare error
====
---- QUERY
select count(t1.int_col) from functional.alltypes t1 join functional.alltypes t2
on (bad_expr2(rand()) = (t2.bool_col && t1.bool_col));
---- CATCH
BadExpr error
====
---- QUERY
select count(int_col) from functional.alltypes where bad_expr(rand());
---- CATCH
BadExpr prepare error
====
---- QUERY
select count(int_col) from functional.alltypes where bad_expr2(rand());
---- CATCH
BadExpr2 prepare error
====
---- QUERY
use default;
drop database $DATABASE;
---- CATCH
Cannot drop non-empty database:
====
---- QUERY
use $DATABASE;
drop function hive_pi();
drop function twenty_args(int, int, int, int, int, int, int, int,
int, int, int, int, int, int, int, int, int, int, int, int);
drop function twenty_one_args(int, int, int, int, int, int, int, int,
int, int, int, int, int, int, int, int, int, int, int, int, int);
drop function nine_args_ir(int, int, int, int, int, int, int, int, int);
drop function bad_expr(double);
drop function bad_expr2(double);
---- RESULTS
'Function has been dropped.'
====