| ==== |
| ---- 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.' |
| ==== |