[JBoss JIRA] (TEIID-1780) Stored procedure cannot be called using "Procedural Relational Command"
by Steven Hawkins (JIRA)
[ https://issues.jboss.org/browse/TEIID-1780?page=com.atlassian.jira.plugin... ]
Steven Hawkins closed TEIID-1780.
---------------------------------
> 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: Steven Hawkins
> Fix For: 7.4.1, 7.6
>
>
> 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_Ent...], [teiid docs | http://docs.jboss.org/teiid/7.5.0.Final/reference/en-US/html_single/#proc...]). 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
14 years
[JBoss JIRA] Created: (TEIID-1704) if where clause contains more than one equal condition on the same column, no rows are returned for the count query
by Gaurav Chaudhary (JIRA)
if where clause contains more than one equal condition on the same column, no rows are returned for the count query
-------------------------------------------------------------------------------------------------------------------
Key: TEIID-1704
URL: https://issues.jboss.org/browse/TEIID-1704
Project: Teiid
Issue Type: Bug
Components: JDBC Driver
Affects Versions: 7.3
Reporter: Gaurav Chaudhary
Assignee: Steven Hawkins
SELECT count(*) FROM "table1" as Something WHERE (Something."column1" = 'gaurav' AND Something."column1" = 'chaudhary')
does not return any row when this is fired through a prepared statement.
#Table table does not have any value given in the where clause
Though the query
SELECT count(*) FROM "table1" as Something WHERE (Something."column1" = 'gaurav')
works and returns a row with 0 as value.
Though this is a minor issue but due to this, our search is failing if the user gives matching columns in the criteria.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
14 years
[JBoss JIRA] Created: (TEIID-1652) ODBC Data Row results should be batched
by Ramesh Reddy (JIRA)
ODBC Data Row results should be batched
---------------------------------------
Key: TEIID-1652
URL: https://issues.jboss.org/browse/TEIID-1652
Project: Teiid
Issue Type: Enhancement
Components: ODBC
Affects Versions: 7.1.1
Reporter: Ramesh Reddy
Assignee: Ramesh Reddy
Fix For: 7.4.1, 7.5, 7.1.1
Teiid currently writes one row at a time into the wire to send the ODBC data rows. Since the ODBC driver is capable of reading a stream of rows, it will be performant to batch multiple rows into single buffer before they can written to the wire. This will reduce the network fragmentation and result in fewer number of round trips and helps of network latency.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
14 years