Details
-
Bug
-
Resolution: Done
-
Major
-
6.0.0
-
None
Description
If a non-pushed source node (inline view) is located over a projecting node (windowfunctionproject, join, group, or a select node) the resulting construction of the projection/projection indexes will be incorrect or fail - as the input elements will not match the output elements that have been set to the views elements. For example with the exception:
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.query.processor.relational.RelationalNode.getProjectionIndexes(RelationalNode.java:371)
at org.teiid.query.processor.relational.SelectNode.initialize(SelectNode.java:93)
Note that not all nodes should be the first child under a source. For example, join/group should not appear there (typically it will be one of project/windowfunctionproject/limit/sort/unionall/select). Other child nodes besides windowfunctionproject/select could have issues, since we are not specifically coding to use a different set of output vs. original elements such as with ProjectNode that holds elements and selectSymbols respectively.