[ 
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)

Reply via email to