[ 
https://issues.apache.org/jira/browse/PIG-320?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12614769#action_12614769
 ] 

Santhosh Srinivasan commented on PIG-320:
-----------------------------------------

EvalFunc implements the outputSchema method and returns null. UDF writers need 
not implement the outputSchema method. In th typechecker code, we verify the 
return value of outputSchema method and if it is NULL, then the return type is 
set to the type returned by getReturnType().

{code}
//In private void setUdfSchema
if (null != udfSchema) {
...
} else {
    func.setType(DataType.findType(ef.getReturnType()));
}

{code}

> The parser/type checker should use the getSchema method of UDFs to deduce 
> return type/schema
> --------------------------------------------------------------------------------------------
>
>                 Key: PIG-320
>                 URL: https://issues.apache.org/jira/browse/PIG-320
>             Project: Pig
>          Issue Type: Bug
>          Components: impl
>    Affects Versions: types_branch
>            Reporter: Santhosh Srinivasan
>            Assignee: Santhosh Srinivasan
>             Fix For: types_branch
>
>         Attachments: udf_outputSchema.patch
>
>
> Currently, the parser/type checker uses the getReturnType to deduce the 
> return type of the user defined function (UDF). This mechanism is 
> satisfactory only for basic types (int, long, ...); for composite types 
> (tuple, bag), the schema is also required.The abstract class EvalFunc 
> interface exposes the outputSchema to deduce the return type/schema of the 
> UDF. The parser/type checker should use this method to figure out the return 
> type/schema of the UDF and use it appropriately. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to