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
|