[
https://issues.apache.org/jira/browse/FLINK-5881?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15879762#comment-15879762
]
ASF GitHub Bot commented on FLINK-5881:
---------------------------------------
Github user clarkyzl commented on a diff in the pull request:
https://github.com/apache/flink/pull/3389#discussion_r102628111
--- Diff:
flink-libraries/flink-table/src/main/scala/org/apache/flink/table/functions/utils/UserDefinedFunctionUtils.scala
---
@@ -140,6 +147,25 @@ object UserDefinedFunctionUtils {
s"one method named 'eval' which is public, not abstract and " +
s"(in case of table functions) not static.")
} else {
+ var trailingSeq = false
+ var trailingArray = false
+ methods.foreach(method => {
+ val signatures = method.getParameterTypes
+ if (signatures.nonEmpty) {
+ val trailingArg = signatures(signatures.length - 1)
+ if (trailingArg.getName.equals("scala.collection.Seq")) {
+ trailingSeq = true
+ } else if (trailingArg.isArray) {
+ trailingArray = true
+ }
+ }
+ })
+ if (trailingSeq && !trailingArray) {
--- End diff --
If the users use the annotation `@scala.annotation.varargs`, Scala will
generate two signatures of the method. One is `T eval(scala.collection.Seq<T>
args)`, the other is `T eval(T[] args)`. A better idea is to compare every
arguments of the signature. We can make sure either there is only one method `T
eval(T[] args)`, or there are two methods: `T eval(scala.collection.Seq<T>
args)` and `T eval(T[] args)`.
> 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)