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

ASF GitHub Bot commented on DRILL-7774:
---------------------------------------

vvysotskyi merged pull request #2095:
URL: https://github.com/apache/drill/pull/2095


   


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


> IS NOT NULL predicate fails with NPE for the case of non-existing columns 
> with non-deterministic expression
> -----------------------------------------------------------------------------------------------------------
>
>                 Key: DRILL-7774
>                 URL: https://issues.apache.org/jira/browse/DRILL-7774
>             Project: Apache Drill
>          Issue Type: Bug
>    Affects Versions: 1.16.0
>            Reporter: Vova Vysotskyi
>            Assignee: Vova Vysotskyi
>            Priority: Major
>             Fix For: 1.18.0
>
>
> The following query fails with NPE:
> {code:sql}
> select count(*) as cnt from cp.`tpch/nation.parquet` where (case when 
> random() = 1 then true else null end * t ) is not null
> {code}
> Error message:
> {noformat}
> apache drill> select count(*) as cnt from cp.`tpch/nation.parquet` where 
> (case when random() = 1 then true else null end * t) is not null;
> Error: SYSTEM ERROR: NullPointerException
> Please, refer to logs for more information.
> [Error Id: cf98ddc3-6e2b-404b-81ed-11188bd11225 on user515050-pc:31016] 
> (state=,code=0)
> java.sql.SQLException: SYSTEM ERROR: NullPointerException
> Please, refer to logs for more information.
> [Error Id: cf98ddc3-6e2b-404b-81ed-11188bd11225 on user515050-pc:31016]
>         at 
> org.apache.drill.jdbc.impl.DrillCursor.nextRowInternally(DrillCursor.java:534)
>         at 
> org.apache.drill.jdbc.impl.DrillCursor.loadInitialSchema(DrillCursor.java:599)
>         at 
> org.apache.drill.jdbc.impl.DrillResultSetImpl.execute(DrillResultSetImpl.java:1278)
>         at 
> org.apache.drill.jdbc.impl.DrillResultSetImpl.execute(DrillResultSetImpl.java:58)
>         at 
> org.apache.calcite.avatica.AvaticaConnection$1.execute(AvaticaConnection.java:667)
>         at 
> org.apache.drill.jdbc.impl.DrillMetaImpl.prepareAndExecute(DrillMetaImpl.java:1102)
>         at 
> org.apache.drill.jdbc.impl.DrillMetaImpl.prepareAndExecute(DrillMetaImpl.java:1113)
>         at 
> org.apache.calcite.avatica.AvaticaConnection.prepareAndExecuteInternal(AvaticaConnection.java:675)
>         at 
> org.apache.drill.jdbc.impl.DrillConnectionImpl.prepareAndExecuteInternal(DrillConnectionImpl.java:200)
>         at 
> org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:156)
>         at 
> org.apache.calcite.avatica.AvaticaStatement.execute(AvaticaStatement.java:217)
>         at sqlline.Commands.executeSingleQuery(Commands.java:1054)
>         at sqlline.Commands.execute(Commands.java:1003)
>         at sqlline.Commands.sql(Commands.java:967)
>         at sqlline.SqlLine.dispatch(SqlLine.java:734)
>         at sqlline.SqlLine.begin(SqlLine.java:541)
>         at sqlline.SqlLine.start(SqlLine.java:267)
>         at sqlline.SqlLine.main(SqlLine.java:206)
> Caused by: org.apache.drill.common.exceptions.UserRemoteException: SYSTEM 
> ERROR: NullPointerException
> Please, refer to logs for more information.
> [Error Id: cf98ddc3-6e2b-404b-81ed-11188bd11225 on user515050-pc:31016]
>         at 
> org.apache.drill.exec.rpc.user.QueryResultHandler.resultArrived(QueryResultHandler.java:125)
>         at 
> org.apache.drill.exec.rpc.user.UserClient.handle(UserClient.java:422)
>         at 
> org.apache.drill.exec.rpc.user.UserClient.handle(UserClient.java:96)
>         at 
> org.apache.drill.exec.rpc.RpcBus$InboundHandler.decode(RpcBus.java:273)
>         at 
> org.apache.drill.exec.rpc.RpcBus$InboundHandler.decode(RpcBus.java:243)
>         at 
> io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:88)
>         at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:356)
>         at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:342)
>         at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:335)
>         at 
> io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
>         at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:356)
>         at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:342)
>         at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:335)
>         at 
> io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:312)
>         at 
> io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:286)
>         at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:356)
>         at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:342)
>         at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:335)
>         at 
> io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:86)
>         at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:356)
>         at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:342)
>         at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:335)
>         at 
> io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1294)
>         at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:356)
>         at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:342)
>         at 
> io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:911)
>         at 
> io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:131)
>         at 
> io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:645)
>         at 
> io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:580)
>         at 
> io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:497)
>         at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:459)
>         at 
> io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:131)
>         at java.lang.Thread.run(Thread.java:748)
> Caused by: org.apache.drill.exec.work.foreman.ForemanException: Unexpected 
> exception during fragment initialization: null
>         at org.apache.drill.exec.work.foreman.Foreman.run(Foreman.java:301)
>         at .......(:0)
> Caused by: java.lang.NullPointerException: 
>         at org.apache.drill.exec.expr.IsPredicate.<init>(IsPredicate.java:47)
>         at 
> org.apache.drill.exec.expr.IsPredicate.createIsNotNullPredicate(IsPredicate.java:162)
>         at 
> org.apache.drill.exec.expr.IsPredicate.createIsPredicate(IsPredicate.java:244)
>         at 
> org.apache.drill.exec.expr.FilterBuilder.handleIsFunction(FilterBuilder.java:307)
>         at 
> org.apache.drill.exec.expr.FilterBuilder.visitFunctionHolderExpression(FilterBuilder.java:252)
>         at 
> org.apache.drill.exec.expr.FilterBuilder.visitFunctionHolderExpression(FilterBuilder.java:60)
>         at 
> org.apache.drill.common.expression.FunctionHolderExpression.accept(FunctionHolderExpression.java:57)
>         at 
> org.apache.drill.exec.expr.FilterBuilder.buildFilterPredicate(FilterBuilder.java:82)
>         at 
> org.apache.drill.exec.physical.base.AbstractGroupScanWithMetadata.getFilterPredicate(AbstractGroupScanWithMetadata.java:433)
>         at 
> org.apache.drill.exec.physical.base.AbstractGroupScanWithMetadata.getFilterPredicate(AbstractGroupScanWithMetadata.java:382)
>         at 
> org.apache.drill.exec.store.parquet.FilePushDownFilter.doOnMatch(FilePushDownFilter.java:155)
>         at 
> org.apache.drill.exec.store.parquet.FilePushDownFilter$2.onMatch(FilePushDownFilter.java:106)
>         at 
> org.apache.calcite.plan.AbstractRelOptPlanner.fireRule(AbstractRelOptPlanner.java:319)
>         at 
> org.apache.calcite.plan.hep.HepPlanner.applyRule(HepPlanner.java:561)
>         at 
> org.apache.calcite.plan.hep.HepPlanner.applyRules(HepPlanner.java:420)
>         at 
> org.apache.calcite.plan.hep.HepPlanner.executeInstruction(HepPlanner.java:257)
>         at 
> org.apache.calcite.plan.hep.HepInstruction$RuleInstance.execute(HepInstruction.java:127)
>         at 
> org.apache.calcite.plan.hep.HepPlanner.executeProgram(HepPlanner.java:216)
>         at 
> org.apache.calcite.plan.hep.HepPlanner.findBestExp(HepPlanner.java:203)
>         at 
> org.apache.drill.exec.planner.sql.handlers.DefaultSqlHandler.transform(DefaultSqlHandler.java:394)
>         at 
> org.apache.drill.exec.planner.sql.handlers.DefaultSqlHandler.transform(DefaultSqlHandler.java:351)
>         at 
> org.apache.drill.exec.planner.sql.handlers.DefaultSqlHandler.transform(DefaultSqlHandler.java:338)
>         at 
> org.apache.drill.exec.planner.sql.handlers.DefaultSqlHandler.convertToPrel(DefaultSqlHandler.java:514)
>         at 
> org.apache.drill.exec.planner.sql.handlers.DefaultSqlHandler.getPlan(DefaultSqlHandler.java:174)
>         at 
> org.apache.drill.exec.planner.sql.DrillSqlWorker.getQueryPlan(DrillSqlWorker.java:283)
>         at 
> org.apache.drill.exec.planner.sql.DrillSqlWorker.getPhysicalPlan(DrillSqlWorker.java:163)
>         at 
> org.apache.drill.exec.planner.sql.DrillSqlWorker.convertPlan(DrillSqlWorker.java:128)
>         at 
> org.apache.drill.exec.planner.sql.DrillSqlWorker.getPlan(DrillSqlWorker.java:93)
>         at org.apache.drill.exec.work.foreman.Foreman.runSQL(Foreman.java:593)
>         at org.apache.drill.exec.work.foreman.Foreman.run(Foreman.java:274)
>         ... 1 more
> {noformat}



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

Reply via email to