Skip to content

Commit 5d3088f

Browse files
authored
Bump zetasql version to 2024.11.1 (#32902)
1 parent d2e9928 commit 5d3088f

File tree

3 files changed

+16
-6
lines changed

3 files changed

+16
-6
lines changed

sdks/java/extensions/sql/zetasql/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ applyJavaNature(
2727
description = "Apache Beam :: SDKs :: Java :: Extensions :: SQL :: ZetaSQL"
2828
ext.summary = "ZetaSQL to Calcite translator"
2929

30-
def zetasql_version = "2022.04.1"
30+
def zetasql_version = "2024.11.1"
3131

3232
dependencies {
3333
// TODO(https://github.com/apache/beam/issues/21156): Determine how to build without this dependency

sdks/java/extensions/sql/zetasql/src/main/java/org/apache/beam/sdk/extensions/sql/zetasql/translation/AggregateScanConverter.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import com.google.zetasql.resolvedast.ResolvedNodes.ResolvedAggregateFunctionCall;
3030
import com.google.zetasql.resolvedast.ResolvedNodes.ResolvedAggregateScan;
3131
import com.google.zetasql.resolvedast.ResolvedNodes.ResolvedComputedColumn;
32+
import com.google.zetasql.resolvedast.ResolvedNodes.ResolvedComputedColumnBase;
3233
import com.google.zetasql.resolvedast.ResolvedNodes.ResolvedExpr;
3334
import java.util.ArrayList;
3435
import java.util.Arrays;
@@ -94,7 +95,7 @@ public RelNode convert(ResolvedAggregateScan zetaNode, List<RelNode> inputs) {
9495
aggregateCalls = new ArrayList<>();
9596
// For aggregate calls, their input ref follow after GROUP BY input ref.
9697
int columnRefoff = groupFieldsListSize;
97-
for (ResolvedComputedColumn computedColumn : zetaNode.getAggregateList()) {
98+
for (ResolvedComputedColumnBase computedColumn : zetaNode.getAggregateList()) {
9899
AggregateCall aggCall =
99100
convertAggCall(computedColumn, columnRefoff, groupSet.size(), input);
100101
aggregateCalls.add(aggCall);
@@ -144,7 +145,7 @@ private LogicalProject convertAggregateScanInputScanToLogicalProject(
144145
// LogicalProject should also include columns used by aggregate functions. These columns should
145146
// follow after GROUP BY columns.
146147
// TODO: remove duplicate columns in projects.
147-
for (ResolvedComputedColumn resolvedComputedColumn : node.getAggregateList()) {
148+
for (ResolvedComputedColumnBase resolvedComputedColumn : node.getAggregateList()) {
148149
// Should create Calcite's RexInputRef from ResolvedColumn from ResolvedComputedColumn.
149150
// TODO: handle aggregate function with more than one argument and handle OVER
150151
// TODO: is there is general way for column reference tracking and deduplication for
@@ -180,7 +181,7 @@ private LogicalProject convertAggregateScanInputScanToLogicalProject(
180181
}
181182

182183
private AggregateCall convertAggCall(
183-
ResolvedComputedColumn computedColumn, int columnRefOff, int groupCount, RelNode input) {
184+
ResolvedComputedColumnBase computedColumn, int columnRefOff, int groupCount, RelNode input) {
184185
ResolvedAggregateFunctionCall aggregateFunctionCall =
185186
(ResolvedAggregateFunctionCall) computedColumn.getExpr();
186187

sdks/java/extensions/sql/zetasql/src/main/java/org/apache/beam/sdk/extensions/sql/zetasql/translation/ExpressionConverter.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import com.google.common.collect.ImmutableMap;
3838
import com.google.common.collect.ImmutableSet;
3939
import com.google.zetasql.TVFRelation;
40+
import com.google.zetasql.TVFRelation.Column;
4041
import com.google.zetasql.TableValuedFunction;
4142
import com.google.zetasql.TableValuedFunction.FixedOutputSchemaTVF;
4243
import com.google.zetasql.Type;
@@ -65,6 +66,7 @@
6566
import java.util.Map;
6667
import java.util.stream.Collectors;
6768
import java.util.stream.IntStream;
69+
import org.apache.beam.repackaged.core.org.apache.commons.lang3.reflect.FieldUtils;
6870
import org.apache.beam.sdk.annotations.Internal;
6971
import org.apache.beam.sdk.extensions.sql.impl.QueryPlanner.QueryParameters;
7072
import org.apache.beam.sdk.extensions.sql.impl.ZetaSqlUserDefinedSQLNativeTableValuedFunction;
@@ -495,9 +497,16 @@ public RexCall convertTableValuedFunction(
495497
new ZetaSqlUserDefinedSQLNativeTableValuedFunction(
496498
new SqlIdentifier(tvf.getName(), SqlParserPos.ZERO),
497499
opBinding -> {
500+
TVFRelation rel = fixedOutputSchemaTVF.getOutputSchema();
501+
// TODO(yathu) revert this workaround when ZetaSQL adds back this API.
502+
List<Column> cols;
503+
try {
504+
cols = (List<Column>) FieldUtils.readField(rel, "columns", true);
505+
} catch (IllegalAccessException e) {
506+
throw new RuntimeException(e);
507+
}
498508
List<RelDataTypeField> relDataTypeFields =
499-
convertTVFRelationColumnsToRelDataTypeFields(
500-
fixedOutputSchemaTVF.getOutputSchema().getColumns());
509+
convertTVFRelationColumnsToRelDataTypeFields(cols);
501510
return new RelRecordType(relDataTypeFields);
502511
},
503512
null,

0 commit comments

Comments
 (0)