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?



---

Reply via email to