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 <[email protected]>
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> {

Reply via email to