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