Hi Kathir,
I tried the same query in embedded mode, and I got a different error.
java.lang.IndexOutOfBoundsException: index: 0, length: 8 (expected: range(0, 0))
at io.netty.buffer.DrillBuf.checkIndexD(DrillBuf.java:123)
at io.netty.buffer.DrillBuf.chk(DrillBuf.java:147)
at io.netty.buffer.DrillBuf.getLong(DrillBuf.java:493)
at
org.apache.drill.exec.vector.BigIntVector$Accessor.get(BigIntVector.java:353)
at
org.apache.drill.exec.vector.BigIntVector$Accessor.getObject(BigIntVector.java:359)
at
org.apache.drill.exec.vector.RepeatedBigIntVector$Accessor.getObject(RepeatedBigIntVector.java:297)
at
org.apache.drill.exec.vector.RepeatedBigIntVector$Accessor.getObject(RepeatedBigIntVector.java:288)
at
org.apache.drill.exec.vector.accessor.GenericAccessor.getObject(GenericAccessor.java:44)
at
org.apache.drill.exec.vector.accessor.BoundCheckingAccessor.getObject(BoundCheckingAccessor.java:148)
at
org.apache.drill.jdbc.impl.TypeConvertingSqlAccessor.getObject(TypeConvertingSqlAccessor.java:795)
at
org.apache.drill.jdbc.impl.AvaticaDrillSqlAccessor.getObject(AvaticaDrillSqlAccessor.java:179)
...
In this case, the Java client library is not able to consume the results sent
from the server, and the query was CANCELLED (as seen in the query profile, on
the web UI). Are you seeing the same?
I am not aware of any workarounds; this seems like a bug to me. Can you open a
ticket <https://issues.apache.org/jira/browse/DRILL>?
Thank you,
Sudheesh
> On Sep 13, 2016, at 7:10 AM, Kathiresan S <[email protected]>
> wrote:
>
> Hi,
>
> Additional info on this. Array column ('city' in the example) is the issue.
>
> 1. When i select the just the first occurrence of the array column, the
> query works fine
>
> select a.name,a.city[0],b.name from dfs.tmp.`data.json` a right join
> dfs.tmp.`cities.json` b on a.city[0]=b.id
>
> Result
> Jim 1 Sendurai
> null null NYC
>
>
> 2. And when i do a repeated_count on the array column, it returns -2 on the
> second row
>
> select a.name,repeated_count(a.city),b.name from dfs.tmp.`data.json` a
> right join dfs.tmp.`cities.json` b on a.city[0]=b.id
>
> Result
> Jim 2 Sendurai
> null -2 NYC
>
> Any idea/work around for this issue would be highly appreciated
>
> Thanks,
> Kathir
>
>
> On Sat, Sep 10, 2016 at 9:56 PM, Kathiresan S <[email protected]>
> wrote:
>
>> Hi, A Query with right outer join fails while the inner and left outer
>> joins work for the same data. I've replicated the issue with some simple
>> data here and this happens in both 1.6.0 and 1.8.0
>>
>> *Json file 1: data.json*
>>
>> { "name": "Jim","city" : [1,2]}
>>
>> *Json file 2: cities.json*
>>
>> {id:1,name:"Sendurai"}
>> {id:2,name:"NYC"}
>>
>> *Queries that work:*
>> 1. select a.name,a.city,b.id,b.name from dfs.tmp.`data.json` a left
>> outer join dfs.tmp.`cities.json` b on a.city[0]=b.id
>>
>> 2. select a.name,a.city,b.id,b.name from dfs.tmp.`data.json` a join
>> dfs.tmp.`cities.json` b on a.city[0]=b.id
>>
>> *Query that fails:*
>>
>> select a.name,a.city,b.id,b.name from dfs.tmp.`data.json` a right outer
>> join dfs.tmp.`cities.json` b on a.city[0]=b.id
>>
>> *On the server side, i see below error trace :*
>>
>> java.lang.IllegalStateException: QueryDataBatch was released twice.
>> at
>> org.apache.drill.exec.rpc.user.QueryDataBatch.release(QueryDataBatch.java:56)
>> [drill-java-exec-1.6.0.jar:1.6.0]
>> at
>> org.apache.drill.exec.rpc.user.QueryResultHandler.batchArrived(QueryResultHandler.java:167)
>> [drill-java-exec-1.6.0.jar:1.6.0]
>> at
>> org.apache.drill.exec.rpc.user.UserClient.handleReponse(UserClient.java:110)
>> ~[drill-java-exec-1.6.0.jar:1.6.0]
>> at org.apache.drill.exec.rpc.BasicClientWithConnection.handle(
>> BasicClientWithConnection.java:46) ~[drill-rpc-1.6.0.jar:1.6.0]
>> at org.apache.drill.exec.rpc.BasicClientWithConnection.handle(
>> BasicClientWithConnection.java:31) ~[drill-rpc-1.6.0.jar:1.6.0]
>> at org.apache.drill.exec.rpc.RpcBus.handle(RpcBus.java:67)
>> ~[drill-rpc-1.6.0.jar:1.6.0]
>> at org.apache.drill.exec.rpc.RpcBus$RequestEvent.run(RpcBus.java:374)
>> ~[drill-rpc-1.6.0.jar:1.6.0]
>> at org.apache.drill.common.SerializedExecutor$
>> RunnableProcessor.run(SerializedExecutor.java:89)
>> [drill-rpc-1.6.0.jar:1.6.0]
>> at
>> org.apache.drill.exec.rpc.RpcBus$SameExecutor.execute(RpcBus.java:252)
>> [drill-rpc-1.6.0.jar:1.6.0]
>> at
>> org.apache.drill.common.SerializedExecutor.execute(SerializedExecutor.java:123)
>> [drill-rpc-1.6.0.jar:1.6.0]
>> at
>> org.apache.drill.exec.rpc.RpcBus$InboundHandler.decode(RpcBus.java:285)
>> [drill-rpc-1.6.0.jar:1.6.0]
>> at
>> org.apache.drill.exec.rpc.RpcBus$InboundHandler.decode(RpcBus.java:257)
>> [drill-rpc-1.6.0.jar:1.6.0]
>> at io.netty.handler.codec.MessageToMessageDecoder.channelRead(
>> MessageToMessageDecoder.java:89) [netty-codec-4.0.27.Final.jar:
>> 4.0.27.Final]
>> at io.netty.channel.AbstractChannelHandlerContext.
>> invokeChannelRead(AbstractChannelHandlerContext.java:339)
>> [netty-transport-4.0.27.Final.jar:4.0.27.Final]
>> at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(
>> AbstractChannelHandlerContext.java:324) [netty-transport-4.0.27.Final.
>> jar:4.0.27.Final]
>> at
>> io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:254)
>> [netty-handler-4.0.27.Final.jar:4.0.27.Final]
>> at io.netty.channel.AbstractChannelHandlerContext.
>> invokeChannelRead(AbstractChannelHandlerContext.java:339)
>> [netty-transport-4.0.27.Final.jar:4.0.27.Final]
>> at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(
>> AbstractChannelHandlerContext.java:324) [netty-transport-4.0.27.Final.
>> jar:4.0.27.Final]
>> at io.netty.handler.codec.MessageToMessageDecoder.channelRead(
>> MessageToMessageDecoder.java:103) [netty-codec-4.0.27.Final.jar:
>> 4.0.27.Final]
>> at io.netty.channel.AbstractChannelHandlerContext.
>> invokeChannelRead(AbstractChannelHandlerContext.java:339)
>> [netty-transport-4.0.27.Final.jar:4.0.27.Final]
>> at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(
>> AbstractChannelHandlerContext.java:324) [netty-transport-4.0.27.Final.
>> jar:4.0.27.Final]
>> at
>> io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:242)
>> [netty-codec-4.0.27.Final.jar:4.0.27.Final]
>> at io.netty.channel.AbstractChannelHandlerContext.
>> invokeChannelRead(AbstractChannelHandlerContext.java:339)
>> [netty-transport-4.0.27.Final.jar:4.0.27.Final]
>> at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(
>> AbstractChannelHandlerContext.java:324) [netty-transport-4.0.27.Final.
>> jar:4.0.27.Final]
>> at io.netty.channel.ChannelInboundHandlerAdapter.channelRead(
>> ChannelInboundHandlerAdapter.java:86) [netty-transport-4.0.27.Final.
>> jar:4.0.27.Final]
>> at io.netty.channel.AbstractChannelHandlerContext.
>> invokeChannelRead(AbstractChannelHandlerContext.java:339)
>> [netty-transport-4.0.27.Final.jar:4.0.27.Final]
>> at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(
>> AbstractChannelHandlerContext.java:324) [netty-transport-4.0.27.Final.
>> jar:4.0.27.Final]
>> at io.netty.channel.DefaultChannelPipeline.fireChannelRead(
>> DefaultChannelPipeline.java:847) [netty-transport-4.0.27.Final.
>> jar:4.0.27.Final]
>>
>> Thanks,
>> Kathir
>>