You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beam.apache.org by ap...@apache.org on 2021/08/30 23:42:39 UTC

[beam] branch updatecalcite created (now c79f671)

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

apilloud pushed a change to branch updatecalcite
in repository https://gitbox.apache.org/repos/asf/beam.git.


      at c79f671  Update CreateFunction

This branch includes the following new commits:

     new 01101b3  Make it functional
     new c79f671  Update CreateFunction

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.


[beam] 02/02: Update CreateFunction

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

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

commit c79f671d64435fb1f34e95fdbafc10fdb98d8e70
Author: Andrew Pilloud <ap...@google.com>
AuthorDate: Mon Aug 30 15:44:49 2021 -0700

    Update CreateFunction
---
 sdks/java/extensions/sql/src/main/codegen/config.fmpp             | 2 +-
 .../java/extensions/sql/src/main/codegen/includes/parserImpls.ftl | 5 ++---
 .../beam/sdk/extensions/sql/impl/parser/SqlCreateFunction.java    | 8 ++++++--
 .../apache/beam/sdk/extensions/sql/impl/parser/BeamDDLTest.java   | 4 ++--
 4 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/sdks/java/extensions/sql/src/main/codegen/config.fmpp b/sdks/java/extensions/sql/src/main/codegen/config.fmpp
index 92a86dc..ca59015 100644
--- a/sdks/java/extensions/sql/src/main/codegen/config.fmpp
+++ b/sdks/java/extensions/sql/src/main/codegen/config.fmpp
@@ -386,7 +386,6 @@ data: {
       # Example: SqlShowDatabases(), SqlShowTables().
       statementParserMethods: [
         "SqlSetOptionBeam(Span.of(), null)"
-        "SqlCreateFunction()"
       ]
 
       # List of methods for parsing custom literals.
@@ -418,6 +417,7 @@ data: {
       # Each must accept arguments "(SqlParserPos pos, boolean replace)".
       createStatementParserMethods: [
         "SqlCreateExternalTable"
+        "SqlCreateFunction"
         "SqlCreateTableNotSupportedMessage"
       ]
 
diff --git a/sdks/java/extensions/sql/src/main/codegen/includes/parserImpls.ftl b/sdks/java/extensions/sql/src/main/codegen/includes/parserImpls.ftl
index 5a06274..84037c5 100644
--- a/sdks/java/extensions/sql/src/main/codegen/includes/parserImpls.ftl
+++ b/sdks/java/extensions/sql/src/main/codegen/includes/parserImpls.ftl
@@ -189,15 +189,13 @@ SqlCreate SqlCreateExternalTable(Span s, boolean replace) :
     }
 }
 
