[
https://issues.jboss.org/browse/TEIID-2769?page=com.atlassian.jira.plugin...
]
Filip Nguyen commented on TEIID-2769:
-------------------------------------
I think the ERROR message would be the best. The problem was I didn't understand what
causes the problem. Your explanation here is sufficient and workarounds/best practices to
use xmlparse and http streaming results is great, but it is not possible to deduce that
information from neither documentation nor error message.
BLOB as virtual procedure parameter is getting closed
-----------------------------------------------------
Key: TEIID-2769
URL:
https://issues.jboss.org/browse/TEIID-2769
Project: Teiid
Issue Type: Bug
Components: Server
Affects Versions: 8.4.1
Reporter: Van Halbert
Assignee: Steven Hawkins
Not sure what is the cause.
I have two virtual procedures [1][2]. [2] has a XMLLiteral parameter. I call [2] inside
[1]. However I get exception [3] because the response.result blob stream is apparently
closed.
[1] CREATE VIRTUAL PROCEDURE
BEGIN
SELECT t.* FROM (EXEC PeopleRestXmlSource.invokeHttp('GET', null, null, TRUE))
AS response, TABLE(EXEC PeopleRestXmlView.getPeople_response(XMLPARSE(DOCUMENT
response.result))) AS t;
END
[2] CREATE VIRTUAL PROCEDURE
BEGIN
SELECT t.* FROM XMLTABLE('//return' PASSING
PeopleJaxwsView.getPeopleByName_response.xml_in COLUMNS name string PATH 'text()')
AS t;
END
[3]
org.teiid.jdbc.TeiidSQLException: TEIID30328 Unable to evaluate XMLPARSE(DOCUMENT
response.result): TEIID30331 java.sql.SQLException: Already Freed.
at org.teiid.jdbc.TeiidSQLException.create(TeiidSQLException.java:135)
at org.teiid.jdbc.TeiidSQLException.create(TeiidSQLException.java:71)
at org.teiid.jdbc.StatementImpl.postReceiveResults(StatementImpl.java:668)
at org.teiid.jdbc.StatementImpl.access$100(StatementImpl.java:63)
at org.teiid.jdbc.StatementImpl$2.onCompletion(StatementImpl.java:516)
at org.teiid.client.util.ResultsFuture.done(ResultsFuture.java:135)
at org.teiid.client.util.ResultsFuture.access$200(ResultsFuture.java:40)
at org.teiid.client.util.ResultsFuture$1.receiveResults(ResultsFuture.java:79)
at
org.teiid.net.socket.SocketServerInstanceImpl.receivedMessage(SocketServerInstanceImpl.java:242)
at
org.teiid.net.socket.SocketServerInstanceImpl.read(SocketServerInstanceImpl.java:278)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at
org.teiid.net.socket.SocketServerConnectionFactory$ShutdownHandler.invoke(SocketServerConnectionFactory.java:102)
at $Proxy1.read(Unknown Source)
at
org.teiid.net.socket.SocketServerInstanceImpl$RemoteInvocationHandler$1.get(SocketServerInstanceImpl.java:377)
at org.teiid.jdbc.StatementImpl.executeSql(StatementImpl.java:525)
at org.teiid.jdbc.StatementImpl.executeSql(StatementImpl.java:393)
at org.teiid.jdbc.StatementImpl.executeQuery(StatementImpl.java:327)
at JDBCClient.execute(JDBCClient.java:81)
at JDBCClient.main(JDBCClient.java:48)
Caused by: org.teiid.api.exception.query.ExpressionEvaluationException: TEIID30328 Unable
to evaluate XMLPARSE(DOCUMENT response.result): TEIID30331 java.sql.SQLException: Already
Freed.
at org.teiid.query.eval.Evaluator.evaluate(Evaluator.java:608)
at
org.teiid.query.processor.proc.ProcedurePlan.evaluateExpression(ProcedurePlan.java:804)
at org.teiid.query.processor.proc.ProcedurePlan.open(ProcedurePlan.java:211)
at
org.teiid.query.processor.relational.PlanExecutionNode.open(PlanExecutionNode.java:82)
at org.teiid.query.processor.relational.RelationalNode.open(RelationalNode.java:254)
at org.teiid.query.processor.relational.JoinStrategy.openRight(JoinStrategy.java:105)
at
org.teiid.query.processor.relational.NestedTableJoinStrategy.process(NestedTableJoinStrategy.java:114)
at org.teiid.query.processor.relational.JoinNode.nextBatchDirect(JoinNode.java:211)
at
org.teiid.query.processor.relational.RelationalNode.nextBatch(RelationalNode.java:278)
at
org.teiid.query.processor.relational.ProjectNode.nextBatchDirect(ProjectNode.java:146)
at
org.teiid.query.processor.relational.RelationalNode.nextBatch(RelationalNode.java:278)
at
org.teiid.query.processor.relational.RelationalPlan.nextBatch(RelationalPlan.java:149)
at org.teiid.query.processor.QueryProcessor.nextBatchDirect(QueryProcessor.java:149)
at org.teiid.query.processor.QueryProcessor.nextBatch(QueryProcessor.java:112)
at org.teiid.query.processor.BatchIterator.finalRow(BatchIterator.java:69)
at
org.teiid.common.buffer.AbstractTupleSource.getCurrentTuple(AbstractTupleSource.java:70)
at org.teiid.query.processor.BatchIterator.getCurrentTuple(BatchIterator.java:84)
at org.teiid.common.buffer.AbstractTupleSource.hasNext(AbstractTupleSource.java:92)
at org.teiid.query.processor.proc.ProcedurePlan.executePlan(ProcedurePlan.java:563)
at
org.teiid.query.processor.proc.CreateCursorResultSetInstruction.process(CreateCursorResultSetInstruction.java:68)
at
org.teiid.query.processor.proc.ProcedurePlan.processProcedure(ProcedurePlan.java:356)
at org.teiid.query.processor.proc.ProcedurePlan.nextBatchDirect(ProcedurePlan.java:283)
at org.teiid.query.processor.proc.ProcedurePlan.nextBatch(ProcedurePlan.java:257)
at
org.teiid.query.processor.relational.PlanExecutionNode.nextBatchDirect(PlanExecutionNode.java:118)
at
org.teiid.query.processor.relational.RelationalNode.nextBatch(RelationalNode.java:278)
at
org.teiid.query.processor.relational.ProjectNode.nextBatchDirect(ProjectNode.java:146)
at
org.teiid.query.processor.relational.RelationalNode.nextBatch(RelationalNode.java:278)
at
org.teiid.query.processor.relational.ProjectNode.nextBatchDirect(ProjectNode.java:146)
at
org.teiid.query.processor.relational.RelationalNode.nextBatch(RelationalNode.java:278)
at
org.teiid.query.processor.relational.ProjectNode.nextBatchDirect(ProjectNode.java:146)
at
org.teiid.query.processor.relational.RelationalNode.nextBatch(RelationalNode.java:278)
at
org.teiid.query.processor.relational.RelationalPlan.nextBatch(RelationalPlan.java:149)
at org.teiid.query.processor.QueryProcessor.nextBatchDirect(QueryProcessor.java:149)
at org.teiid.query.processor.QueryProcessor.nextBatch(QueryProcessor.java:112)
at org.teiid.query.processor.BatchCollector.collectTuples(BatchCollector.java:157)
at org.teiid.query.processor.BatchCollector.collectTuples(BatchCollector.java:139)
at org.teiid.dqp.internal.process.RequestWorkItem.processMore(RequestWorkItem.java:435)
at org.teiid.dqp.internal.process.RequestWorkItem.process(RequestWorkItem.java:320)
at org.teiid.dqp.internal.process.AbstractWorkItem.run(AbstractWorkItem.java:51)
at org.teiid.dqp.internal.process.RequestWorkItem.run(RequestWorkItem.java:248)
at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:269)
at
org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:119)
at
org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:214)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Caused by: org.teiid.api.exception.query.ExpressionEvaluationException: TEIID30331
java.sql.SQLException: Already Freed.
at org.teiid.query.eval.Evaluator.evaluateXMLParse(Evaluator.java:734)
at org.teiid.query.eval.Evaluator.internalEvaluate(Evaluator.java:668)
at org.teiid.query.eval.Evaluator.evaluate(Evaluator.java:606)
... 45 more
Caused by: java.sql.SQLException: java.sql.SQLException: Already Freed.
at org.teiid.core.types.BaseLob.getBinaryStream(BaseLob.java:105)
at org.teiid.core.types.BaseLob.getCharacterStream(BaseLob.java:98)
at org.teiid.query.eval.Evaluator.evaluateXMLParse(Evaluator.java:727)
... 47 more
Caused by: java.io.IOException: java.sql.SQLException: Already Freed.
at
org.teiid.core.types.InputStreamFactory$BlobInputStreamFactory.getInputStream(InputStreamFactory.java:205)
at org.teiid.core.types.BaseLob.getBinaryStream(BaseLob.java:103)
... 49 more
Caused by: java.sql.SQLException: Already Freed.
at
org.teiid.translator.ws.BinaryWSProcedureExecution$StreamingBlob.getBinaryStream(BinaryWSProcedureExecution.java:72)
at
org.teiid.core.types.InputStreamFactory$BlobInputStreamFactory.getInputStream(InputStreamFactory.java:203)
... 50 more
--
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