EDS throws NullPointerException when executing a multi-column dependent join

Solution Verified - Updated -

Issue

  • NullPointerException occurs when executing a Left Outer Join
  • NullPointerException when executing a multi-column dependent join
  • Exception similar to the below seen in server.log:
ERROR [org.teiid.PROCESSOR] (Worker0_QueryProcessorQueue101) Unexpected exception for request 7ZVzH+udnbNb.0
java.lang.NullPointerException
    at org.teiid.query.processor.relational.DependentCriteriaProcessor$TupleState.sort(DependentCriteriaProcessor.java:113)
    at org.teiid.query.processor.relational.DependentCriteriaProcessor.prepareCriteria(DependentCriteriaProcessor.java:223)
    at org.teiid.query.processor.relational.DependentAccessNode.prepareNextCommand(DependentAccessNode.java:143)
    at org.teiid.query.processor.relational.AccessNode.open(AccessNode.java:144)
    at org.teiid.query.processor.relational.JoinStrategy.openRight(JoinStrategy.java:105)
    at org.teiid.query.processor.relational.JoinNode.nextBatchDirect(JoinNode.java:194)
    at org.teiid.query.processor.relational.RelationalNode.nextBatch(RelationalNode.java:275)
    at org.teiid.query.processor.BatchIterator.finalRow(BatchIterator.java:70)
    at org.teiid.common.buffer.AbstractTupleSource.getCurrentTuple(AbstractTupleSource.java:69)
    at org.teiid.query.processor.BatchIterator.getCurrentTuple(BatchIterator.java:82)
    at org.teiid.common.buffer.AbstractTupleSource.nextTuple(AbstractTupleSource.java:48)
    at org.teiid.query.processor.relational.EnhancedSortMergeJoinStrategy.process(EnhancedSortMergeJoinStrategy.java:308)
    at org.teiid.query.processor.relational.JoinNode.nextBatchDirect(JoinNode.java:199)
    at org.teiid.query.processor.relational.RelationalNode.nextBatch(RelationalNode.java:275)
    at org.teiid.query.processor.BatchIterator.finalRow(BatchIterator.java:70)
    at org.teiid.common.buffer.AbstractTupleSource.getCurrentTuple(AbstractTupleSource.java:69)
    at org.teiid.query.processor.BatchIterator.getCurrentTuple(BatchIterator.java:82)
    at org.teiid.common.buffer.AbstractTupleSource.nextTuple(AbstractTupleSource.java:48)
    at org.teiid.query.processor.relational.SortUtility.initialSort(SortUtility.java:240)
    at org.teiid.query.processor.relational.SortUtility.sort(SortUtility.java:184)
    at org.teiid.query.processor.relational.SourceState.sort(SourceState.java:211)
    at org.teiid.query.processor.relational.MergeJoinStrategy.loadLeft(MergeJoinStrategy.java:332)
    at org.teiid.query.processor.relational.JoinNode.nextBatchDirect(JoinNode.java:184)
    at org.teiid.query.processor.relational.RelationalNode.nextBatch(RelationalNode.java:275)
    at org.teiid.query.processor.BatchIterator.finalRow(BatchIterator.java:70)
    at org.teiid.common.buffer.AbstractTupleSource.getCurrentTuple(AbstractTupleSource.java:69)
    at org.teiid.query.processor.BatchIterator.getCurrentTuple(BatchIterator.java:82)
    at org.teiid.common.buffer.AbstractTupleSource.nextTuple(AbstractTupleSource.java:48)
    at org.teiid.query.processor.relational.SortUtility.initialSort(SortUtility.java:240)
    at org.teiid.query.processor.relational.SortUtility.sort(SortUtility.java:184)
    at org.teiid.query.processor.relational.SourceState.sort(SourceState.java:211)
    at org.teiid.query.processor.relational.MergeJoinStrategy.loadLeft(MergeJoinStrategy.java:332)
    at org.teiid.query.processor.relational.JoinNode.nextBatchDirect(JoinNode.java:184)
    at org.teiid.query.processor.relational.RelationalNode.nextBatch(RelationalNode.java:275)
    at org.teiid.query.processor.BatchCollector$BatchProducerTupleSource.nextTuple(BatchCollector.java:86)
    at org.teiid.query.processor.relational.SortUtility.initialSort(SortUtility.java:240)
    at org.teiid.query.processor.relational.SortUtility.sort(SortUtility.java:184)
    at org.teiid.query.processor.relational.GroupingNode.sortPhase(GroupingNode.java:333)
    at org.teiid.query.processor.relational.GroupingNode.nextBatchDirect(GroupingNode.java:265)
    at org.teiid.query.processor.relational.RelationalNode.nextBatch(RelationalNode.java:275)
    at org.teiid.query.processor.relational.ProjectNode.nextBatchDirect(ProjectNode.java:162)
    at org.teiid.query.processor.relational.RelationalNode.nextBatch(RelationalNode.java:275)
    at org.teiid.query.processor.relational.RelationalPlan.nextBatch(RelationalPlan.java:162)
    at org.teiid.query.processor.QueryProcessor.nextBatchDirect(QueryProcessor.java:139)
    at org.teiid.query.processor.QueryProcessor.nextBatch(QueryProcessor.java:105)
    at org.teiid.query.processor.BatchCollector.collectTuples(BatchCollector.java:147)
    at org.teiid.dqp.internal.process.RequestWorkItem.processMore(RequestWorkItem.java:360)
    at org.teiid.dqp.internal.process.RequestWorkItem.process(RequestWorkItem.java:282)
    at org.teiid.dqp.internal.process.AbstractWorkItem.run(AbstractWorkItem.java:49)
    at org.teiid.dqp.internal.process.RequestWorkItem.run(RequestWorkItem.java:210)
    at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:230)
    at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:118)
    at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:288)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)

Environment

  • JBoss Enterprise Data Services (EDS) 5.2.0
  • multi-column dependent join

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase of over 48,000 articles and solutions.

Current Customers and Partners

Log in for full access

Log In