-SqlCreate SqlCreateFunction() :
+SqlCreate SqlCreateFunction(Span s, boolean replace) :
 {
-    final Span s = Span.of();
     boolean isAggregate = false;
     final SqlIdentifier name;
     final SqlNode jarName;
 }
 {
-    <CREATE>
     (
         <AGGREGATE> {
             isAggregate = true;
@@ -213,6 +211,7 @@ SqlCreate SqlCreateFunction() :
         return
             new SqlCreateFunction(
                 s.end(this),
+		replace,
                 name,
                 jarName,
                 isAggregate);
diff --git a/sdks/java/extensions/sql/src/main/java/org/apache/beam/sdk/extensions/sql/impl/parser/SqlCreateFunction.java b/sdks/java/extensions/sql/src/main/java/org/apache/beam/sdk/extensions/sql/impl/parser/SqlCreateFunction.java
index 09cc27e..1fd0643 100644
--- a/sdks/java/extensions/sql/src/main/java/org/apache/beam/sdk/extensions/sql/impl/parser/SqlCreateFunction.java
+++ b/sdks/java/extensions/sql/src/main/java/org/apache/beam/sdk/extensions/sql/impl/parser/SqlCreateFunction.java
@@ -56,8 +56,12 @@ public class SqlCreateFunction extends SqlCreate implements BeamSqlParser.Execut
 
   /** Creates a SqlCreateFunction. */
   public SqlCreateFunction(
-      SqlParserPos pos, SqlIdentifier functionName, SqlNode jarPath, boolean isAggregate) {
-    super(OPERATOR, pos, false, false);
+      SqlParserPos pos,
+      boolean replace,
+      SqlIdentifier functionName,
+      SqlNode jarPath,
+      boolean isAggregate) {
+    super(OPERATOR, pos, replace, false);
     this.functionName = Objects.requireNonNull(functionName, "functionName");
     this.jarPath = Objects.requireNonNull(jarPath, "jarPath");
     this.isAggregate = isAggregate;
diff --git a/sdks/java/extensions/sql/src/test/java/org/apache/beam/sdk/extensions/sql/impl/parser/BeamDDLTest.java b/sdks/java/extensions/sql/src/test/java/org/apache/beam/sdk/extensions/sql/impl/parser/BeamDDLTest.java
index 37e8aab..316f667 100644
--- a/sdks/java/extensions/sql/src/test/java/org/apache/beam/sdk/extensions/sql/impl/parser/BeamDDLTest.java
+++ b/sdks/java/extensions/sql/src/test/java/org/apache/beam/sdk/extensions/sql/impl/parser/BeamDDLTest.java
@@ -225,7 +225,7 @@ public class BeamDDLTest {
     SqlIdentifier name = new SqlIdentifier("foo", SqlParserPos.ZERO);
     SqlNode jarPath = SqlLiteral.createCharString("path/to/udf.jar", SqlParserPos.ZERO);
     SqlCreateFunction createFunction =
-        new SqlCreateFunction(SqlParserPos.ZERO, name, jarPath, false);
+        new SqlCreateFunction(SqlParserPos.ZERO, false, name, jarPath, false);
     SqlWriter sqlWriter = new SqlPrettyWriter(BeamBigQuerySqlDialect.DEFAULT);
 
     createFunction.unparse(sqlWriter, 0, 0);
@@ -239,7 +239,7 @@ public class BeamDDLTest {
     SqlIdentifier name = new SqlIdentifier("foo", SqlParserPos.ZERO);
     SqlNode jarPath = SqlLiteral.createCharString("path/to/udf.jar", SqlParserPos.ZERO);
     SqlCreateFunction createFunction =
-        new SqlCreateFunction(SqlParserPos.ZERO, name, jarPath, true);
+        new SqlCreateFunction(SqlParserPos.ZERO, false, name, jarPath, true);
     SqlWriter sqlWriter = new SqlPrettyWriter(BeamBigQuerySqlDialect.DEFAULT);
 
     createFunction.unparse(sqlWriter, 0, 0);

[beam] 01/02: Make it functional

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

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

commit 01101b397b78efa2a21447f7de45231ecb609c9a
Author: Andrew Pilloud <ap...@google.com>
AuthorDate: Mon Aug 30 15:30:06 2021 -0700

    Make it functional
---
 .../sql/impl/planner/RelMdNodeStats.java           | 27 ++++++++--------------
 1 file changed, 10 insertions(+), 17 deletions(-)

diff --git a/sdks/java/extensions/sql/src/main/java/org/apache/beam/sdk/extensions/sql/impl/planner/RelMdNodeStats.java b/sdks/java/extensions/sql/src/main/java/org/apache/beam/sdk/extensions/sql/impl/planner/RelMdNodeStats.java
index cfc40e9..ede7586 100644
--- a/sdks/java/extensions/sql/src/main/java/org/apache/beam/sdk/extensions/sql/impl/planner/RelMdNodeStats.java
+++ b/sdks/java/extensions/sql/src/main/java/org/apache/beam/sdk/extensions/sql/impl/planner/RelMdNodeStats.java
@@ -17,9 +17,10 @@
  */
 package org.apache.beam.sdk.extensions.sql.impl.planner;
 
-import java.util.ArrayList;
+import static org.apache.beam.sdk.util.Preconditions.checkArgumentNotNull;
+
 import java.util.List;
-import java.util.Set;
+import java.util.stream.Collectors;
 import org.apache.beam.sdk.extensions.sql.impl.rel.BeamRelNode;
 import org.apache.beam.vendor.calcite.v1_26_0.com.google.common.collect.Table;
 import org.apache.beam.vendor.calcite.v1_26_0.org.apache.calcite.rel.RelNode;
@@ -72,21 +73,13 @@ public class RelMdNodeStats implements MetadataHandler<NodeStatsMetadata> {
     // wraps the metadata provider with CachingRelMetadataProvider. However,
     // CachingRelMetadataProvider checks timestamp before returning previous results. Therefore,
     // there wouldn't be a problem in that case.
-    Set<Table.Cell<RelNode, List, Object>> cells = mq.map.cellSet();
-    List<Table.Cell<RelNode, List, Object>> keys = new ArrayList<>(cells.size());
-    for (Table.Cell<RelNode, List, Object> cell : cells) {
-      if (cell == null) {
-        continue;
-      }
-      Object rawValue = cell.getValue();
-      if (!(rawValue instanceof NodeStats)) {
-        continue;
-      }
-      NodeStats nodeStats = (NodeStats) rawValue;
-      if (nodeStats.isUnknown()) {
-        keys.add(cell);
-      }
-    }
+    List<Table.Cell<RelNode, List, Object>> keys =
+        mq.map.cellSet().stream()
+            .filter(entry -> entry != null)
+            .filter(entry -> entry.getValue() != null)
+            .filter(entry -> entry.getValue() instanceof NodeStats)
+            .filter(entry -> (checkArgumentNotNull((NodeStats) entry.getValue()).isUnknown())
+            .collect(Collectors.toList());
 
     keys.forEach(cell -> mq.map.remove(cell.getRowKey(), cell.getColumnKey()));