[ https://issues.apache.org/jira/browse/FLINK-8312?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16302868#comment-16302868 ]
ASF GitHub Bot commented on FLINK-8312: --------------------------------------- Github user sunjincheng121 commented on a diff in the pull request: https://github.com/apache/flink/pull/5206#discussion_r158604394 --- Diff: flink-libraries/flink-table/src/main/scala/org/apache/flink/table/functions/utils/ScalarSqlFunction.scala --- @@ -153,15 +154,19 @@ object ScalarSqlFunction { override def getOperandCountRange: SqlOperandCountRange = { var min = 255 var max = -1 + var isVarargs = false signatures.foreach( sig => { - var len = sig.length - if (len > 0 && sig(sig.length - 1).isArray) { - max = 254 // according to JVM spec 4.3.3 - len = sig.length - 1 + var len = sig._2.length + if (len > 0 && sig._1 && sig._2(sig._2.length - 1).isArray) { + isVarargs = true + len = sig._2.length - 1 --- End diff -- **approach 1:** sig._2.length - 1 => len -1 len = sig._2.length - 1 => len-1 **approach2** methods.foreach( m => { var len = m.getParameterTypes.length if (len > 0 && m.isVarArgs && m.getParameterTypes()(len - 1).isArray) { isVarargs = true len = len - 1 } max = Math.max(len, max) min = Math.min(len, min) }) Using approach2 we can remove "val signatures = methods.map(m => m.isVarArgs -> m.getParameterTypes)" What do you think? > Fix ScalarFunction varargs length exceeds 254 for SQL > ----------------------------------------------------- > > Key: FLINK-8312 > URL: https://issues.apache.org/jira/browse/FLINK-8312 > Project: Flink > Issue Type: Bug > Components: Table API & SQL > Reporter: Ruidong Li > Assignee: Ruidong Li > > With Varargs, TableAPI can handle scalar function call with parameters > exceeds 254 correctly. > This issue is intend to support long parameters for SQL -- This message was sent by Atlassian JIRA (v6.4.14#64029)