[ https://issues.apache.org/jira/browse/FLINK-5881?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15903184#comment-15903184 ]
ASF GitHub Bot commented on FLINK-5881: --------------------------------------- Github user twalthr commented on a diff in the pull request: https://github.com/apache/flink/pull/3389#discussion_r105186593 --- Diff: flink-libraries/flink-table/src/main/scala/org/apache/flink/table/functions/utils/UserDefinedFunctionUtils.scala --- @@ -139,9 +143,35 @@ object UserDefinedFunctionUtils { s"Function class '${function.getClass.getCanonicalName}' does not implement at least " + s"one method named 'eval' which is public, not abstract and " + s"(in case of table functions) not static.") - } else { - methods } + + verifyScalaVarargsAnnotation(methods) + methods + } + + /** + * If users specified an @varargs, Scala will generate two methods indeed. + * If there does not exist corresponding varargs method of the Seq method, + * we will throw an ValidationException. + */ + def verifyScalaVarargsAnnotation(methods: Array[Method]) = { + methods.foreach(method => { + val signatures = method.getParameterTypes + if (signatures.nonEmpty && + signatures.last.getName.equals("scala.collection.Seq") && --- End diff -- I think this condition is too strict. It wouldn't allow `Seq`s in functions which is one of the most important classes in Scala. This does not work right now: ``` object Func16 extends ScalarFunction { def eval(a: Seq[String]): String = { a.mkString(", ") } } ``` > 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)