[ 
https://issues.apache.org/jira/browse/DRILL-7345?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16905462#comment-16905462
 ] 

Charles Givre commented on DRILL-7345:
--------------------------------------

Hi Volodymyr, 
I've been working on a bunch of UDFs, but let's take a simple one for example. 
`parse_user_agent`.  This function takes as an argument, a user agent and 
returns a map of the various fields such as browser name, version , os, etc. 
The issue arises when there are blank or null rows in the data.  If that 
happens, the function errors out. I would prefer to include null handling so 
that if the function encounters an empty row, it simply returns an empty list 
or map, but right now that doesn't seem feasible.  Here is the UDF: 
https://github.com/apache/drill/pull/1840/files 
<https://github.com/apache/drill/pull/1840/files> I have a few others as well, 
but this one is basically done.

If you add any null handling instruction to the function header (either NULL IF 
NULL or INTERNAL) the function will not be recognized.  If you set the input 
parameter to NullableVarChar, you get an error about Drill not finding the 
function.
If I were to create an additional UDF which perhaps accepts a NullableVarChar 
as an input parameter, and returns null, wouldn't that cause Drill to either 
add extra columns or otherwise cause problems?
-- C






> Strange Behavior for UDFs with ComplexWriter Output
> ---------------------------------------------------
>
>                 Key: DRILL-7345
>                 URL: https://issues.apache.org/jira/browse/DRILL-7345
>             Project: Apache Drill
>          Issue Type: Bug
>    Affects Versions: 1.17.0
>            Reporter: Charles Givre
>            Priority: Minor
>
> I wrote some UDFs recently and noticed some strange behavior when debugging 
> them. 
> This behavior only occurs when there is ComplexWriter as output.  
> Basically, if the input to the UDF is nullable, Drill doesn't recognize the 
> UDF at all.  I've found that the only way to get Drill to recognize UDFs that 
> have ComplexWriters as output is:
> * Use a non-nullable holder as input
> * Remove the null setting completely from the function parameters.
> This approach has a drawback in that if the function receives a null value, 
> it will throw an error and halt execution.  My preference would be to allow 
> null handling, but I've not figured out how to make that happen.
> Note:  This behavior ONLY occurs when using a ComplexWriter as output.  



--
This message was sent by Atlassian JIRA
(v7.6.14#76016)

Reply via email to