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?
---