[teiid-issues] [JBoss JIRA] (TEIID-1780) Stored procedure cannot be called using "Procedural Relational Command"
Van Halbert (Moved) (JIRA)
jira-events at lists.jboss.org
Wed Oct 12 10:16:16 EDT 2011
[ https://issues.jboss.org/browse/TEIID-1780?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Van Halbert moved SOA-3479 to TEIID-1780:
-----------------------------------------
Project: Teiid (was: JBoss Enterprise SOA Platform)
Key: TEIID-1780 (was: SOA-3479)
Affects Version/s: 7.4.1
(was: 5.2.0.ER4)
Component/s: Server
(was: EDS)
Security: (was: Public)
> Stored procedure cannot be called using "Procedural Relational Command"
> -----------------------------------------------------------------------
>
> Key: TEIID-1780
> URL: https://issues.jboss.org/browse/TEIID-1780
> Project: Teiid
> Issue Type: Bug
> Components: Server
> Affects Versions: 7.4.1
> Reporter: Filip Nguyen
> Assignee: Van Halbert
> Priority: Blocker
>
> I wasn't able to call stored procedure using procedural relation command ([SOA Platform docs | http://documentation-stage-01.lab.eng.bne.redhat.com/docs/en-US/JBoss_Enterprise_Data_Services/5/html/Data_Services_Reference_Guide/sql_support.html#procedural_relational], [teiid docs | http://docs.jboss.org/teiid/7.5.0.Final/reference/en-US/html_single/#procedural_relational]). I was trying to do so on MySql 5.1 using this simple stored procedure:
> {code:title=Stored procedure|borderStyle=solid}
> CREATE PROCEDURE getEmployeeSurnames
> BEGIN
> SELECT surname FROM employees
> END
> {code}
> The VDB file contains following (I am attaching the vdb file):
> {code:title=DbData.xmi|borderStyle=solid}
> <relational:Procedure xmi:uuid="mmuuid:c4ebdcbb-87d9-4737-8107-f34481cb8406" name="getEmployeeSurnames" nameInSource="getEmployeeSurnames">
> <result xmi:uuid="mmuuid:7620c452-417e-478b-a6bf-ee1529c98048" name="ResultSet">
> <columns xmi:uuid="mmuuid:33f34ec9-4f4f-4d23-8cad-cc6184928b0d" name="surname" length="255">
> <type href="http://www.w3.org/2001/XMLSchema#string"/>
> </columns>
> </result>
> </relational:Procedure>
> {code}
> The Java code I used to invoke the procedure:
> {code:title=Java snippet|borderStyle=solid}
> protected List<String> callGetEmployeeSurnames(boolean useCache) throws Exception {
> List<String> surnameList = new ArrayList<String>();
>
> String[] connectionProps = useCache ?
> new String[] {"resultSetCacheMode=true"} :
> new String[] {};
> String query = "select * from getEmployeeSurnames";
> Connection conn = getTeiidConnection(VDBNAME, connectionProps);
> Statement cs = conn.createStatement();
> cs.execute(query);
> ResultSet rs = cs.executeQuery(query);
> while (rs.next()) {
> surnameList.add(rs.getString(1));
> }
> conn.close();
>
> return surnameList;
> }
>
> public Connection getTeiidConnection(String vdbName, String ... props)
> throws Exception {
> StringBuilder connectionProps = new StringBuilder();
> for (String p : props) {
> connectionProps.append(";" + p);
> }
> String url = "jdbc:teiid:" + vdbName + "@mm://127.0.0.1:31000"
> + connectionProps.toString();
> Class.forName("org.teiid.jdbc.TeiidDriver");
> Connection conn = DriverManager.getConnection(url, "admin", "teiid");
> return conn;
> }
> {code}
> The exception on server was:
> {code:title=sever.log|borderStyle=solid}
> java.lang.NullPointerException
> at org.teiid.query.processor.relational.DependentProcedureAccessNode.prepareNextCommand(DependentProcedureAccessNode.java:95)
> at org.teiid.query.processor.relational.AccessNode.open(AccessNode.java:144)
> at org.teiid.query.processor.relational.DependentProcedureAccessNode.open(DependentProcedureAccessNode.java:86)
> at org.teiid.query.processor.relational.RelationalNode.open(RelationalNode.java:251)
> at org.teiid.query.processor.relational.RelationalNode.open(RelationalNode.java:251)
> at org.teiid.query.processor.relational.RelationalNode.open(RelationalNode.java:251)
> at org.teiid.query.processor.relational.RelationalPlan.open(RelationalPlan.java:153)
> at org.teiid.query.processor.QueryProcessor.init(QueryProcessor.java:182)
> at org.teiid.query.processor.QueryProcessor.nextBatchDirect(QueryProcessor.java:126)
> at org.teiid.query.processor.QueryProcessor.nextBatch(QueryProcessor.java:105)
> at org.teiid.query.processor.BatchCollector.collectTuples(BatchCollector.java:147)
> at org.teiid.dqp.internal.process.RequestWorkItem.processMore(RequestWorkItem.java:357)
> at org.teiid.dqp.internal.process.RequestWorkItem.process(RequestWorkItem.java:282)
> at org.teiid.dqp.internal.process.AbstractWorkItem.run(AbstractWorkItem.java:49)
> at org.teiid.dqp.internal.process.RequestWorkItem.run(RequestWorkItem.java:210)
> at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:194)
> at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:118)
> at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:288)
> at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> at java.lang.Thread.run(Thread.java:662)
> {code}
> The exception on client was:
> {code:title=test.log|borderStyle=solid}
> org.teiid.jdbc.TeiidSQLException: org.teiid.core.TeiidException
> at org.teiid.jdbc.TeiidSQLException.create(TeiidSQLException.java:113)
> at org.teiid.jdbc.TeiidSQLException.create(TeiidSQLException.java:70)
> at org.teiid.jdbc.StatementImpl.postReceiveResults(StatementImpl.java:611)
> at org.teiid.jdbc.StatementImpl.access$000(StatementImpl.java:70)
> at org.teiid.jdbc.StatementImpl$2.onCompletion(StatementImpl.java:530)
> at org.teiid.client.util.ResultsFuture.done(ResultsFuture.java:130)
> at org.teiid.client.util.ResultsFuture.access$200(ResultsFuture.java:37)
> at org.teiid.client.util.ResultsFuture$1.receiveResults(ResultsFuture.java:75)
> at org.teiid.net.socket.SocketServerInstanceImpl.receivedMessage(SocketServerInstanceImpl.java:218)
> at org.teiid.net.socket.SocketServerInstanceImpl.read(SocketServerInstanceImpl.java:253)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at org.teiid.net.socket.SocketServerConnectionFactory$ShutdownHandler.invoke(SocketServerConnectionFactory.java:110)
> at $Proxy17.read(Unknown Source)
> at org.teiid.net.socket.SocketServerInstanceImpl$RemoteInvocationHandler$1.get(SocketServerInstanceImpl.java:347)
> at org.teiid.net.socket.SocketServerInstanceImpl$RemoteInvocationHandler$1.get(SocketServerInstanceImpl.java:333)
> at org.teiid.jdbc.StatementImpl.executeSql(StatementImpl.java:539)
> at org.teiid.jdbc.StatementImpl.execute(StatementImpl.java:315)
> at org.jboss.soa.esb.samples.quickstart.edscache.EDSResultCacheConnectionPropertyTest.callGetEmployeeSurnames(EDSResultCacheConnectionPropertyTest.java:114)
> at org.jboss.soa.esb.samples.quickstart.qa.EDSResultCacheBaseTest.testStoredProcedure(EDSResultCacheBaseTest.java:136)
> at org.jboss.soa.esb.samples.quickstart.edscache.EDSResultCacheConnectionPropertyTest.testStoredProcedure(EDSResultCacheConnectionPropertyTest.java:81)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:641)
> at org.testng.internal.InvokeMethodRunnable.runOne(InvokeMethodRunnable.java:49)
> at org.testng.internal.InvokeMethodRunnable.run(InvokeMethodRunnable.java:40)
> at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
> at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
> at java.util.concurrent.FutureTask.run(FutureTask.java:138)
> at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> at java.lang.Thread.run(Thread.java:662)
> Caused by: [TeiidException]
> 1 [NullPointerException]
> at org.teiid.client.ResultsMessage.setException(ResultsMessage.java:177)
> at org.teiid.dqp.internal.process.RequestWorkItem.sendError(RequestWorkItem.java:689)
> at org.teiid.dqp.internal.process.RequestWorkItem.attemptClose(RequestWorkItem.java:439)
> at org.teiid.dqp.internal.process.RequestWorkItem.process(RequestWorkItem.java:323)
> at org.teiid.dqp.internal.process.AbstractWorkItem.run(AbstractWorkItem.java:49)
> at org.teiid.dqp.internal.process.RequestWorkItem.run(RequestWorkItem.java:210)
> at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:194)
> at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:118)
> at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:288)
> ... 3 more
> Caused by: java.lang.NullPointerException
> at org.teiid.query.processor.relational.DependentProcedureAccessNode.prepareNextCommand(DependentProcedureAccessNode.java:95)
> at org.teiid.query.processor.relational.AccessNode.open(AccessNode.java:144)
> at org.teiid.query.processor.relational.DependentProcedureAccessNode.open(DependentProcedureAccessNode.java:86)
> at org.teiid.query.processor.relational.RelationalNode.open(RelationalNode.java:251)
> at org.teiid.query.processor.relational.RelationalNode.open(RelationalNode.java:251)
> at org.teiid.query.processor.relational.RelationalNode.open(RelationalNode.java:251)
> at org.teiid.query.processor.relational.RelationalPlan.open(RelationalPlan.java:153)
> at org.teiid.query.processor.QueryProcessor.init(QueryProcessor.java:182)
> at org.teiid.query.processor.QueryProcessor.nextBatchDirect(QueryProcessor.java:126)
> at org.teiid.query.processor.QueryProcessor.nextBatch(QueryProcessor.java:105)
> at org.teiid.query.processor.BatchCollector.collectTuples(BatchCollector.java:147)
> at org.teiid.dqp.internal.process.RequestWorkItem.processMore(RequestWorkItem.java:357)
> at org.teiid.dqp.internal.process.RequestWorkItem.process(RequestWorkItem.java:282)
> ... 8 more
> {code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the teiid-issues
mailing list