[
https://issues.apache.org/jira/browse/FLINK-5881?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15878345#comment-15878345
]
ASF GitHub Bot commented on FLINK-5881:
---------------------------------------
Github user wuchong commented on a diff in the pull request:
https://github.com/apache/flink/pull/3389#discussion_r102470461
--- Diff:
flink-libraries/flink-table/src/main/scala/org/apache/flink/table/functions/utils/UserDefinedFunctionUtils.scala
---
@@ -87,10 +87,16 @@ object UserDefinedFunctionUtils {
// go over all signatures and find one matching actual signature
.find { curSig =>
// match parameters of signature to actual parameters
- actualSignature.length == curSig.length &&
+ (actualSignature.length == curSig.length &&
curSig.zipWithIndex.forall { case (clazz, i) =>
parameterTypeEquals(actualSignature(i), clazz)
- }
+ }) ||
+ // matching the style which last argument is variable, eg.
"Type..." "Type*"
+ (actualSignature.length >= curSig.length &&
+ curSig.zipWithIndex.forall { case (clazz, i) =>
+ parameterTypeEquals(actualSignature(i), clazz) ||
+ (i == curSig.length - 1 && clazz.isArray)
--- End diff --
Even if the last parameter type is an array type, it is possible not a
varargs method. Such as `public void eval(int[] arrays)` , it is not a varargs
method but a general method, we should add a test to check this feature not
affect general array method.
The best way to check whether a method is varargs is using
`Method.isVarArgs()`.
> ScalarFunction(UDF) should support variable types and variable arguments
> -------------------------------------------------------------------------
>
> Key: FLINK-5881
> URL: https://issues.apache.org/jira/browse/FLINK-5881
> Project: Flink
> Issue Type: Sub-task
> Reporter: Zhuoluo Yang
> Assignee: Zhuoluo Yang
>
> As a sub-task of FLINK-5826. We would like to support the ScalarFunction
> first and make the review a little bit easier.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)