[ 
https://issues.apache.org/jira/browse/BEAM-8070?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17060430#comment-17060430
 ] 

Andrew Pilloud commented on BEAM-8070:
--------------------------------------

>From our internal tests (shard 4)

INFO: Processing Sql statement: SELECT DISTINCT * from UNNEST(ARRAY<int64>[])
Mar 16, 2020 11:55:33 AM 
com.google.zetasql.io.grpc.internal.SerializingExecutor run
SEVERE: Exception while executing runnable 
com.google.zetasql.io.grpc.internal.ServerImpl$JumpToApplicationThreadServerStreamListener$1HalfClosed@79f9e5ed
java.lang.IndexOutOfBoundsException: index (0) must be less than size (0)
 at 
org.apache.beam.vendor.calcite.v1_20_0.com.google.common.base.Preconditions.checkElementIndex(Preconditions.java:310)
 at 
org.apache.beam.vendor.calcite.v1_20_0.com.google.common.base.Preconditions.checkElementIndex(Preconditions.java:293)
 at 
org.apache.beam.vendor.calcite.v1_20_0.com.google.common.collect.RegularImmutableList.get(RegularImmutableList.java:67)
 at 
org.apache.beam.vendor.calcite.v1_20_0.org.apache.calcite.rex.RexCallBinding.getOperandType(RexCallBinding.java:132)
 at 
org.apache.beam.vendor.calcite.v1_20_0.org.apache.calcite.sql.SqlOperatorBinding$1.get(SqlOperatorBinding.java:203)
 at 
org.apache.beam.vendor.calcite.v1_20_0.org.apache.calcite.sql.SqlOperatorBinding$1.get(SqlOperatorBinding.java:201)
 at 
org.apache.beam.vendor.calcite.v1_20_0.org.apache.calcite.sql.type.SqlTypeFactoryImpl.leastRestrictive(SqlTypeFactoryImpl.java:151)
 at 
org.apache.beam.vendor.calcite.v1_20_0.org.apache.calcite.sql.fun.SqlMultisetValueConstructor.getComponentType(SqlMultisetValueConstructor.java:82)
 at 
org.apache.beam.vendor.calcite.v1_20_0.org.apache.calcite.sql.fun.SqlArrayValueConstructor.inferReturnType(SqlArrayValueConstructor.java:35)
 at 
org.apache.beam.vendor.calcite.v1_20_0.org.apache.calcite.rex.RexBuilder.deriveReturnType(RexBuilder.java:276)
 at 
org.apache.beam.vendor.calcite.v1_20_0.org.apache.calcite.rex.RexBuilder.makeCall(RexBuilder.java:250)
 at 
org.apache.beam.sdk.extensions.sql.zetasql.translation.ExpressionConverter.convertArrayValueToRexNode(ExpressionConverter.java:670)
 at 
org.apache.beam.sdk.extensions.sql.zetasql.translation.ExpressionConverter.convertValueToRexNode(ExpressionConverter.java:567)
 at 
org.apache.beam.sdk.extensions.sql.zetasql.translation.ExpressionConverter.convertResolvedLiteral(ExpressionConverter.java:535)
 at 
org.apache.beam.sdk.extensions.sql.zetasql.translation.ArrayScanToUncollectConverter.convert(ArrayScanToUncollectConverter.java:45)
 at 
org.apache.beam.sdk.extensions.sql.zetasql.translation.ArrayScanToUncollectConverter.convert(ArrayScanToUncollectConverter.java:31)
 at 
org.apache.beam.sdk.extensions.sql.zetasql.translation.QueryStatementConverter.convertNode(QueryStatementConverter.java:97)
 at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
 at java.util.Collections$2.tryAdvance(Collections.java:4717)
 at java.util.Collections$2.forEachRemaining(Collections.java:4725)
 at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
 at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
 at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
 at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
 at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
 at 
org.apache.beam.sdk.extensions.sql.zetasql.translation.QueryStatementConverter.convertNode(QueryStatementConverter.java:96)
 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 
cloud.dataflow.sql.ExecuteQueryServiceServer$SqlComplianceServiceImpl.executeQuery(ExecuteQueryServiceServer.java:242)
 at 
com.google.zetasql.testing.SqlComplianceServiceGrpc$MethodHandlers.invoke(SqlComplianceServiceGrpc.java:423)
 at 
com.google.zetasql.io.grpc.stub.ServerCalls$UnaryServerCallHandler$UnaryServerCallListener.onHalfClose(ServerCalls.java:171)
 at 
com.google.zetasql.io.grpc.internal.ServerCallImpl$ServerStreamListenerImpl.halfClosed(ServerCallImpl.java:283)
 at 
com.google.zetasql.io.grpc.internal.ServerImpl$JumpToApplicationThreadServerStreamListener$1HalfClosed.runInContext(ServerImpl.java:711)
 at 
com.google.zetasql.io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37)
 at 
com.google.zetasql.io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:123)
 at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
 at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
 at java.lang.Thread.run(Thread.java:748)

> Support empty array literal
> ---------------------------
>
>                 Key: BEAM-8070
>                 URL: https://issues.apache.org/jira/browse/BEAM-8070
>             Project: Beam
>          Issue Type: Sub-task
>          Components: dsl-sql-zetasql
>            Reporter: Rui Wang
>            Assignee: Andrew Pilloud
>            Priority: Major
>          Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> Currently BeamSQL throws an IndexOutOfBoundsException when given a query with 
> an empty array literal. This happens because Calcite attempts to infer the 
> element types [1,2] from an empty element list.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to