[
https://issues.jboss.org/browse/TEIID-2900?page=com.atlassian.jira.plugin...
]
Tom Arnold commented on TEIID-2900:
-----------------------------------
Here is query plan. I'll try to find a better way to reproduce this.
{{code}}
14:04:37,543 DEBUG [org.teiid.COMMAND_LOG] (New I/O worker #6) qy+D1Orv7o1H START USER
COMMAND: startTime=2014-03-18
14:04:37.543 requestID=qy+D1Orv7o1H.0 txID=null sessionID=qy+D1Orv7o1H applicationName=JDBCprincipal=user@teiid-security vdbName=Foo vdbVersion=1 sql=select
* from (
(select identifier from foo.items)
union all
(select identifier from bar.items)
) x
order by identifier desc
limit 1000
14:04:37,552 INFO [org.teiid.PLANNER] (Worker21_QueryProcessorQueue387) qy+D1Orv7o1H
============================================================================
USER COMMAND:
SELECT x.identifier FROM (SELECT foo.items.identifier FROM foo.items UNION ALL SELECT
bar.items.identifier FROM bar.items) AS x ORDER BY x.identifier DESC LIMIT 1000
----------------------------------------------------------------------------
OPTIMIZE:
SELECT x.identifier FROM (SELECT foo.items.identifier FROM foo.items UNION ALL SELECT
bar.items.identifier FROM bar.items) AS x ORDER BY x.identifier DESC LIMIT 1000
----------------------------------------------------------------------------
GENERATE CANONICAL:
SELECT x.identifier FROM (SELECT foo.items.identifier FROM foo.items UNION ALL SELECT
bar.items.identifier FROM bar.items) AS x ORDER BY x.identifier DESC LIMIT 1000
CANONICAL PLAN:
TupleLimit(groups=[], props={MAX_TUPLE_LIMIT=1000})
Sort(groups=[x], props={SORT_ORDER=ORDER BY x.identifier DESC})
Project(groups=[x], props={PROJECT_COLS=[x.identifier]})
Source(groups=[x], props={NESTED_COMMAND=SELECT foo.items.identifier FROM foo.items
UNION ALL SELECT bar.items.identifier FROM bar.items,
SYMBOL_MAP={x.identifier=foo.items.identifier}})
SetOperation(groups=[], props={SET_OPERATION=UNION, USE_ALL=true})
Project(groups=[foo.items], props={PROJECT_COLS=[foo.items.identifier]})
Source(groups=[foo.items])
Project(groups=[bar.items], props={PROJECT_COLS=[bar.items.identifier]})
Source(groups=[bar.items])
============================================================================
EXECUTING PlaceAccess
AFTER:
TupleLimit(groups=[], props={MAX_TUPLE_LIMIT=1000})
Sort(groups=[x], props={SORT_ORDER=ORDER BY x.identifier DESC})
Project(groups=[x], props={PROJECT_COLS=[x.identifier]})
Source(groups=[x], props={NESTED_COMMAND=SELECT foo.items.identifier FROM foo.items
UNION ALL SELECT bar.items.identifier FROM bar.items,
SYMBOL_MAP={x.identifier=foo.items.identifier}})
SetOperation(groups=[], props={SET_OPERATION=UNION, USE_ALL=true})
Project(groups=[foo.items], props={PROJECT_COLS=[foo.items.identifier]})
Access(groups=[foo.items], props={SOURCE_HINT=null, MODEL_ID=Schema name=foo,
nameInSource=null, uuid=tid:409578bc964d-391228ac-00000000})
Source(groups=[foo.items])
Project(groups=[bar.items], props={PROJECT_COLS=[bar.items.identifier]})
Access(groups=[bar.items], props={SOURCE_HINT=null, MODEL_ID=Schema name=bar,
nameInSource=null, uuid=tid:d2199ed63385-e932ed06-00000000})
Source(groups=[bar.items])
============================================================================
EXECUTING AssignOutputElements
AFTER:
TupleLimit(groups=[], props={MAX_TUPLE_LIMIT=1000, OUTPUT_COLS=[x.identifier]})
Sort(groups=[x], props={SORT_ORDER=ORDER BY x.identifier DESC,
OUTPUT_COLS=[x.identifier]})
Project(groups=[x], props={PROJECT_COLS=[x.identifier], OUTPUT_COLS=[x.identifier]})
Source(groups=[x], props={NESTED_COMMAND=SELECT foo.items.identifier FROM foo.items
UNION ALL SELECT bar.items.identifier FROM bar.items,
SYMBOL_MAP={x.identifier=foo.items.identifier}, OUTPUT_COLS=[x.identifier]})
SetOperation(groups=[], props={SET_OPERATION=UNION, USE_ALL=true,
OUTPUT_COLS=[foo.items.identifier]})
Project(groups=[foo.items], props={PROJECT_COLS=[foo.items.identifier],
OUTPUT_COLS=[foo.items.identifier]})
Access(groups=[foo.items], props={SOURCE_HINT=null, MODEL_ID=Schema name=foo,
nameInSource=null, uuid=tid:409578bc964d-391228ac-00000000,
OUTPUT_COLS=[foo.items.identifier]})
Source(groups=[foo.items], props={OUTPUT_COLS=[foo.items.identifier]})
Project(groups=[bar.items], props={PROJECT_COLS=[bar.items.identifier],
OUTPUT_COLS=[bar.items.identifier]})
Access(groups=[bar.items], props={SOURCE_HINT=null, MODEL_ID=Schema name=bar,
nameInSource=null, uuid=tid:d2199ed63385-e932ed06-00000000,
OUTPUT_COLS=[bar.items.identifier]})
Source(groups=[bar.items], props={OUTPUT_COLS=[bar.items.identifier]})
============================================================================
EXECUTING MergeVirtual
AFTER:
TupleLimit(groups=[])
Sort(groups=[foo.items], props={SORT_ORDER=ORDER BY foo.items.identifier DESC,
OUTPUT_COLS=[x.identifier]})
SetOperation(groups=[], props={SET_OPERATION=UNION, USE_ALL=true,
OUTPUT_COLS=[foo.items.identifier]})
Project(groups=[foo.items], props={PROJECT_COLS=[foo.items.identifier],
OUTPUT_COLS=[foo.items.identifier]})
Access(groups=[foo.items])
Source(groups=[foo.items])
Project(groups=[bar.items], props={PROJECT_COLS=[bar.items.identifier],
OUTPUT_COLS=[bar.items.identifier]})
Access(groups=[bar.items])
Source(groups=[bar.items])
============================================================================
EXECUTING CleanCriteria
AFTER:
TupleLimit(groups=[], props={MAX_TUPLE_LIMIT=1000, OUTPUT_COLS=null})
Sort(groups=[foo.items], props={SORT_ORDER=ORDER BY foo.items.identifier DESC,
OUTPUT_COLS=null})
SetOperation(groups=[], props={SET_OPERATION=UNION, USE_ALL=true, OUTPUT_COLS=null})
Project(groups=[foo.items], props={PROJECT_COLS=[foo.items.identifier],
OUTPUT_COLS=null})
Access(groups=[foo.items], props={SOURCE_HINT=null, MODEL_ID=Schema name=foo,
nameInSource=null, uuid=tid:409578bc964d-391228ac-00000000, OUTPUT_COLS=null})
Source(groups=[foo.items], props={OUTPUT_COLS=null})
Project(groups=[bar.items], props={PROJECT_COLS=[bar.items.identifier],
OUTPUT_COLS=null})
Access(groups=[bar.items], props={SOURCE_HINT=null, MODEL_ID=Schema name=bar,
nameInSource=null, uuid=tid:d2199ed63385-e932ed06-00000000, OUTPUT_COLS=null})
Source(groups=[bar.items], props={OUTPUT_COLS=null})
============================================================================
EXECUTING PlanUnions
AFTER:
TupleLimit(groups=[])
Sort(groups=[foo.items])
SetOperation(groups=[], props={SET_OPERATION=UNION, USE_ALL=true, OUTPUT_COLS=null})
Project(groups=[foo.items])
Access(groups=[foo.items], props={SOURCE_HINT=null, MODEL_ID=Schema name=foo,
nameInSource=null, uuid=tid:409578bc964d-391228ac-00000000, OUTPUT_COLS=null})
Source(groups=[foo.items])
Project(groups=[bar.items])
Access(groups=[bar.items], props={SOURCE_HINT=null, MODEL_ID=Schema name=bar,
nameInSource=null, uuid=tid:d2199ed63385-e932ed06-00000000, OUTPUT_COLS=null})
Source(groups=[bar.items])
============================================================================
EXECUTING RaiseAccess
AFTER:
TupleLimit(groups=[])
Sort(groups=[foo.items])
SetOperation(groups=[], props={SET_OPERATION=UNION, USE_ALL=true, OUTPUT_COLS=null})
Access(groups=[foo.items], props={SOURCE_HINT=null, MODEL_ID=Schema name=foo,
nameInSource=null, uuid=tid:409578bc964d-391228ac-00000000, OUTPUT_COLS=null})
Project(groups=[foo.items], props={PROJECT_COLS=[foo.items.identifier],
OUTPUT_COLS=null})
Source(groups=[foo.items], props={OUTPUT_COLS=null})
Access(groups=[bar.items], props={SOURCE_HINT=null, MODEL_ID=Schema name=bar,
nameInSource=null, uuid=tid:d2199ed63385-e932ed06-00000000, OUTPUT_COLS=null})
Project(groups=[bar.items], props={PROJECT_COLS=[bar.items.identifier],
OUTPUT_COLS=null})
Source(groups=[bar.items], props={OUTPUT_COLS=null})
============================================================================
EXECUTING PushLimit
AFTER:
TupleLimit(groups=[], props={MAX_TUPLE_LIMIT=1000, OUTPUT_COLS=null})
Sort(groups=[foo.items], props={SORT_ORDER=ORDER BY foo.items.identifier DESC,
OUTPUT_COLS=null})
SetOperation(groups=[], props={SET_OPERATION=UNION, USE_ALL=true, OUTPUT_COLS=null})
TupleLimit(groups=[], props={MAX_TUPLE_LIMIT=1000})
Sort(groups=[], props={SORT_ORDER=ORDER BY foo.items.identifier DESC})
Access(groups=[foo.items], props={SOURCE_HINT=null, MODEL_ID=Schema name=foo,
nameInSource=null, uuid=tid:409578bc964d-391228ac-00000000, OUTPUT_COLS=null})
Project(groups=[foo.items], props={PROJECT_COLS=[foo.items.identifier],
OUTPUT_COLS=null})
Source(groups=[foo.items])
TupleLimit(groups=[], props={MAX_TUPLE_LIMIT=1000})
Sort(groups=[], props={SORT_ORDER=ORDER BY bar.items.identifier DESC})
Access(groups=[bar.items], props={SOURCE_HINT=null, MODEL_ID=Schema name=bar,
nameInSource=null, uuid=tid:d2199ed63385-e932ed06-00000000, OUTPUT_COLS=null})
Project(groups=[bar.items], props={PROJECT_COLS=[bar.items.identifier],
OUTPUT_COLS=null})
Source(groups=[bar.items])
============================================================================
EXECUTING AssignOutputElements
AFTER:
TupleLimit(groups=[], props={MAX_TUPLE_LIMIT=1000, OUTPUT_COLS=[foo.items.identifier]})
Sort(groups=[foo.items], props={SORT_ORDER=ORDER BY foo.items.identifier DESC,
OUTPUT_COLS=[foo.items.identifier]})
SetOperation(groups=[], props={SET_OPERATION=UNION, USE_ALL=true,
OUTPUT_COLS=[foo.items.identifier]})
TupleLimit(groups=[], props={MAX_TUPLE_LIMIT=1000,
OUTPUT_COLS=[foo.items.identifier]})
Sort(groups=[], props={SORT_ORDER=ORDER BY foo.items.identifier DESC,
OUTPUT_COLS=[foo.items.identifier]})
Access(groups=[foo.items], props={SOURCE_HINT=null, MODEL_ID=Schema name=foo,
nameInSource=null, uuid=tid:409578bc964d-391228ac-00000000,
OUTPUT_COLS=[foo.items.identifier]})
Project(groups=[foo.items], props={PROJECT_COLS=[foo.items.identifier],
OUTPUT_COLS=[foo.items.identifier]})
Source(groups=[foo.items], props={OUTPUT_COLS=[foo.items.identifier]})
TupleLimit(groups=[], props={MAX_TUPLE_LIMIT=1000,
OUTPUT_COLS=[bar.items.identifier]})
Sort(groups=[], props={SORT_ORDER=ORDER BY bar.items.identifier DESC,
OUTPUT_COLS=[bar.items.identifier]})
Access(groups=[bar.items], props={SOURCE_HINT=null, MODEL_ID=Schema name=bar,
nameInSource=null, uuid=tid:d2199ed63385-e932ed06-00000000,
OUTPUT_COLS=[bar.items.identifier]})
Project(groups=[bar.items], props={PROJECT_COLS=[bar.items.identifier],
OUTPUT_COLS=[bar.items.identifier]})
Source(groups=[bar.items], props={OUTPUT_COLS=[bar.items.identifier]})
============================================================================
EXECUTING CalculateCost
AFTER:
TupleLimit(groups=[], props={MAX_TUPLE_LIMIT=1000, OUTPUT_COLS=[foo.items.identifier],
EST_CARDINALITY=1000.0, EST_COL_STATS={foo.items.identifier=[750.0, 1.0]}})
Sort(groups=[foo.items], props={SORT_ORDER=ORDER BY foo.items.identifier DESC,
OUTPUT_COLS=[foo.items.identifier], EST_CARDINALITY=2000.0,
EST_COL_STATS={foo.items.identifier=[1500.0, 1.0]}})
SetOperation(groups=[], props={SET_OPERATION=UNION, USE_ALL=true,
OUTPUT_COLS=[foo.items.identifier], EST_CARDINALITY=2000.0,
EST_COL_STATS={foo.items.identifier=[1500.0, 0.0]}})
TupleLimit(groups=[], props={MAX_TUPLE_LIMIT=1000,
OUTPUT_COLS=[foo.items.identifier], EST_CARDINALITY=1000.0,
EST_COL_STATS={foo.items.identifier=[1000.0, 0.0]}})
Sort(groups=[], props={SORT_ORDER=ORDER BY foo.items.identifier DESC,
OUTPUT_COLS=[foo.items.identifier], EST_CARDINALITY=-1.0})
Access(groups=[foo.items], props={SOURCE_HINT=null, MODEL_ID=Schema name=foo,
nameInSource=null, uuid=tid:409578bc964d-391228ac-00000000,
OUTPUT_COLS=[foo.items.identifier], EST_CARDINALITY=-1.0})
Project(groups=[foo.items], props={PROJECT_COLS=[foo.items.identifier],
OUTPUT_COLS=[foo.items.identifier], EST_CARDINALITY=-1.0})
Source(groups=[foo.items], props={OUTPUT_COLS=[foo.items.identifier],
EST_COL_STATS={foo.items.identifier=[-1.0, -1.0]}, EST_CARDINALITY=-1.0})
TupleLimit(groups=[], props={MAX_TUPLE_LIMIT=1000,
OUTPUT_COLS=[bar.items.identifier], EST_CARDINALITY=1000.0,
EST_COL_STATS={bar.items.identifier=[1000.0, 0.0]}})
Sort(groups=[], props={SORT_ORDER=ORDER BY bar.items.identifier DESC,
OUTPUT_COLS=[bar.items.identifier], EST_CARDINALITY=-1.0})
Access(groups=[bar.items], props={SOURCE_HINT=null, MODEL_ID=Schema name=bar,
nameInSource=null, uuid=tid:d2199ed63385-e932ed06-00000000,
OUTPUT_COLS=[bar.items.identifier], EST_CARDINALITY=-1.0})
Project(groups=[bar.items], props={PROJECT_COLS=[bar.items.identifier],
OUTPUT_COLS=[bar.items.identifier], EST_CARDINALITY=-1.0})
Source(groups=[bar.items], props={OUTPUT_COLS=[bar.items.identifier],
EST_COL_STATS={bar.items.identifier=[-1.0, -1.0]}, EST_CARDINALITY=-1.0})
============================================================================
EXECUTING PlanSorts
AFTER:
TupleLimit(groups=[])
Sort(groups=[foo.items], props={SORT_ORDER=ORDER BY foo.items.identifier DESC,
OUTPUT_COLS=[foo.items.identifier], EST_CARDINALITY=2000.0,
EST_COL_STATS={foo.items.identifier=[1500.0, 1.0]}})
SetOperation(groups=[], props={SET_OPERATION=UNION, USE_ALL=true,
OUTPUT_COLS=[foo.items.identifier], EST_CARDINALITY=2000.0,
EST_COL_STATS={foo.items.identifier=[1500.0, 0.0]}})
Project(groups=[foo.items], props={PROJECT_COLS=[foo.items.identifier],
OUTPUT_COLS=[foo.items.identifier], EST_CARDINALITY=-1.0})
Access(groups=[foo.items], props={SOURCE_HINT=null, MODEL_ID=Schema name=foo,
nameInSource=null, uuid=tid:409578bc964d-391228ac-00000000,
OUTPUT_COLS=[foo.items.identifier]})
TupleLimit(groups=[], props={MAX_TUPLE_LIMIT=1000,
OUTPUT_COLS=[foo.items.identifier], EST_CARDINALITY=1000.0,
EST_COL_STATS={foo.items.identifier=[1000.0, 0.0]}})
Sort(groups=[], props={SORT_ORDER=ORDER BY foo.items.identifier DESC,
OUTPUT_COLS=[foo.items.identifier], EST_CARDINALITY=-1.0})
Source(groups=[foo.items], props={OUTPUT_COLS=[foo.items.identifier],
EST_COL_STATS={foo.items.identifier=[-1.0, -1.0]}, EST_CARDINALITY=-1.0})
Project(groups=[bar.items], props={PROJECT_COLS=[bar.items.identifier],
OUTPUT_COLS=[bar.items.identifier], EST_CARDINALITY=-1.0})
Access(groups=[bar.items], props={SOURCE_HINT=null, MODEL_ID=Schema name=bar,
nameInSource=null, uuid=tid:d2199ed63385-e932ed06-00000000,
OUTPUT_COLS=[bar.items.identifier]})
TupleLimit(groups=[], props={MAX_TUPLE_LIMIT=1000,
OUTPUT_COLS=[bar.items.identifier], EST_CARDINALITY=1000.0,
EST_COL_STATS={bar.items.identifier=[1000.0, 0.0]}})
Sort(groups=[], props={SORT_ORDER=ORDER BY bar.items.identifier DESC,
OUTPUT_COLS=[bar.items.identifier], EST_CARDINALITY=-1.0})
Source(groups=[bar.items], props={OUTPUT_COLS=[bar.items.identifier],
EST_COL_STATS={bar.items.identifier=[-1.0, -1.0]}, EST_CARDINALITY=-1.0})
============================================================================
EXECUTING CollapseSource
AFTER:
TupleLimit(groups=[])
Sort(groups=[foo.items])
SetOperation(groups=[])
Project(groups=[foo.items])
Access(groups=[foo.items], props={SOURCE_HINT=null, MODEL_ID=Schema name=foo,
nameInSource=null, uuid=tid:409578bc964d-391228ac-00000000,
OUTPUT_COLS=[foo.items.identifier], ATOMIC_REQUEST=SELECT foo.items.identifier FROM
foo.items ORDER BY foo.items.identifier DESC LIMIT 1000})
Project(groups=[bar.items])
Access(groups=[bar.items], props={SOURCE_HINT=null, MODEL_ID=Schema name=bar,
nameInSource=null, uuid=tid:d2199ed63385-e932ed06-00000000,
OUTPUT_COLS=[bar.items.identifier], ATOMIC_REQUEST=SELECT bar.items.identifier FROM
bar.items ORDER BY bar.items.identifier DESC LIMIT 1000})
============================================================================
CONVERTING PLAN TREE TO PROCESS TREE
PROCESS PLAN =
LimitNode(0) output=[foo.items.identifier] limit 1000
SortNode(1) output=[foo.items.identifier] [SORT] [foo.items.identifier DESC]
UnionAllNode(2) output=[foo.items.identifier]
ProjectNode(3) output=[foo.items.identifier] [foo.items.identifier]
AccessNode(4) output=[foo.items.identifier] SELECT foo.items.identifier FROM
foo.items ORDER BY foo.items.identifier DESC LIMIT 1000
ProjectNode(5) output=[bar.items.identifier] [bar.items.identifier]
AccessNode(6) output=[bar.items.identifier] SELECT bar.items.identifier FROM
bar.items ORDER BY bar.items.identifier DESC LIMIT 1000
============================================================================
----------------------------------------------------------------------------
OPTIMIZATION COMPLETE:
PROCESSOR PLAN:
LimitNode(0) output=[foo.items.identifier] limit 1000
SortNode(1) output=[foo.items.identifier] [SORT] [foo.items.identifier DESC]
UnionAllNode(2) output=[foo.items.identifier]
ProjectNode(3) output=[foo.items.identifier] [foo.items.identifier]
AccessNode(4) output=[foo.items.identifier] SELECT foo.items.identifier FROM
foo.items ORDER BY foo.items.identifier DESC LIMIT 1000
ProjectNode(5) output=[bar.items.identifier] [bar.items.identifier]
AccessNode(6) output=[bar.items.identifier] SELECT bar.items.identifier FROM
bar.items ORDER BY bar.items.identifier DESC LIMIT 1000
============================================================================
14:04:37,561 DEBUG [org.teiid.COMMAND_LOG] (Worker22_QueryProcessorQueue388) qy+D1Orv7o1H
START DATA SRC COMMAND: startTime=2014-03-18
14:04:37.561 requestID=qy+D1Orv7o1H.0 sourceCommandID=4 executionID=64 txID=null modelName=foo translatorName=custom sessionID=qy+D1Orv7o1H principal=user@teiid-security sql=SELECT
foo.items.identifier FROM foo.items ORDER BY foo.items.identifier DESC LIMIT 1000
14:04:37,561 DEBUG [org.teiid.COMMAND_LOG] (Worker23_QueryProcessorQueue389) qy+D1Orv7o1H
START DATA SRC COMMAND: startTime=2014-03-18
14:04:37.561 requestID=qy+D1Orv7o1H.0 sourceCommandID=6 executionID=65 txID=null modelName=bar translatorName=custom sessionID=qy+D1Orv7o1H principal=user@teiid-security sql=SELECT
bar.items.identifier FROM bar.items ORDER BY bar.items.identifier DESC LIMIT 1000
14:04:37,594 DEBUG [org.teiid.COMMAND_LOG] (Worker21_QueryProcessorQueue390) qy+D1Orv7o1H
END SRC COMMAND: endTime=2014-03-18
14:04:37.594 requestID=qy+D1Orv7o1H.0 sourceCommandID=6 executionID=65 txID=null modelName=bar translatorName=custom sessionID=qy+D1Orv7o1H principal=user@teiid-security finalRowCount=28
14:04:37,891 DEBUG [org.teiid.COMMAND_LOG] (Worker21_QueryProcessorQueue391) qy+D1Orv7o1H
END SRC COMMAND: endTime=2014-03-18
14:04:37.891 requestID=qy+D1Orv7o1H.0 sourceCommandID=4 executionID=64 txID=null modelName=foo translatorName=custom sessionID=qy+D1Orv7o1H principal=user@teiid-security finalRowCount=1000
14:04:37,893 DEBUG [org.teiid.COMMAND_LOG] (Worker21_QueryProcessorQueue391) qy+D1Orv7o1H
ERROR USER COMMAND: endTime=2014-03-18
14:04:37.892 requestID=qy+D1Orv7o1H.0 txID=null sessionID=qy+D1Orv7o1H principal=user@teiid-security vdbName=Foo vdbVersion=1 finalRowCount=null
14:04:37,893 ERROR [org.teiid.PROCESSOR] (Worker21_QueryProcessorQueue391) qy+D1Orv7o1H
TEIID30019 Unexpected exception for request qy+D1Orv7o1H.0: java.lang.AssertionError:
ASSERTION FAILED: expected reference to be not null
at org.teiid.core.util.Assertion.failed(Assertion.java:73)
[teiid-common-core-8.7.0.Beta2.jar:8.7.0.Beta2]
at org.teiid.core.util.Assertion.isNotNull(Assertion.java:100)
[teiid-common-core-8.7.0.Beta2.jar:8.7.0.Beta2]
at org.teiid.core.util.Assertion.isNotNull(Assertion.java:92)
[teiid-common-core-8.7.0.Beta2.jar:8.7.0.Beta2]
at org.teiid.common.buffer.TupleBuffer.getBatch(TupleBuffer.java:287)
[teiid-engine-8.7.0.Beta2.jar:8.7.0.Beta2]
at org.teiid.common.buffer.TupleBuffer.truncateTo(TupleBuffer.java:425)
[teiid-engine-8.7.0.Beta2.jar:8.7.0.Beta2]
at org.teiid.query.processor.relational.SortNode.sortPhase(SortNode.java:117)
[teiid-engine-8.7.0.Beta2.jar:8.7.0.Beta2]
at org.teiid.query.processor.relational.SortNode.getBuffer(SortNode.java:205)
[teiid-engine-8.7.0.Beta2.jar:8.7.0.Beta2]
at org.teiid.query.processor.relational.LimitNode.getBuffer(LimitNode.java:211)
[teiid-engine-8.7.0.Beta2.jar:8.7.0.Beta2]
at org.teiid.query.processor.relational.RelationalPlan.getBuffer(RelationalPlan.java:250)
[teiid-engine-8.7.0.Beta2.jar:8.7.0.Beta2]
at org.teiid.query.processor.QueryProcessor.getBuffer(QueryProcessor.java:289)
[teiid-engine-8.7.0.Beta2.jar:8.7.0.Beta2]
at org.teiid.query.processor.BatchCollector.collectTuples(BatchCollector.java:149)
[teiid-engine-8.7.0.Beta2.jar:8.7.0.Beta2]
at org.teiid.query.processor.BatchCollector.collectTuples(BatchCollector.java:141)
[teiid-engine-8.7.0.Beta2.jar:8.7.0.Beta2]
at org.teiid.dqp.internal.process.RequestWorkItem.processMore(RequestWorkItem.java:435)
[teiid-engine-8.7.0.Beta2.jar:8.7.0.Beta2]
at org.teiid.dqp.internal.process.RequestWorkItem.process(RequestWorkItem.java:320)
[teiid-engine-8.7.0.Beta2.jar:8.7.0.Beta2]
at org.teiid.dqp.internal.process.AbstractWorkItem.run(AbstractWorkItem.java:51)
[teiid-engine-8.7.0.Beta2.jar:8.7.0.Beta2]
at org.teiid.dqp.internal.process.RequestWorkItem.run(RequestWorkItem.java:248)
[teiid-engine-8.7.0.Beta2.jar:8.7.0.Beta2]
at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:274)
[teiid-engine-8.7.0.Beta2.jar:8.7.0.Beta2]
at
org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:119)
[teiid-engine-8.7.0.Beta2.jar:8.7.0.Beta2]
at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:214)
[teiid-engine-8.7.0.Beta2.jar:8.7.0.Beta2]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
[rt.jar:1.7.0_02]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
[rt.jar:1.7.0_02]
at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_02]
{{code}}
ASSERTION FAILED with UNION
---------------------------
Key: TEIID-2900
URL:
https://issues.jboss.org/browse/TEIID-2900
Project: Teiid
Issue Type: Bug
Components: Query Engine
Affects Versions: 8.7
Reporter: Tom Arnold
Assignee: Steven Hawkins
Labels: 8.7, assertionfailedexception, union
This is reproducible in Teiid 8.7 beta2 from the downloads page, and in 8.7 beta3 built
from GIT master.
foo has >1000 rows. bar has 28 rows. Playing with the limit, it's possible to get
the query to work.
{code}
<model name="foo">
<source name="foo" translator-name="custom"
connection-jndi-name="java:/FooDS"/>
</model>
<model name="bar">
<source name="bar" translator-name="custom"
connection-jndi-name="java:/BarDS"/>
</model>
{code}
{code:sql}
select * from (
(select identifier from foo.items)
union all
(select identifier from bar.items)
) x
order by identifier desc
limit 1000;
{code}
{code}
11:15:32,992 DEBUG [org.teiid.COMMAND_LOG] (New I/O worker #1) Nqu3TY8Cd+7P START USER
COMMAND: startTime=2014-03-18
11:15:32.992 requestID=Nqu3TY8Cd+7P.0 txID=null sessionID=Nqu3TY8Cd+7P applicationName=JDBCprincipal=user@teiid-security vdbName=Foo vdbVersion=1 sql=select
* from (
(select identifier from foo.items)
union all
(select identifier from bar.items)
) x
order by identifier desc
limit 1000
11:15:33,106 DEBUG [org.teiid.COMMAND_LOG] (Worker1_QueryProcessorQueue1) Nqu3TY8Cd+7P
START DATA SRC COMMAND: startTime=2014-03-18
11:15:33.106 requestID=Nqu3TY8Cd+7P.0 sourceCommandID=4 executionID=0 txID=null modelName=foo translatorName=foo sessionID=Nqu3TY8Cd+7P principal=user@teiid-security sql=SELECT
foo.items.identifier FROM foo.items ORDER BY foo.items.identifier DESC LIMIT 1000
11:15:33,106 DEBUG [org.teiid.COMMAND_LOG] (Worker2_QueryProcessorQueue2) Nqu3TY8Cd+7P
START DATA SRC COMMAND: startTime=2014-03-18
11:15:33.106 requestID=Nqu3TY8Cd+7P.0 sourceCommandID=6 executionID=1 txID=null modelName=bar translatorName=foo sessionID=Nqu3TY8Cd+7P principal=user@teiid-security sql=SELECT
bar.items.identifier FROM bar.items ORDER BY bar.items.identifier DESC LIMIT 1000
11:15:33,154 DEBUG [org.teiid.COMMAND_LOG] (Worker0_QueryProcessorQueue3) Nqu3TY8Cd+7P
END SRC COMMAND: endTime=2014-03-18
11:15:33.154 requestID=Nqu3TY8Cd+7P.0 sourceCommandID=6 executionID=1 txID=null modelName=bar translatorName=foo sessionID=Nqu3TY8Cd+7P principal=user@teiid-security finalRowCount=28
11:15:33,553 DEBUG [org.teiid.COMMAND_LOG] (Worker0_QueryProcessorQueue4) Nqu3TY8Cd+7P
END SRC COMMAND: endTime=2014-03-18
11:15:33.553 requestID=Nqu3TY8Cd+7P.0 sourceCommandID=4 executionID=0 txID=null modelName=foo translatorName=foo sessionID=Nqu3TY8Cd+7P principal=user@teiid-security finalRowCount=1000
11:15:33,567 DEBUG [org.teiid.COMMAND_LOG] (Worker0_QueryProcessorQueue4) Nqu3TY8Cd+7P
ERROR USER COMMAND: endTime=2014-03-18
11:15:33.567 requestID=Nqu3TY8Cd+7P.0 txID=null sessionID=Nqu3TY8Cd+7P principal=user@teiid-security vdbName=Foo vdbVersion=1 finalRowCount=null
11:15:33,568 ERROR [org.teiid.PROCESSOR] (Worker0_QueryProcessorQueue4) Nqu3TY8Cd+7P
TEIID30019 Unexpected exception for request Nqu3TY8Cd+7P.0: java.lang.AssertionError:
ASSERTION FAILED: expected reference to be not null
at org.teiid.core.util.Assertion.failed(Assertion.java:73)
[teiid-common-core-8.7.0.Beta2.jar:8.7.0.Beta2]
at org.teiid.core.util.Assertion.isNotNull(Assertion.java:100)
[teiid-common-core-8.7.0.Beta2.jar:8.7.0.Beta2]
at org.teiid.core.util.Assertion.isNotNull(Assertion.java:92)
[teiid-common-core-8.7.0.Beta2.jar:8.7.0.Beta2]
at org.teiid.common.buffer.TupleBuffer.getBatch(TupleBuffer.java:287)
[teiid-engine-8.7.0.Beta2.jar:8.7.0.Beta2]
at org.teiid.common.buffer.TupleBuffer.truncateTo(TupleBuffer.java:425)
[teiid-engine-8.7.0.Beta2.jar:8.7.0.Beta2]
at org.teiid.query.processor.relational.SortNode.sortPhase(SortNode.java:117)
[teiid-engine-8.7.0.Beta2.jar:8.7.0.Beta2]
at org.teiid.query.processor.relational.SortNode.getBuffer(SortNode.java:205)
[teiid-engine-8.7.0.Beta2.jar:8.7.0.Beta2]
at org.teiid.query.processor.relational.LimitNode.getBuffer(LimitNode.java:211)
[teiid-engine-8.7.0.Beta2.jar:8.7.0.Beta2]
at
org.teiid.query.processor.relational.RelationalPlan.getBuffer(RelationalPlan.java:250)
[teiid-engine-8.7.0.Beta2.jar:8.7.0.Beta2]
at org.teiid.query.processor.QueryProcessor.getBuffer(QueryProcessor.java:289)
[teiid-engine-8.7.0.Beta2.jar:8.7.0.Beta2]
at org.teiid.query.processor.BatchCollector.collectTuples(BatchCollector.java:149)
[teiid-engine-8.7.0.Beta2.jar:8.7.0.Beta2]
at org.teiid.query.processor.BatchCollector.collectTuples(BatchCollector.java:141)
[teiid-engine-8.7.0.Beta2.jar:8.7.0.Beta2]
at org.teiid.dqp.internal.process.RequestWorkItem.processMore(RequestWorkItem.java:435)
[teiid-engine-8.7.0.Beta2.jar:8.7.0.Beta2]
at org.teiid.dqp.internal.process.RequestWorkItem.process(RequestWorkItem.java:320)
[teiid-engine-8.7.0.Beta2.jar:8.7.0.Beta2]
at org.teiid.dqp.internal.process.AbstractWorkItem.run(AbstractWorkItem.java:51)
[teiid-engine-8.7.0.Beta2.jar:8.7.0.Beta2]
at org.teiid.dqp.internal.process.RequestWorkItem.run(RequestWorkItem.java:248)
[teiid-engine-8.7.0.Beta2.jar:8.7.0.Beta2]
at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:274)
[teiid-engine-8.7.0.Beta2.jar:8.7.0.Beta2]
at
org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:119)
[teiid-engine-8.7.0.Beta2.jar:8.7.0.Beta2]
at
org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:214)
[teiid-engine-8.7.0.Beta2.jar:8.7.0.Beta2]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
[rt.jar:1.7.0_02]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
[rt.jar:1.7.0_02]
at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_02]
{code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:
http://www.atlassian.com/software/jira