[teiid-issues] [JBoss JIRA] (TEIID-5686) NPE in MergeJoinStrategy when using joins with a particular limit value

Steven Hawkins (Jira) issues at jboss.org
Thu Mar 14 12:31:00 EDT 2019


     [ https://issues.jboss.org/browse/TEIID-5686?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Steven Hawkins resolved TEIID-5686.
-----------------------------------
    Resolution: Done


Corrected the handling in the procedure plan to buffer the results of an iteration that may end up being the implicit return.  This was easier than restructuring the logic to track the cursors such that we could clone the plan, but it does require additional buffering.

> NPE in MergeJoinStrategy when using joins with a particular limit value
> -----------------------------------------------------------------------
>
>                 Key: TEIID-5686
>                 URL: https://issues.jboss.org/browse/TEIID-5686
>             Project: Teiid
>          Issue Type: Bug
>          Components: Query Engine
>    Affects Versions: 12.0
>         Environment: teiid-12.0.0 on WildFly Full 14.0.1.Final (WildFly Core 6.0.2.Final)
>            Reporter: dalex dalex
>            Assignee: Steven Hawkins
>            Priority: Major
>             Fix For: 12.2
>
>
> When running the following query (IMPORTANT: you shouldn't use row limit):
> {code:sql}
> begin
>     declare integer i=0;
>     while (i < 2)
>         begin
>             select * 
>             from "test_tables_pg.test_a" t0
>             JOIN "test_tables_pg.test_e" t1
>               ON true
>             JOIN "test_tables_pg.test_e" t2
>               ON true
>             JOIN views.v t3
>                   on true
>             JOIN views.v t4
>                   on true
>             limit 257 ;
>             i=i+1;
>         end
> end ;;
> {code}
> teiid throws out the following NPE:
> {code:noformat}
> 2019-03-13 13:50:28,582 ERROR [org.teiid.PROCESSOR] (Worker4_QueryProcessorQueue233) InwGU8fhfbja TEIID30019 Unexpected exception for request InwGU8fhfbja.22: java.lang.NullPointerEx
> ception
>         at org.teiid.query.processor.relational.MergeJoinStrategy.compareToPrevious(MergeJoinStrategy.java:284)
>         at org.teiid.query.processor.relational.MergeJoinStrategy.process(MergeJoinStrategy.java:238)
>         at org.teiid.query.processor.relational.JoinNode.nextBatchDirectInternal(JoinNode.java:260)
>         at org.teiid.query.processor.relational.JoinNode.nextBatchDirect(JoinNode.java:195)
>         at org.teiid.query.processor.relational.RelationalNode.nextBatch(RelationalNode.java:277)
>         at org.teiid.query.processor.relational.LimitNode.nextBatchDirect(LimitNode.java:98)
>         at org.teiid.query.processor.relational.RelationalNode.nextBatch(RelationalNode.java:277)
>         at org.teiid.query.processor.relational.ProjectNode.nextBatchDirect(ProjectNode.java:146)
>         at org.teiid.query.processor.relational.RelationalNode.nextBatch(RelationalNode.java:277)
>         at org.teiid.query.processor.relational.RelationalPlan.nextBatch(RelationalPlan.java:141)
>         at org.teiid.query.processor.QueryProcessor.nextBatchDirect(QueryProcessor.java:148)
>         at org.teiid.query.processor.QueryProcessor.nextBatch(QueryProcessor.java:111)
>         at org.teiid.query.processor.BatchIterator.finalRow(BatchIterator.java:65)
>         at org.teiid.common.buffer.AbstractTupleSource.getCurrentTuple(AbstractTupleSource.java:66)
>         at org.teiid.query.processor.BatchIterator.getCurrentTuple(BatchIterator.java:80)
>         at org.teiid.common.buffer.AbstractTupleSource.nextTuple(AbstractTupleSource.java:44)
>         at org.teiid.query.processor.proc.ProcedurePlan.nextBatchDirect(ProcedurePlan.java:303)
>         at org.teiid.query.processor.proc.ProcedurePlan.nextBatch(ProcedurePlan.java:269)
>         at org.teiid.query.processor.QueryProcessor.nextBatchDirect(QueryProcessor.java:148)
>         at org.teiid.query.processor.QueryProcessor.nextBatch(QueryProcessor.java:111)
>         at org.teiid.query.processor.BatchCollector.collectTuples(BatchCollector.java:160)
>         at org.teiid.query.processor.BatchCollector.collectTuples(BatchCollector.java:142)
>         at org.teiid.dqp.internal.process.RequestWorkItem.processMore(RequestWorkItem.java:492)
>         at org.teiid.dqp.internal.process.RequestWorkItem.process(RequestWorkItem.java:362)
>         at org.teiid.dqp.internal.process.AbstractWorkItem.run(AbstractWorkItem.java:43)
>         at org.teiid.dqp.internal.process.RequestWorkItem.run(RequestWorkItem.java:285)
>         at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:281)
>         at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:113)
>         at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:199)
>         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>         at java.lang.Thread.run(Thread.java:745)
> {code}



--
This message was sent by Atlassian Jira
(v7.12.1#712002)


More information about the teiid-issues mailing list