[
https://issues.apache.org/jira/browse/FLINK-9294?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16534424#comment-16534424
]
Rong Rong commented on FLINK-9294:
----------------------------------
Thanks [~twalthr] for the heads up. Yes I think both type extractor extracts it
as GenericTypeInfo. But I think we can use a more intelligent method to match
functions in `UserDefinedFunctionUtils`
However, I dug a little deeper into this. seems like the actual problem was the
mismatching of Map / Array between Scala and Java.
For a simple function:
{code:java}
public static class JavaFunc5 extends ScalarFunction {
public String[] eval(Map<String, ?> map) {
return map.keySet().toArray(new String[0]);
}
}
{code}
The following SQL can find function match: `SELECT fun(a) FROM table` when
table is a java.util.Map class. while it will fail for scala Map
Similar things happens to array as well. Will follow up with that first.
> Improve type inference for UDFs with composite parameter or result type
> ------------------------------------------------------------------------
>
> Key: FLINK-9294
> URL: https://issues.apache.org/jira/browse/FLINK-9294
> Project: Flink
> Issue Type: Sub-task
> Components: Table API & SQL
> Reporter: Rong Rong
> Assignee: Rong Rong
> Priority: Major
>
> Most of the UDF function signatures that includes composite types such as
> *{{MAP}}*, *{{ARRAY}}*, etc would require user to override
> *{{getParameterType}}* or *{{getResultType}}* method explicitly.
> It should be able to resolve the composite type based on the function
> signature, such as:
> {code:java}
> public String[] eval(Map<String, Integer> mapArg) { /* ... */ }
> {code}
> should either
> 1. Automatically resolve that:
> - *{{ObjectArrayTypeInfo<BasicTypeInfo.STRING>}}* to be the result type.
> - *{{MapTypeInfo<BasicTypeInfo.STRING, BasicTypeInfo.INTEGER>}}* to be the
> parameter type.
> 2. Improved function mapping to find and locate function with such signatures.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)