AssertionError: Delete failed
-----------------------------
Key: TEIID-4151
URL:
https://issues.jboss.org/browse/TEIID-4151
Project: Teiid
Issue Type: Bug
Components: Query Engine
Affects Versions: 8.11.3
Reporter: Bram Gadeyne
Assignee: Steven Hawkins
Fix For: 9.0, 8.12.5, 8.13.4
When using a query like
insert into #CaresequencesDaily
some large select;
delete
from #CaresequencesDaily
where datum < (select cast(startime as date) from #period);
delete
from #CaresequencesDaily
where datum > (select cast(endtime as date) from #period);
We get the following exception on the execution of the second delete query. It seems it
does not matter in what order the delete queries are executed.
Unexpected exception for request lMZm1kGe28/C.24: java.lang.AssertionError: Delete
failed
at org.teiid.query.tempdata.TempTable.deleteTuple(TempTable.java:801)
[teiid-engine-8.11.3.jar:8.11.3]
at org.teiid.query.tempdata.TempTable.access$500(TempTable.java:83)
[teiid-engine-8.11.3.jar:8.11.3]
at org.teiid.query.tempdata.TempTable$2.tuplePassed(TempTable.java:775)
[teiid-engine-8.11.3.jar:8.11.3]
at org.teiid.query.tempdata.TempTable$UpdateProcessor.process(TempTable.java:257)
[teiid-engine-8.11.3.jar:8.11.3]
at org.teiid.query.tempdata.TempTable.delete(TempTable.java:783)
[teiid-engine-8.11.3.jar:8.11.3]
at
org.teiid.query.tempdata.TempTableDataManager$1.createTupleSource(TempTableDataManager.java:242)
[teiid-engine-8.11.3.jar:8.11.3]
at
org.teiid.query.tempdata.TempTableDataManager$ProxyTupleSource.nextTuple(TempTableDataManager.java:109)
[teiid-engine-8.11.3.jar:8.11.3]
at
org.teiid.query.processor.relational.AccessNode.nextBatchDirect(AccessNode.java:369)
[teiid-engine-8.11.3.jar:8.11.3]
at
org.teiid.query.processor.relational.RelationalNode.nextBatch(RelationalNode.java:278)
[teiid-engine-8.11.3.jar:8.11.3]
at
org.teiid.query.processor.relational.RelationalPlan.nextBatch(RelationalPlan.java:145)
[teiid-engine-8.11.3.jar:8.11.3]
at
org.teiid.query.processor.QueryProcessor.nextBatchDirect(QueryProcessor.java:151)
[teiid-engine-8.11.3.jar:8.11.3]
at org.teiid.query.processor.QueryProcessor.nextBatch(QueryProcessor.java:114)
[teiid-engine-8.11.3.jar:8.11.3]
at
org.teiid.query.processor.BatchCollector.collectTuples(BatchCollector.java:164)
[teiid-engine-8.11.3.jar:8.11.3]
at
org.teiid.query.processor.BatchCollector.collectTuples(BatchCollector.java:146)
[teiid-engine-8.11.3.jar:8.11.3]
at
org.teiid.dqp.internal.process.RequestWorkItem.processMore(RequestWorkItem.java:457)
[teiid-engine-8.11.3.jar:8.11.3]
at
org.teiid.dqp.internal.process.RequestWorkItem.process(RequestWorkItem.java:339)
[teiid-engine-8.11.3.jar:8.11.3]
at org.teiid.dqp.internal.process.AbstractWorkItem.run(AbstractWorkItem.java:51)
[teiid-engine-8.11.3.jar:8.11.3]
at org.teiid.dqp.internal.process.RequestWorkItem.run(RequestWorkItem.java:267)
[teiid-engine-8.11.3.jar:8.11.3]
at
org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:276)
[teiid-engine-8.11.3.jar:8.11.3]
at
org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:119)
[teiid-engine-8.11.3.jar:8.11.3]
at
org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:210)
[teiid-engine-8.11.3.jar:8.11.3]
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[rt.jar:1.8.0_60]
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[rt.jar:1.8.0_60]
at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_60]
I've tried to create a reproducable example but this doesn't throw the exception.
It might be helpfull to understand what is goiing on.
insert into #tmp_params
select parsetimestamp('2016-04-01','yyyy-MM-dd') as starttime,
parsetimestamp('2016-04-15','yyyy-MM-dd') as endtime;
insert into #tmp_dates
select cast(parsetimestamp('2016-03-20','yyyy-MM-dd') as date) as datum,
'somevalue' as somevalue
UNION select cast(parsetimestamp('2016-04-02','yyyy-MM-dd') as date) as
datum, 'somevalue' as somevalue
UNION select cast(parsetimestamp('2016-04-20','yyyy-MM-dd') as date) as
datum, 'somevalue' as somevalue;
delete
from #tmp_dates
where datum > (select cast(endtime as date) from #tmp_params);
--error is thrown when executing this second statement
delete
from #tmp_dates
where datum < (select cast(starttime as date) from #tmp_params);
select *
from #tmp_dates