]
Van Halbert updated TEIID-4519:
-------------------------------
Fix Version/s: 9.2
JDG prevent execution of delete on child objects
------------------------------------------------
Key: TEIID-4519
URL:
https://issues.jboss.org/browse/TEIID-4519
Project: Teiid
Issue Type: Bug
Components: Misc. Connectors
Affects Versions: 8.12.7.6_3
Reporter: Jan Stastny
Assignee: Van Halbert
Priority: Critical
Fix For: 9.2, 8.12.7.6_3
When using JDG and complex pojos, delete query issued against child tables end with
error.
* 1-1 relation:
When deleting a child object, whole parent object is deleted
* 1-n relation:
An exception is thrown:
{code:plain}
13:31:28,926 WARN [org.teiid.CONNECTOR] (Worker7_QueryProcessorQueue91) Connector worker
process failed for atomic-request=rKsoeHUfbaAW.21.0.21:
org.teiid.translator.TranslatorException: TEIID31111 No such accessible property/method
number on class java.util.ArrayList.
at
org.teiid.translator.object.ObjectUpdateExecution.handleDelete(ObjectUpdateExecution.java:388)
[translator-object-8.12.6.6_3.jar:8.12.6.6_3]
at
org.teiid.translator.object.ObjectUpdateExecution.executeUpdate(ObjectUpdateExecution.java:137)
[translator-object-8.12.6.6_3.jar:8.12.6.6_3]
at
org.teiid.translator.object.ObjectUpdateExecution.execute(ObjectUpdateExecution.java:100)
[translator-object-8.12.6.6_3.jar:8.12.6.6_3]
at
org.teiid.dqp.internal.datamgr.ConnectorWorkItem$1.execute(ConnectorWorkItem.java:402)
[teiid-engine-8.12.6.6_3-redhat-1.jar:8.12.6.6_3-redhat-1]
at
org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:364)
[teiid-engine-8.12.6.6_3-redhat-1.jar:8.12.6.6_3-redhat-1]
at sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source) [:1.8.0_102]
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[rt.jar:1.8.0_102]
at java.lang.reflect.Method.invoke(Method.java:498) [rt.jar:1.8.0_102]
at
org.teiid.dqp.internal.datamgr.ConnectorManager$1.invoke(ConnectorManager.java:211)
[teiid-engine-8.12.6.6_3-redhat-1.jar:8.12.6.6_3-redhat-1]
at com.sun.proxy.$Proxy81.execute(Unknown Source)
at
org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:306)
[teiid-engine-8.12.6.6_3-redhat-1.jar:8.12.6.6_3-redhat-1]
at
org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:112)
[teiid-engine-8.12.6.6_3-redhat-1.jar:8.12.6.6_3-redhat-1]
at
org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:108)
[teiid-engine-8.12.6.6_3-redhat-1.jar:8.12.6.6_3-redhat-1]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [rt.jar:1.8.0_102]
at org.teiid.dqp.internal.process.FutureWork.run(FutureWork.java:65)
[teiid-engine-8.12.6.6_3-redhat-1.jar:8.12.6.6_3-redhat-1]
at
org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:276)
[teiid-engine-8.12.6.6_3-redhat-1.jar:8.12.6.6_3-redhat-1]
at
org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:119)
[teiid-engine-8.12.6.6_3-redhat-1.jar:8.12.6.6_3-redhat-1]
at
org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:210)
[teiid-engine-8.12.6.6_3-redhat-1.jar:8.12.6.6_3-redhat-1]
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[rt.jar:1.8.0_102]
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[rt.jar:1.8.0_102]
at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_102]
Caused by: javax.script.ScriptException: TEIID31111 No such accessible property/method
number on class java.util.ArrayList.
at
org.teiid.translator.object.ObjectScriptEngine$1.eval(ObjectScriptEngine.java:144)
[translator-object-8.12.6.6_3.jar:8.12.6.6_3]
at
org.teiid.translator.object.ObjectUpdateExecution.handleDelete(ObjectUpdateExecution.java:372)
[translator-object-8.12.6.6_3.jar:8.12.6.6_3]
... 20 more
{code}
These two cases should be handled. Given the lack of DELETE support, all the DELETE
queries on child entities should throw exception instead.
The DELETE on parent should be enabled though.