You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tajo.apache.org by Shrikant Bang <sh...@outlook.com> on 2014/07/19 15:50:38 UTC

NullPointerException while executing limit clause

Hi Tajo Devs,
I have built TAJO  from src code checked out from github.I have created a database and external LINEITEM table using TAJO cli.
I tried running following query which gave me NullPointerException: 

select * from LINEITEM limit L_ORDERKEY;
As per my understanding this query is invalid, but got parsed without any exception .After debugging further I could able to get the actual error trace code as :
java.lang.NullPointerException	at org.apache.tajo.engine.eval.FieldEval.eval(FieldEval.java:47)	at org.apache.tajo.engine.planner.LogicalPlanner.visitLimit(LogicalPlanner.java:751)	at org.apache.tajo.engine.planner.LogicalPlanner.visitLimit(LogicalPlanner.java:61)	at org.apache.tajo.engine.planner.BaseAlgebraVisitor.visit(BaseAlgebraVisitor.java:58)	at org.apache.tajo.engine.planner.LogicalPlanner.visitProjection(LogicalPlanner.java:209)	at org.apache.tajo.engine.planner.LogicalPlanner.visitProjection(LogicalPlanner.java:61)	at org.apache.tajo.engine.planner.BaseAlgebraVisitor.visit(BaseAlgebraVisitor.java:55)	at org.apache.tajo.engine.planner.LogicalPlanner.createPlan(LogicalPlanner.java:125)	at org.apache.tajo.engine.planner.LogicalPlanner.createPlan(LogicalPlanner.java:111)	at org.apache.tajo.master.GlobalEngine.createLogicalPlan(GlobalEngine.java:468)	at org.apache.tajo.master.GlobalEngine.executeQuery(GlobalEngine.java:145)	at org.apache.tajo.master.TajoMasterClientService$TajoMasterClientProtocolServiceHandler.submitQuery(TajoMasterClientService.java:261)	at org.apache.tajo.ipc.TajoMasterClientProtocol$TajoMasterClientProtocolService$2.callBlockingMethod(TajoMasterClientProtocol.java:495)	at org.apache.tajo.rpc.BlockingRpcServer$ServerHandler.messageReceived(BlockingRpcServer.java:103)	at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)	at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)	at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791)	at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:296)	at org.jboss.netty.handler.codec.oneone.OneToOneDecoder.handleUpstream(OneToOneDecoder.java:70)	at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)	at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791)	at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:296)	at org.jboss.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived(FrameDecoder.java:462)	at org.jboss.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:443)	at org.jboss.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:303)	at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)	at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)	at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559)	at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:268)	at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:255)	at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88)	at org.jboss.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:109)	at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:312)	at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:90)	at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)	at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)	at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)	at java.lang.Thread.run(Thread.java:745)

It looks like a minor bug. Could you please confirm my understanding.
Thank You,Shrikant Bang. 		 	   		  

Re: NullPointerException while executing limit clause

Posted by Hyunsik Choi <hy...@apache.org>.
Hi,

Any column reference is not allowed in LIMIT cause. You need to use
any integer value instead of L_ORDERKEY. It is the same in other
database like systems. But, it is still bug because Tajo should show
kindly some invalid query error message.

Thanks you for your interest.

- Hyunsik


On Sat, Jul 19, 2014 at 10:50 PM, Shrikant Bang
<sh...@outlook.com> wrote:
> Hi Tajo Devs,
> I have built TAJO  from src code checked out from github.I have created a database and external LINEITEM table using TAJO cli.
> I tried running following query which gave me NullPointerException:
>
> select * from LINEITEM limit L_ORDERKEY;
> As per my understanding this query is invalid, but got parsed without any exception .After debugging further I could able to get the actual error trace code as :
> java.lang.NullPointerException  at org.apache.tajo.engine.eval.FieldEval.eval(FieldEval.java:47)        at org.apache.tajo.engine.planner.LogicalPlanner.visitLimit(LogicalPlanner.java:751)    at org.apache.tajo.engine.planner.LogicalPlanner.visitLimit(LogicalPlanner.java:61)     at org.apache.tajo.engine.planner.BaseAlgebraVisitor.visit(BaseAlgebraVisitor.java:58)  at org.apache.tajo.engine.planner.LogicalPlanner.visitProjection(LogicalPlanner.java:209)       at org.apache.tajo.engine.planner.LogicalPlanner.visitProjection(LogicalPlanner.java:61)        at org.apache.tajo.engine.planner.BaseAlgebraVisitor.visit(BaseAlgebraVisitor.java:55)  at org.apache.tajo.engine.planner.LogicalPlanner.createPlan(LogicalPlanner.java:125)    at org.apache.tajo.engine.planner.LogicalPlanner.createPlan(LogicalPlanner.java:111)    at org.apache.tajo.master.GlobalEngine.createLogicalPlan(GlobalEngine.java:468) at org.apache.tajo.master.GlobalEngine.executeQuery(GlobalEngine.java:145)      at org.apache.tajo.master.TajoMasterClientService$TajoMasterClientProtocolServiceHandler.submitQuery(TajoMasterClientService.java:261)  at org.apache.tajo.ipc.TajoMasterClientProtocol$TajoMasterClientProtocolService$2.callBlockingMethod(TajoMasterClientProtocol.java:495) at org.apache.tajo.rpc.BlockingRpcServer$ServerHandler.messageReceived(BlockingRpcServer.java:103)      at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)    at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791)    at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:296)      at org.jboss.netty.handler.codec.oneone.OneToOneDecoder.handleUpstream(OneToOneDecoder.java:70) at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791)    at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:296)      at org.jboss.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived(FrameDecoder.java:462) at org.jboss.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:443)   at org.jboss.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:303)      at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)    at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559) at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:268)      at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:255)      at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88) at org.jboss.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:109)     at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:312)     at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:90)  at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178) at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)     at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)      at java.lang.Thread.run(Thread.java:745)
>
> It looks like a minor bug. Could you please confirm my understanding.
> Thank You,Shrikant Bang.