You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@beam.apache.org by "Andrew Pilloud (Jira)" <ji...@apache.org> on 2020/02/13 21:31:00 UTC
[jira] [Commented] (BEAM-9311) ZetaSQL Named Parameters are lower
case, don't treat as case-sensitive
[ https://issues.apache.org/jira/browse/BEAM-9311?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17036519#comment-17036519 ]
Andrew Pilloud commented on BEAM-9311:
--------------------------------------
FYI [~ibzib], I believe this fix should be internal to ZetaSQL Translator, but wanted to make you aware of the bug.
> ZetaSQL Named Parameters are lower case, don't treat as case-sensitive
> ----------------------------------------------------------------------
>
> Key: BEAM-9311
> URL: https://issues.apache.org/jira/browse/BEAM-9311
> Project: Beam
> Issue Type: Bug
> Components: dsl-sql-zetasql
> Reporter: Andrew Pilloud
> Assignee: Andrew Pilloud
> Priority: Major
>
> ZetaSQL Named Parameters are case insensitive, always resolved to lower case.
> See: https://github.com/google/zetasql/blob/79adcd0fe227173e68ed7aa88f580a691ebe82c2/zetasql/analyzer/resolver_expr.cc#L1342
> java.lang.NullPointerException at org.apache.beam.sdk.extensions.sql.zetasql.translation.ExpressionConverter.convertResolvedParameter(ExpressionConverter.java:962) at org.apache.beam.sdk.extensions.sql.zetasql.translation.ExpressionConverter.convertRexNodeFromResolvedExpr(ExpressionConverter.java:311) at org.apache.beam.sdk.extensions.sql.zetasql.translation.ExpressionConverter.convertRexNodeFromComputedColumnWithFieldList(ExpressionConverter.java:460) at org.apache.beam.sdk.extensions.sql.zetasql.translation.ExpressionConverter.retrieveRexNode(ExpressionConverter.java:207) at org.apache.beam.sdk.extensions.sql.zetasql.translation.ProjectScanConverter.convert(ProjectScanConverter.java:45) at org.apache.beam.sdk.extensions.sql.zetasql.translation.ProjectScanConverter.convert(ProjectScanConverter.java:29) at org.apache.beam.sdk.extensions.sql.zetasql.translation.QueryStatementConverter.convertNode(QueryStatementConverter.java:97) at org.apache.beam.sdk.extensions.sql.zetasql.translation.QueryStatementConverter.convert(QueryStatementConverter.java:84) at org.apache.beam.sdk.extensions.sql.zetasql.translation.QueryStatementConverter.convertRootQuery(QueryStatementConverter.java:51) at org.apache.beam.sdk.extensions.sql.zetasql.ZetaSQLPlannerImpl.rel(ZetaSQLPlannerImpl.java:160) at org.apache.beam.sdk.extensions.sql.zetasql.ZetaSQLQueryPlanner.convertToBeamRelInternal(ZetaSQLQueryPlanner.java:131) at org.apache.beam.sdk.extensions.sql.zetasql.ZetaSQLQueryPlanner.convertToBeamRel(ZetaSQLQueryPlanner.java:115) at org.apache.beam.sdk.extensions.sql.zetasql.ZetaSQLQueryPlanner.convertToBeamRel(ZetaSQLQueryPlanner.java:103) at org.apache.beam.sdk.extensions.sql.zetasql.ZetaSQLDialectSpecTest.testNamedParameterQuery(ZetaSQLDialectSpecTest.java:3245)
>
> Repro:
>
> {code:java}
> @Test
> public void testNamedParameterQuery() {
> String sql = "SELECT @ColA AS ColA";
> ImmutableMap<String, Value> params = ImmutableMap.of("ColA", Value.createInt64Value(5));
> ZetaSQLQueryPlanner zetaSQLQueryPlanner = new ZetaSQLQueryPlanner(config);
> BeamRelNode beamRelNode = zetaSQLQueryPlanner.convertToBeamRel(sql, params);
> PCollection<Row> stream = BeamSqlRelUtils.toPCollection(pipeline, beamRelNode);
> final Schema schema = Schema.builder().addInt64Field("field1").build();
> PAssert.that(stream).containsInAnyOrder(Row.withSchema(schema).addValues(5L).build());
> pipeline.run().waitUntilFinish(Duration.standardMinutes(PIPELINE_EXECUTION_WAITTIME_MINUTES));
> }
> {code}
>
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)