This is an automated email from the ASF dual-hosted git repository.
yhu 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 5d3088f7489 Bump zetasql version to 2024.11.1 (#32902)
5d3088f7489 is described below
commit 5d3088f74894538cf35e86c18727379d5e40fc78
Author: Yi Hu <[email protected]>
AuthorDate: Wed Nov 20 13:23:52 2024 -0500
Bump zetasql version to 2024.11.1 (#32902)
---
sdks/java/extensions/sql/zetasql/build.gradle | 2 +-
.../sql/zetasql/translation/AggregateScanConverter.java | 7 ++++---
.../sql/zetasql/translation/ExpressionConverter.java | 13 +++++++++++--
3 files changed, 16 insertions(+), 6 deletions(-)
diff --git a/sdks/java/extensions/sql/zetasql/build.gradle
b/sdks/java/extensions/sql/zetasql/build.gradle
index 8d6e2aac0bf..29a3f95402b 100644
--- a/sdks/java/extensions/sql/zetasql/build.gradle
+++ b/sdks/java/extensions/sql/zetasql/build.gradle
@@ -27,7 +27,7 @@ applyJavaNature(
description = "Apache Beam :: SDKs :: Java :: Extensions :: SQL :: ZetaSQL"
ext.summary = "ZetaSQL to Calcite translator"
-def zetasql_version = "2022.04.1"
+def zetasql_version = "2024.11.1"
dependencies {
// TODO(https://github.com/apache/beam/issues/21156): Determine how to build
without this dependency
diff --git
a/sdks/java/extensions/sql/zetasql/src/main/java/org/apache/beam/sdk/extensions/sql/zetasql/translation/AggregateScanConverter.java
b/sdks/java/extensions/sql/zetasql/src/main/java/org/apache/beam/sdk/extensions/sql/zetasql/translation/AggregateScanConverter.java
index 2dfc7fe372f..412cd46001f 100644
---
a/sdks/java/extensions/sql/zetasql/src/main/java/org/apache/beam/sdk/extensions/sql/zetasql/translation/AggregateScanConverter.java
+++
b/sdks/java/extensions/sql/zetasql/src/main/java/org/apache/beam/sdk/extensions/sql/zetasql/translation/AggregateScanConverter.java
@@ -29,6 +29,7 @@ import com.google.zetasql.resolvedast.ResolvedNode;
import
com.google.zetasql.resolvedast.ResolvedNodes.ResolvedAggregateFunctionCall;
import com.google.zetasql.resolvedast.ResolvedNodes.ResolvedAggregateScan;
import com.google.zetasql.resolvedast.ResolvedNodes.ResolvedComputedColumn;
+import com.google.zetasql.resolvedast.ResolvedNodes.ResolvedComputedColumnBase;
import com.google.zetasql.resolvedast.ResolvedNodes.ResolvedExpr;
import java.util.ArrayList;
import java.util.Arrays;
@@ -94,7 +95,7 @@ class AggregateScanConverter extends
RelConverter<ResolvedAggregateScan> {
aggregateCalls = new ArrayList<>();
// For aggregate calls, their input ref follow after GROUP BY input ref.
int columnRefoff = groupFieldsListSize;
- for (ResolvedComputedColumn computedColumn :
zetaNode.getAggregateList()) {
+ for (ResolvedComputedColumnBase computedColumn :
zetaNode.getAggregateList()) {
AggregateCall aggCall =
convertAggCall(computedColumn, columnRefoff, groupSet.size(),
input);
aggregateCalls.add(aggCall);
@@ -144,7 +145,7 @@ class AggregateScanConverter extends
RelConverter<ResolvedAggregateScan> {
// LogicalProject should also include columns used by aggregate functions.
These columns should
// follow after GROUP BY columns.
// TODO: remove duplicate columns in projects.
- for (ResolvedComputedColumn resolvedComputedColumn :
node.getAggregateList()) {
+ for (ResolvedComputedColumnBase resolvedComputedColumn :
node.getAggregateList()) {
// Should create Calcite's RexInputRef from ResolvedColumn from
ResolvedComputedColumn.
// TODO: handle aggregate function with more than one argument and
handle OVER
// TODO: is there is general way for column reference tracking and
deduplication for
@@ -180,7 +181,7 @@ class AggregateScanConverter extends
RelConverter<ResolvedAggregateScan> {
}
private AggregateCall convertAggCall(
- ResolvedComputedColumn computedColumn, int columnRefOff, int groupCount,
RelNode input) {
+ ResolvedComputedColumnBase computedColumn, int columnRefOff, int
groupCount, RelNode input) {
ResolvedAggregateFunctionCall aggregateFunctionCall =
(ResolvedAggregateFunctionCall) computedColumn.getExpr();
diff --git
a/sdks/java/extensions/sql/zetasql/src/main/java/org/apache/beam/sdk/extensions/sql/zetasql/translation/ExpressionConverter.java
b/sdks/java/extensions/sql/zetasql/src/main/java/org/apache/beam/sdk/extensions/sql/zetasql/translation/ExpressionConverter.java
index 14db554d6f0..0f32451504b 100644
---
a/sdks/java/extensions/sql/zetasql/src/main/java/org/apache/beam/sdk/extensions/sql/zetasql/translation/ExpressionConverter.java
+++
b/sdks/java/extensions/sql/zetasql/src/main/java/org/apache/beam/sdk/extensions/sql/zetasql/translation/ExpressionConverter.java
@@ -37,6 +37,7 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.zetasql.TVFRelation;
+import com.google.zetasql.TVFRelation.Column;
import com.google.zetasql.TableValuedFunction;
import com.google.zetasql.TableValuedFunction.FixedOutputSchemaTVF;
import com.google.zetasql.Type;
@@ -65,6 +66,7 @@ import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
+import
org.apache.beam.repackaged.core.org.apache.commons.lang3.reflect.FieldUtils;
import org.apache.beam.sdk.annotations.Internal;
import org.apache.beam.sdk.extensions.sql.impl.QueryPlanner.QueryParameters;
import
org.apache.beam.sdk.extensions.sql.impl.ZetaSqlUserDefinedSQLNativeTableValuedFunction;
@@ -495,9 +497,16 @@ public class ExpressionConverter {
new ZetaSqlUserDefinedSQLNativeTableValuedFunction(
new SqlIdentifier(tvf.getName(), SqlParserPos.ZERO),
opBinding -> {
+ TVFRelation rel =
fixedOutputSchemaTVF.getOutputSchema();
+ // TODO(yathu) revert this workaround when ZetaSQL
adds back this API.
+ List<Column> cols;
+ try {
+ cols = (List<Column>) FieldUtils.readField(rel,
"columns", true);
+ } catch (IllegalAccessException e) {
+ throw new RuntimeException(e);
+ }
List<RelDataTypeField> relDataTypeFields =
- convertTVFRelationColumnsToRelDataTypeFields(
-
fixedOutputSchemaTVF.getOutputSchema().getColumns());
+ convertTVFRelationColumnsToRelDataTypeFields(cols);
return new RelRecordType(relDataTypeFields);
},
null,