You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by tw...@apache.org on 2021/01/25 10:10:12 UTC

[flink] branch master updated (c4bfa9f -> 59454b8)

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

twalthr pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/flink.git.


    from c4bfa9f  [FLINK-21054][table-runtime-blink] Implement mini-batch optimized slicing window aggregate operator
     new 1ee13f2  [FLINK-20680][table-common] Fix invalid validation of var-arg function with no parameters
     new 59454b8  [FLINK-20680][table-planner-blink] Add additional var-arg tests

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../flink/table/module/hive/HiveModuleTest.java    | 14 ++++++
 .../table/types/extraction/ExtractionUtils.java    |  8 +--
 .../planner/runtime/stream/sql/FunctionITCase.java | 58 ++++++++++++++++++++++
 3 files changed, 77 insertions(+), 3 deletions(-)


[flink] 01/02: [FLINK-20680][table-common] Fix invalid validation of var-arg function with no parameters

Posted by tw...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 1ee13f261a04b3a5bdb223381348bb7789e60687
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/module/hive/HiveModuleTest.java | 14 ++++++++++++++
 .../flink/table/types/extraction/ExtractionUtils.java      |  8 +++++---
 2 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/flink-connectors/flink-connector-hive/src/test/java/org/apache/flink/table/module/hive/HiveModuleTest.java b/flink-connectors/flink-connector-hive/src/test/java/org/apache/flink/table/module/hive/HiveModuleTest.java
index 7a99054..76fb190 100644
--- a/flink-connectors/flink-connector-hive/src/test/java/org/apache/flink/table/module/hive/HiveModuleTest.java
+++ b/flink-connectors/flink-connector-hive/src/test/java/org/apache/flink/table/module/hive/HiveModuleTest.java
@@ -223,4 +223,18 @@ public class HiveModuleTest {
                         tableEnv.sqlQuery("select mod(-1,2),pmod(-1,2)").execute().collect());
         assertEquals("[-1,1]", results.toString());
     }
+
+    @Test
+    public void testCallUDFWithNoParam() {
+        TableEnvironment tableEnv = HiveTestUtils.createTableEnvWithBlinkPlannerBatchMode();
+
+        tableEnv.unloadModule("core");
+        tableEnv.loadModule("hive", new HiveModule());
+        tableEnv.loadModule("core", CoreModule.INSTANCE);
+
+        List<Row> results =
+                CollectionUtil.iteratorToList(
+                        tableEnv.sqlQuery("select `array`(),`map`()").execute().collect());
+        assertEquals("[[],{}]", results.toString());
+    }
 }
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 14dde1b..4c502d2 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++;
                 }
             }


[flink] 02/02: [FLINK-20680][table-planner-blink] Add additional var-arg tests

Posted by tw...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 59454b8f1f3d5738ea4ab5bc4c5717af1979e0ee
Author: Timo Walther <tw...@apache.org>
AuthorDate: Mon Jan 25 10:24:38 2021 +0100

    [FLINK-20680][table-planner-blink] Add additional var-arg tests
    
    This closes #14435.
---
 .../planner/runtime/stream/sql/FunctionITCase.java | 58 ++++++++++++++++++++++
 1 file changed, 58 insertions(+)

diff --git a/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/runtime/stream/sql/FunctionITCase.java b/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/runtime/stream/sql/FunctionITCase.java
index 28e896f..cbb18c1 100644
--- a/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/runtime/stream/sql/FunctionITCase.java
+++ b/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/runtime/stream/sql/FunctionITCase.java
@@ -666,6 +666,52 @@ public class FunctionITCase extends StreamingTestBase {
     }
 
     @Test
+    public void testVarArgScalarFunction() throws Exception {
+        final List<Row> sourceData = Arrays.asList(Row.of("Bob", 1), Row.of("Alice", 2));
+
+        TestCollectionTableFactory.reset();
+        TestCollectionTableFactory.initData(sourceData);
+
+        tEnv().executeSql(
+                        "CREATE TABLE SourceTable("
+                                + "  s STRING, "
+                                + "  i INT"
+                                + ")"
+                                + "WITH ("
+                                + "  'connector' = 'COLLECTION'"
+                                + ")");
+
+        tEnv().createTemporarySystemFunction("VarArgScalarFunction", VarArgScalarFunction.class);
+
+        final TableResult result =
+                tEnv().executeSql(
+                                "SELECT "
+                                        + "  VarArgScalarFunction(), "
+                                        + "  VarArgScalarFunction(i), "
+                                        + "  VarArgScalarFunction(i, i), "
+                                        + "  VarArgScalarFunction(s), "
+                                        + "  VarArgScalarFunction(s, i) "
+                                        + "FROM SourceTable");
+
+        final List<Row> actual = CollectionUtil.iteratorToList(result.collect());
+        final List<Row> expected =
+                Arrays.asList(
+                        Row.of(
+                                "(INT...)",
+                                "(INT...)",
+                                "(INT...)",
+                                "(STRING, INT...)",
+                                "(STRING, INT...)"),
+                        Row.of(
+                                "(INT...)",
+                                "(INT...)",
+                                "(INT...)",
+                                "(STRING, INT...)",
+                                "(STRING, INT...)"));
+        assertThat(actual, equalTo(expected));
+    }
+
+    @Test
     public void testRawLiteralScalarFunction() throws Exception {
         final List<Row> sourceData =
                 Arrays.asList(
@@ -1174,6 +1220,18 @@ public class FunctionITCase extends StreamingTestBase {
         }
     }
 
+    /** Function for testing variable arguments. */
+    @SuppressWarnings("unused")
+    public static class VarArgScalarFunction extends ScalarFunction {
+        public String eval(Integer... i) {
+            return "(INT...)";
+        }
+
+        public String eval(String s, Integer... i2) {
+            return "(STRING, INT...)";
+        }
+    }
+
     /** Function that returns a row. */
     @FunctionHint(output = @DataTypeHint("ROW<s STRING, sa ARRAY<STRING> NOT NULL>"))
     public static class RowTableFunction extends TableFunction<Row> {