You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beam.apache.org by ib...@apache.org on 2021/03/24 00:46:08 UTC

[beam] branch master updated: [BEAM-12042] Check TVF argument list size.

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 135974e  [BEAM-12042] Check TVF argument list size.
     new 7bb91fb  Merge pull request #14316 from ibzib/BEAM-12042
135974e is described below

commit 135974eaf3edbec0f774a42828a9ab16dec34768
Author: Kyle Weaver <kc...@google.com>
AuthorDate: Tue Mar 23 12:51:54 2021 -0700

    [BEAM-12042] Check TVF argument list size.
---
 .../sql/zetasql/translation/TVFScanConverter.java   |  3 ++-
 .../sql/zetasql/ZetaSqlNativeUdfTest.java           | 21 +++++++++++++++++++++
 2 files changed, 23 insertions(+), 1 deletion(-)

diff --git a/sdks/java/extensions/sql/zetasql/src/main/java/org/apache/beam/sdk/extensions/sql/zetasql/translation/TVFScanConverter.java b/sdks/java/extensions/sql/zetasql/src/main/java/org/apache/beam/sdk/extensions/sql/zetasql/translation/TVFScanConverter.java
index 01a1df2..d971ce0 100644
--- a/sdks/java/extensions/sql/zetasql/src/main/java/org/apache/beam/sdk/extensions/sql/zetasql/translation/TVFScanConverter.java
+++ b/sdks/java/extensions/sql/zetasql/src/main/java/org/apache/beam/sdk/extensions/sql/zetasql/translation/TVFScanConverter.java
@@ -52,7 +52,8 @@ class TVFScanConverter extends RelConverter<ResolvedTVFScan> {
                 input,
                 zetaNode.getTvf(),
                 zetaNode.getArgumentList(),
-                zetaNode.getArgumentList().get(0).getScan() != null
+                zetaNode.getArgumentList().size() > 0
+                        && zetaNode.getArgumentList().get(0).getScan() != null
                     ? zetaNode.getArgumentList().get(0).getScan().getColumnList()
                     : Collections.emptyList());
     RelNode tableFunctionScan =
diff --git a/sdks/java/extensions/sql/zetasql/src/test/java/org/apache/beam/sdk/extensions/sql/zetasql/ZetaSqlNativeUdfTest.java b/sdks/java/extensions/sql/zetasql/src/test/java/org/apache/beam/sdk/extensions/sql/zetasql/ZetaSqlNativeUdfTest.java
index 0357242..d1fecc2 100644
--- a/sdks/java/extensions/sql/zetasql/src/test/java/org/apache/beam/sdk/extensions/sql/zetasql/ZetaSqlNativeUdfTest.java
+++ b/sdks/java/extensions/sql/zetasql/src/test/java/org/apache/beam/sdk/extensions/sql/zetasql/ZetaSqlNativeUdfTest.java
@@ -184,6 +184,27 @@ public class ZetaSqlNativeUdfTest extends ZetaSqlTestBase {
   }
 
   @Test
+  public void testNullaryUdtvf() {
+    String sql =
+        "CREATE TABLE FUNCTION CustomerRange()\n"
+            + "  AS\n"
+            + "    SELECT *\n"
+            + "    FROM KeyValue;\n"
+            + " SELECT key FROM CustomerRange()";
+
+    ZetaSQLQueryPlanner zetaSQLQueryPlanner = new ZetaSQLQueryPlanner(config);
+    BeamRelNode beamRelNode = zetaSQLQueryPlanner.convertToBeamRel(sql);
+    PCollection<Row> stream = BeamSqlRelUtils.toPCollection(pipeline, beamRelNode);
+
+    Schema singleField = Schema.builder().addInt64Field("field1").build();
+    PAssert.that(stream)
+        .containsInAnyOrder(
+            Row.withSchema(singleField).addValues(14L).build(),
+            Row.withSchema(singleField).addValues(15L).build());
+    pipeline.run().waitUntilFinish(Duration.standardMinutes(PIPELINE_EXECUTION_WAITTIME_MINUTES));
+  }
+
+  @Test
   public void testUDTVFTableNotFound() {
     String sql =
         "CREATE TABLE FUNCTION CustomerRange(MinID INT64, MaxID INT64)\n"