[
https://issues.apache.org/jira/browse/FLINK-22451?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17331693#comment-17331693
]
Yi Tang commented on FLINK-22451:
---------------------------------
Great. Let me explain it in detail.
We can allow users call function by {{call(function, [args]*, $("\*")) }} in
table API, which means user can use {{$("\*")}} as the last parameter in the
list.
Correspondingly, use can define a var-args function, with the last argument
like {{@DataTypeHint(inputGroup = InputGroup.ANY) Object... row}}
An example based on {{GettingStartedExample}} can be like following:
{code}
env.from("customers").filter(call(Filter.class, LocalDate.of(1980, 1, 1),
$("*")))
public static class Filter extends ScalarFunction {
public Boolean eval(
LocalDate expected, @DataTypeHint(inputGroup = InputGroup.ANY)
Object... row) {
return row[5] != null
&& Boolean.TRUE.equals(row[6])
&& ((LocalDate) row[1]).isAfter(expected);
}
}
{code}
> Support (*) as parameter of table UserDefinedFunction
> ------------------------------------------------------
>
> Key: FLINK-22451
> URL: https://issues.apache.org/jira/browse/FLINK-22451
> Project: Flink
> Issue Type: Improvement
> Components: Table SQL / API
> Reporter: Yi Tang
> Priority: Minor
>
> For now, one can use star \(*) to act as a wild card, selecting all of the
> columns in the table.
> {code:java}
> Table result = orders.select($("*"));
> {code}
> When one use a star \(*) as parameter of an UDF, it will fail
> {{ReferenceResolverRule}} in on
> {code:java}
> "Cannot resolve field [*], input field list:[...]."
> {code}
> The cause is that, the parameter of an UDF is not expanded in
> {{StarReferenceFlatteningRule}}
> I think we can support to expand the star parameter to the real fields list
> if it is the only parameter(the last parameter is also ok) of the UDF.
> then the parameters can be received by
> {code:java}
> eval(@DataTypeHint(inputGroup = InputGroup.ANY) Object... row)
> {code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)