[teiid-issues] [JBoss JIRA] (TEIID-5004) INNER JOINs of two CTEs fail with ASSERTION FAILED error message

Steven Hawkins (JIRA) issues at jboss.org
Fri Jul 21 18:20:00 EDT 2017


    [ https://issues.jboss.org/browse/TEIID-5004?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13438998#comment-13438998 ] 

Steven Hawkins commented on TEIID-5004:
---------------------------------------

In the plan there are access nodes that end up with the same query.  The sharing logic is allowing the cached buffer to be fully closed before all usage is complete.

> INNER JOINs of two CTEs fail with ASSERTION FAILED error message
> ----------------------------------------------------------------
>
>                 Key: TEIID-5004
>                 URL: https://issues.jboss.org/browse/TEIID-5004
>             Project: Teiid
>          Issue Type: Bug
>          Components: Query Engine
>    Affects Versions: 9.3, 9.3.1
>         Environment: teiid-9.3.0.Final on WildFly Full 10.0.0.Final (WildFly Core 2.0.10.Final)
> and
> teiid-9.3.1 on WildFly Full 10.0.0.Final (WildFly Core 2.0.10.Final)
>            Reporter: dalex dalex
>            Assignee: Steven Hawkins
>            Priority: Blocker
>
> when running the following query several times in a row:
> {code:sql}
> with
> CTE1 as (
> 	select a1 from ( 
> -->>
> 		with CTE11 as (select a1 from (
> 								WITH 
> 									alias as (SELECT 1 as a),
> 									alias1 as (select alias.a as alias, AAA.a as alias1, AAA.b as a from alias join test.test_a AAA on alias.a!=AAA.a or alias.a!=AAA.a),
> 									alias2 as (with alias as (select alias.a as alias, AAA.a as alias1, AAA.b as a from alias join test.test_a AAA on alias.a!=AAA.a or alias.a!=AAA.a) select * from alias),
> 									alias3 as (with alias as (select alias.a as alias, AAA.a as alias1, AAA.a from alias join alias2 AAA on alias.a!=AAA.a or alias.a!=AAA.a) select * from alias)
> 								SELECT AAA.alias1 as a1 FROM alias join alias1 as AAA on alias.a=AAA.a or alias.a!=AAA.a join alias2 on AAA.a=alias2.a or AAA.a!=alias.a left join alias3 on alias3.a=alias2.a or alias3.a!=alias2.a
> 								) tv2) 
> --<<
> 			select a1 from CTE11
> 	) as  SUBQ1),
> CTE2 as (
> 	select a1 from ( 
> -->>
> 		with CTE21 as (select a1 from (
> 								WITH 
> 									alias as (SELECT 1 as a),
> 									alias1 as (select alias.a as alias, AAA.a as alias1, AAA.b as a from alias join test.test_a AAA on alias.a!=AAA.a or alias.a!=AAA.a),
> 									alias2 as (with alias as (select alias.a as alias, AAA.a as alias1, AAA.b as a from alias join test.test_a AAA on alias.a!=AAA.a or alias.a!=AAA.a) select * from alias),
> 									alias3 as (with alias as (select alias.a as alias, AAA.a as alias1, AAA.a from alias join alias2 AAA on alias.a!=AAA.a or alias.a!=AAA.a) select * from alias)
> 								SELECT AAA.alias1 as a1 FROM alias join alias1 as AAA on alias.a=AAA.a or alias.a!=AAA.a join alias2 on AAA.a=alias2.a or AAA.a!=alias.a left join alias3 on alias3.a=alias2.a or alias3.a!=alias2.a
> 								) tv2) 
> --<<
> 			select a1 from CTE21
> 	) as  SUBQ2)  
> select * from CTE1 as T1 join CTE2 as T2 on T1.a1=T2.a1
> {code}
> teiid returns the following stacktrace (from teiid 9.3.1):
> {code}
> 2017-07-21 16:52:32,440 ERROR [org.teiid.PROCESSOR] (Worker1_QueryProcessorQueue73) oiBQAQPtTMe+ TEIID30019 Unexpected exception for request oiBQAQPtTMe+.15: java.lang.AssertionError
> : ASSERTION FAILED: expected reference to be not null
>         at org.teiid.core.util.Assertion.failed(Assertion.java:73)
>         at org.teiid.core.util.Assertion.isNotNull(Assertion.java:100)
>         at org.teiid.core.util.Assertion.isNotNull(Assertion.java:92)
>         at org.teiid.common.buffer.TupleBuffer.getBatch(TupleBuffer.java:287)
>         at org.teiid.dqp.internal.process.TupleSourceCache$CopyOnReadTupleSource.nextTuple(TupleSourceCache.java:103)
>         at org.teiid.query.processor.relational.AccessNode.nextBatchDirect(AccessNode.java:394)
>         at org.teiid.query.processor.relational.RelationalNode.nextBatch(RelationalNode.java:281)
>         at org.teiid.query.processor.BatchIterator.finalRow(BatchIterator.java:69)
>         at org.teiid.common.buffer.AbstractTupleSource.getCurrentTuple(AbstractTupleSource.java:70)
>         at org.teiid.query.processor.BatchIterator.getCurrentTuple(BatchIterator.java:84)
>         at org.teiid.common.buffer.AbstractTupleSource.hasNext(AbstractTupleSource.java:92)
>         at org.teiid.query.processor.relational.MergeJoinStrategy.process(MergeJoinStrategy.java:165)
>         at org.teiid.query.processor.relational.JoinNode.nextBatchDirect(JoinNode.java:235)
>         at org.teiid.query.processor.relational.RelationalNode.nextBatch(RelationalNode.java:281)
>         at org.teiid.query.processor.BatchCollector.collectTuples(BatchCollector.java:164)
>         at org.teiid.query.processor.relational.SourceState.prefetch(SourceState.java:211)
>         at org.teiid.query.processor.relational.SourceState.rowCountLE(SourceState.java:158)
>         at org.teiid.query.processor.relational.JoinNode.nextBatchDirect(JoinNode.java:227)
>         at org.teiid.query.processor.relational.RelationalNode.nextBatch(RelationalNode.java:281)
>         at org.teiid.query.processor.BatchCollector.collectTuples(BatchCollector.java:164)
>         at org.teiid.query.processor.relational.SourceState.prefetch(SourceState.java:211)
>         at org.teiid.query.processor.relational.JoinNode.prefetch(JoinNode.java:255)
>         at org.teiid.query.processor.relational.JoinNode.nextBatchDirect(JoinNode.java:247)
>         at org.teiid.query.processor.relational.RelationalNode.nextBatch(RelationalNode.java:281)
>         at org.teiid.query.processor.relational.LimitNode.nextBatchDirect(LimitNode.java:102)
>         at org.teiid.query.processor.relational.RelationalNode.nextBatch(RelationalNode.java:281)
>         at org.teiid.query.processor.relational.ProjectNode.nextBatchDirect(ProjectNode.java:150)
>         at org.teiid.query.processor.relational.RelationalNode.nextBatch(RelationalNode.java:281)
>         at org.teiid.query.processor.relational.RelationalPlan.nextBatch(RelationalPlan.java:145)
>         at org.teiid.query.processor.QueryProcessor.nextBatchDirect(QueryProcessor.java:151)
>         at org.teiid.query.processor.QueryProcessor.nextBatch(QueryProcessor.java:114)
>         at org.teiid.query.processor.BatchCollector.collectTuples(BatchCollector.java:164)
>         at org.teiid.query.processor.BatchCollector.collectTuples(BatchCollector.java:146)
>         at org.teiid.dqp.internal.process.RequestWorkItem.processMore(RequestWorkItem.java:477)
>         at org.teiid.dqp.internal.process.RequestWorkItem.process(RequestWorkItem.java:349)
>         at org.teiid.dqp.internal.process.AbstractWorkItem.run(AbstractWorkItem.java:51)
>         at org.teiid.dqp.internal.process.RequestWorkItem.run(RequestWorkItem.java:275)
>         at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:284)
>         at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:119)
>         at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:210)
>         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.2.3#72005)


More information about the teiid-issues mailing list