Author: shawkins
Date: 2009-08-10 14:26:58 -0400 (Mon, 10 Aug 2009)
New Revision: 1227
Added:
trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/TestJDBCProcedureExecution.java
Modified:
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCProcedureExecution.java
trunk/engine/src/test/java/com/metamatrix/query/unittest/FakeMetadataFactory.java
Log:
TEIID-765 fixing indexing error with procedure execution
Modified:
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCProcedureExecution.java
===================================================================
---
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCProcedureExecution.java 2009-08-10
16:42:31 UTC (rev 1226)
+++
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCProcedureExecution.java 2009-08-10
18:26:58 UTC (rev 1227)
@@ -110,7 +110,7 @@
int paramIndex = 1;
for (IParameter parameter : proc.getParameters()) {
if (parameter.getDirection() == Direction.RETURN) {
- addParameterValue(result, paramIndex, parameter);
+ addParameterValue(result, paramIndex++, parameter);
break;
}
}
@@ -118,9 +118,8 @@
if (parameter.getDirection() == Direction.RETURN || parameter.getDirection() ==
Direction.RESULT_SET) {
continue;
}
- paramIndex++;
if (parameter.getDirection() == Direction.INOUT || parameter.getDirection() ==
Direction.OUT) {
- addParameterValue(result, paramIndex, parameter);
+ addParameterValue(result, paramIndex++, parameter);
}
}
return result;
Added:
trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/TestJDBCProcedureExecution.java
===================================================================
---
trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/TestJDBCProcedureExecution.java
(rev 0)
+++
trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/TestJDBCProcedureExecution.java 2009-08-10
18:26:58 UTC (rev 1227)
@@ -0,0 +1,62 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * See the COPYRIGHT.txt file distributed with this work for information
+ * regarding copyright ownership. Some portions may be licensed
+ * to Red Hat, Inc. under one or more contributor license agreements.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301 USA.
+ */
+
+package org.teiid.connector.jdbc;
+
+import static org.junit.Assert.*;
+
+import java.sql.CallableStatement;
+import java.sql.Connection;
+import java.sql.Types;
+import java.util.Arrays;
+import java.util.Properties;
+
+import org.junit.Test;
+import org.mockito.Mockito;
+import org.teiid.connector.api.ConnectorLogger;
+import org.teiid.connector.api.ExecutionContext;
+import org.teiid.connector.jdbc.translator.Translator;
+import org.teiid.connector.language.ICommand;
+import org.teiid.dqp.internal.datamgr.metadata.RuntimeMetadataImpl;
+
+import com.metamatrix.cdk.api.EnvironmentUtility;
+import com.metamatrix.query.unittest.FakeMetadataFactory;
+
+public class TestJDBCProcedureExecution {
+
+ @Test public void testProcedureExecution() throws Exception {
+ ICommand command = MetadataFactory.helpTranslate(MetadataFactory.BQT_VDB, "exec
pm2.spTest8a()"); //$NON-NLS-1$
+ Connection connection = Mockito.mock(Connection.class);
+ CallableStatement cs = Mockito.mock(CallableStatement.class);
+ Mockito.stub(cs.getUpdateCount()).toReturn(-1);
+ Mockito.stub(cs.getInt(1)).toReturn(5);
+ Mockito.stub(connection.prepareCall("{ call spTest8a(?)}")).toReturn(cs);
//$NON-NLS-1$
+ Translator sqlTranslator = new Translator();
+ ExecutionContext context = EnvironmentUtility.createSecurityContext("user");
//$NON-NLS-1$
+ RuntimeMetadataImpl runtimeMetadata = new
RuntimeMetadataImpl(FakeMetadataFactory.exampleBQTCached());
+ JDBCProcedureExecution procedureExecution = new JDBCProcedureExecution(command,
connection, sqlTranslator, Mockito.mock(ConnectorLogger.class), new Properties(),
runtimeMetadata, context, EnvironmentUtility.createEnvironment(new Properties()) );
+ procedureExecution.execute();
+ assertEquals(Arrays.asList(5), procedureExecution.getOutputParameterValues());
+ Mockito.verify(cs, Mockito.times(1)).registerOutParameter(1, Types.INTEGER);
+ }
+
+}
Property changes on:
trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/TestJDBCProcedureExecution.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified:
trunk/engine/src/test/java/com/metamatrix/query/unittest/FakeMetadataFactory.java
===================================================================
---
trunk/engine/src/test/java/com/metamatrix/query/unittest/FakeMetadataFactory.java 2009-08-10
16:42:31 UTC (rev 1226)
+++
trunk/engine/src/test/java/com/metamatrix/query/unittest/FakeMetadataFactory.java 2009-08-10
18:26:58 UTC (rev 1227)
@@ -2178,6 +2178,8 @@
FakeMetadataObject rs2p3 = createParameter("ret", 1,
ParameterInfo.RESULT_SET, DataTypeManager.DefaultDataTypes.OBJECT, rs2); //$NON-NLS-1$
FakeMetadataObject spTest8 = createStoredProcedure("pm2.spTest8", pm2,
Arrays.asList(new FakeMetadataObject[] { rs2p1, rs2p2, rs2p3}), "spTest8");
//$NON-NLS-1$ //$NON-NLS-2$
+ FakeMetadataObject spTest8a = createStoredProcedure("pm2.spTest8a",
pm2, Arrays.asList(new FakeMetadataObject[] { rs2p2, rs2p3}), "spTest8a");
//$NON-NLS-1$ //$NON-NLS-2$
+
FakeMetadataObject pm4 = createPhysicalModel("pm4"); //$NON-NLS-1$
FakeMetadataObject rs4p1 = createParameter("inkey", 2,
ParameterInfo.IN, DataTypeManager.DefaultDataTypes.INTEGER, null); //$NON-NLS-1$
FakeMetadataObject rs4p2 = createParameter("ret", 1,
ParameterInfo.RETURN_VALUE, DataTypeManager.DefaultDataTypes.INTEGER, null);
//$NON-NLS-1$
@@ -2291,6 +2293,7 @@
store.addObject(pm2);
store.addObject(spTest8);
+ store.addObject(spTest8a);
store.addObject(rs2);
store.addObject(pm4);