This is an automated email from the ASF dual-hosted git repository.

twalthr pushed a commit to branch release-1.11
in repository https://gitbox.apache.org/repos/asf/flink.git


The following commit(s) were added to refs/heads/release-1.11 by this push:
     new ca3f080  [FLINK-20680][table-common] Fix invalid validation of var-arg 
function with no parameters
ca3f080 is described below

commit ca3f080068266676ee5d3ff43918463dc794a99c
Author: Rui Li <li...@apache.org>
AuthorDate: Sat Dec 19 17:45:56 2020 +0800

    [FLINK-20680][table-common] Fix invalid validation of var-arg function with 
no parameters
---
 .../org/apache/flink/table/types/extraction/ExtractionUtils.java  | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git 
a/flink-table/flink-table-common/src/main/java/org/apache/flink/table/types/extraction/ExtractionUtils.java
 
b/flink-table/flink-table-common/src/main/java/org/apache/flink/table/types/extraction/ExtractionUtils.java
index e32c44b..02667a3 100644
--- 
a/flink-table/flink-table-common/src/main/java/org/apache/flink/table/types/extraction/ExtractionUtils.java
+++ 
b/flink-table/flink-table-common/src/main/java/org/apache/flink/table/types/extraction/ExtractionUtils.java
@@ -92,7 +92,8 @@ public final class ExtractionUtils {
         final int paramCount = executable.getParameterCount();
         final int classCount = classes.length;
         // check for enough classes for each parameter
-        if (classCount < paramCount || (executable.isVarArgs() && classCount < 
paramCount - 1)) {
+        if ((!executable.isVarArgs() && classCount != paramCount)
+                || (executable.isVarArgs() && classCount < paramCount - 1)) {
             return false;
         }
         int currentClass = 0;
@@ -109,8 +110,9 @@ public final class ExtractionUtils {
                                     classes[currentClass], paramComponent, 
true)) {
                         currentClass++;
                     }
-                } else if (parameterMatches(classes[currentClass], param)
-                        || parameterMatches(classes[currentClass], 
paramComponent)) {
+                } else if (currentClass < classCount
+                        && (parameterMatches(classes[currentClass], param)
+                                || parameterMatches(classes[currentClass], 
paramComponent))) {
                     currentClass++;
                 }
             }

Reply via email to