mirror of
https://github.com/apache/impala.git
synced 2025-12-19 18:12:08 -05:00
Before this patch if an argument of a GenericUDF was NULL, then Impala passed it as null instead of a DeferredObject. This was incorrect, as a DeferredObject is expected with a get() function that returns null. See the Jira for more details and GenericUDF examples in Hive. TestGenericUdf's NULL handling was further broken in IMPALA-11549, leading to throwing null pointer exceptions when the UDF's result is NULL. This test bug was not detected, because Hive udf tests were running with default abort_java_udf_on_exception=false, which means that exceptions from Hive UDFs only led to warnings and returning NULL, which was the expected result in all affected test queries. This patch fixes the behavior in HiveUdfExecutorGeneric and improves FE/EE tests to catch null handling related issues. Most Hive UDF tests are run with abort_java_udf_on_exception=true after this patch to treat exceptions in UDFs as errors. The ones where the test checks that NULL is returned if an exception is thrown while abort_java_udf_on_exception is false are moved to new .test files. TestGenericUdf is also fixed (and simplified) to handle NULL return values correctly. Change-Id: I53238612f4037572abb6d2cc913dd74ee830a9c9 Reviewed-on: http://gerrit.cloudera.org:8080/19499 Reviewed-by: Impala Public Jenkins <impala-public-jenkins@cloudera.com> Tested-by: Impala Public Jenkins <impala-public-jenkins@cloudera.com>
24 lines
311 B
Plaintext
24 lines
311 B
Plaintext
====
|
|
---- QUERY
|
|
# IMPALA-1392: Hive UDFs that throw exceptions should return NULL
|
|
select generic_throws_exception();
|
|
---- TYPES
|
|
boolean
|
|
---- RESULTS
|
|
NULL
|
|
====
|
|
---- QUERY
|
|
select generic_throws_exception() from functional.alltypestiny;
|
|
---- TYPES
|
|
boolean
|
|
---- RESULTS
|
|
NULL
|
|
NULL
|
|
NULL
|
|
NULL
|
|
NULL
|
|
NULL
|
|
NULL
|
|
NULL
|
|
====
|