[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