[teiid-commits] teiid SVN: r787 - in trunk/client-jdbc/src: test/java/com/metamatrix/jdbc and 1 other directory.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Thu Apr 16 13:33:22 EDT 2009


Author: shawkins
Date: 2009-04-16 13:33:22 -0400 (Thu, 16 Apr 2009)
New Revision: 787

Modified:
   trunk/client-jdbc/src/main/java/com/metamatrix/jdbc/MMCallableStatement.java
   trunk/client-jdbc/src/main/java/com/metamatrix/jdbc/MMDatabaseMetaData.java
   trunk/client-jdbc/src/main/java/com/metamatrix/jdbc/MMPreparedStatement.java
   trunk/client-jdbc/src/main/java/com/metamatrix/jdbc/MMStatement.java
   trunk/client-jdbc/src/test/java/com/metamatrix/jdbc/TestMMStatement.java
Log:
TEIID-495 correcting the regression that prevents statement batched updates.

Modified: trunk/client-jdbc/src/main/java/com/metamatrix/jdbc/MMCallableStatement.java
===================================================================
--- trunk/client-jdbc/src/main/java/com/metamatrix/jdbc/MMCallableStatement.java	2009-04-16 16:26:10 UTC (rev 786)
+++ trunk/client-jdbc/src/main/java/com/metamatrix/jdbc/MMCallableStatement.java	2009-04-16 17:33:22 UTC (rev 787)
@@ -84,8 +84,7 @@
     
     @Override
     protected RequestMessage createRequestMessage(String[] commands,
-    		boolean isBatchedCommand, Boolean requiresResultSet)
-    		throws MMSQLException {
+    		boolean isBatchedCommand, Boolean requiresResultSet) {
     	RequestMessage message = super.createRequestMessage(commands, isBatchedCommand, requiresResultSet);
     	message.setCallableStatement(true);
     	message.setPreparedStatement(false);

Modified: trunk/client-jdbc/src/main/java/com/metamatrix/jdbc/MMDatabaseMetaData.java
===================================================================
--- trunk/client-jdbc/src/main/java/com/metamatrix/jdbc/MMDatabaseMetaData.java	2009-04-16 16:26:10 UTC (rev 786)
+++ trunk/client-jdbc/src/main/java/com/metamatrix/jdbc/MMDatabaseMetaData.java	2009-04-16 17:33:22 UTC (rev 787)
@@ -125,46 +125,10 @@
         public final static String JDBC_SYSTEM_MODEL_NAME = "System.JDBC"; //$NON-NLS-1$
     }
 
-    // decodeString mappings
     private static final String TYPE_MAPPING;
-//      new StringBuffer(     MMJDBCSQLTypeInfo.STRING)      .append(",").append(MMJDBCSQLTypeInfo.getSQLType(MMJDBCSQLTypeInfo.STRING)) //$NON-NLS-1$
-//        .append(",").append(MMJDBCSQLTypeInfo.INTEGER)     .append(",").append(MMJDBCSQLTypeInfo.getSQLType(MMJDBCSQLTypeInfo.INTEGER)) //$NON-NLS-1$ //$NON-NLS-2$
-//        .append(",").append(MMJDBCSQLTypeInfo.BOOLEAN)     .append(",").append(MMJDBCSQLTypeInfo.getSQLType(MMJDBCSQLTypeInfo.BOOLEAN)) //$NON-NLS-1$ //$NON-NLS-2$
-//        .append(",").append(MMJDBCSQLTypeInfo.DATE)        .append(",").append(MMJDBCSQLTypeInfo.getSQLType(MMJDBCSQLTypeInfo.DATE)) //$NON-NLS-1$ //$NON-NLS-2$
-//        .append(",").append(MMJDBCSQLTypeInfo.TIME)        .append(",").append(MMJDBCSQLTypeInfo.getSQLType(MMJDBCSQLTypeInfo.TIME)) //$NON-NLS-1$ //$NON-NLS-2$
-//        .append(",").append(MMJDBCSQLTypeInfo.TIMESTAMP)   .append(",").append(MMJDBCSQLTypeInfo.getSQLType(MMJDBCSQLTypeInfo.TIMESTAMP)) //$NON-NLS-1$ //$NON-NLS-2$
-//        .append(",").append(MMJDBCSQLTypeInfo.DOUBLE)      .append(",").append(MMJDBCSQLTypeInfo.getSQLType(MMJDBCSQLTypeInfo.DOUBLE)) //$NON-NLS-1$ //$NON-NLS-2$
-//        .append(",").append(MMJDBCSQLTypeInfo.FLOAT)       .append(",").append(MMJDBCSQLTypeInfo.getSQLType(MMJDBCSQLTypeInfo.FLOAT)) //$NON-NLS-1$ //$NON-NLS-2$
-//        .append(",").append(MMJDBCSQLTypeInfo.BIGDECIMAL)  .append(",").append(MMJDBCSQLTypeInfo.getSQLType(MMJDBCSQLTypeInfo.BIGDECIMAL)) //$NON-NLS-1$ //$NON-NLS-2$
-//        .append(",").append(MMJDBCSQLTypeInfo.BYTE)        .append(",").append(MMJDBCSQLTypeInfo.getSQLType(MMJDBCSQLTypeInfo.BYTE)) //$NON-NLS-1$ //$NON-NLS-2$
-//        .append(",").append(MMJDBCSQLTypeInfo.SHORT)       .append(",").append(MMJDBCSQLTypeInfo.getSQLType(MMJDBCSQLTypeInfo.SHORT)) //$NON-NLS-1$ //$NON-NLS-2$
-//        .append(",").append(MMJDBCSQLTypeInfo.LONG)        .append(",").append(MMJDBCSQLTypeInfo.getSQLType(MMJDBCSQLTypeInfo.LONG)) //$NON-NLS-1$ //$NON-NLS-2$
-//        .append(",").append(MMJDBCSQLTypeInfo.CLOB)        .append(",").append(MMJDBCSQLTypeInfo.getSQLType(MMJDBCSQLTypeInfo.CLOB)) //$NON-NLS-1$ //$NON-NLS-2$
-//        .append(",").append(MMJDBCSQLTypeInfo.BLOB)        .append(",").append(MMJDBCSQLTypeInfo.getSQLType(MMJDBCSQLTypeInfo.BLOB)) //$NON-NLS-1$ //$NON-NLS-2$
-//        .append(",").append(MMJDBCSQLTypeInfo.BIGINTEGER)  .append(",").append(MMJDBCSQLTypeInfo.getSQLType(MMJDBCSQLTypeInfo.BIGINTEGER)) //$NON-NLS-1$ //$NON-NLS-2$
-//        .append(",").append(MMJDBCSQLTypeInfo.CHAR)        .append(",").append(MMJDBCSQLTypeInfo.getSQLType(MMJDBCSQLTypeInfo.CHAR)) //$NON-NLS-1$ //$NON-NLS-2$
-//        .append(",").append(MMJDBCSQLTypeInfo.OBJECT)      .append(",").append(MMJDBCSQLTypeInfo.getSQLType(MMJDBCSQLTypeInfo.OBJECT)) //$NON-NLS-1$ //$NON-NLS-2$
-//        .toString();
     
     private static final String PRECISION_MAPPING;
-//      new StringBuffer(     MMJDBCSQLTypeInfo.STRING)      .append(",").append(ResultsMetadataDefaults.getDefaultPrecision(MMJDBCSQLTypeInfo.STRING)) //$NON-NLS-1$
-//        .append(",").append(MMJDBCSQLTypeInfo.INTEGER)     .append(",").append(ResultsMetadataDefaults.getDefaultPrecision(MMJDBCSQLTypeInfo.INTEGER)) //$NON-NLS-1$ //$NON-NLS-2$
-//        .append(",").append(MMJDBCSQLTypeInfo.BOOLEAN)     .append(",").append(ResultsMetadataDefaults.getDefaultPrecision(MMJDBCSQLTypeInfo.BOOLEAN)) //$NON-NLS-1$ //$NON-NLS-2$
-//        .append(",").append(MMJDBCSQLTypeInfo.DATE)        .append(",").append(ResultsMetadataDefaults.getDefaultPrecision(MMJDBCSQLTypeInfo.DATE)) //$NON-NLS-1$ //$NON-NLS-2$
-//        .append(",").append(MMJDBCSQLTypeInfo.TIME)        .append(",").append(ResultsMetadataDefaults.getDefaultPrecision(MMJDBCSQLTypeInfo.TIME)) //$NON-NLS-1$ //$NON-NLS-2$
-//        .append(",").append(MMJDBCSQLTypeInfo.TIMESTAMP)   .append(",").append(ResultsMetadataDefaults.getDefaultPrecision(MMJDBCSQLTypeInfo.TIMESTAMP)) //$NON-NLS-1$ //$NON-NLS-2$
-//        .append(",").append(MMJDBCSQLTypeInfo.DOUBLE)      .append(",").append(ResultsMetadataDefaults.getDefaultPrecision(MMJDBCSQLTypeInfo.DOUBLE)) //$NON-NLS-1$ //$NON-NLS-2$
-//        .append(",").append(MMJDBCSQLTypeInfo.FLOAT)       .append(",").append(ResultsMetadataDefaults.getDefaultPrecision(MMJDBCSQLTypeInfo.FLOAT)) //$NON-NLS-1$ //$NON-NLS-2$
-//        .append(",").append(MMJDBCSQLTypeInfo.BIGDECIMAL)  .append(",").append(ResultsMetadataDefaults.getDefaultPrecision(MMJDBCSQLTypeInfo.BIGDECIMAL)) //$NON-NLS-1$ //$NON-NLS-2$
-//        .append(",").append(MMJDBCSQLTypeInfo.BYTE)        .append(",").append(ResultsMetadataDefaults.getDefaultPrecision(MMJDBCSQLTypeInfo.BYTE)) //$NON-NLS-1$ //$NON-NLS-2$
-//        .append(",").append(MMJDBCSQLTypeInfo.SHORT)       .append(",").append(ResultsMetadataDefaults.getDefaultPrecision(MMJDBCSQLTypeInfo.SHORT)) //$NON-NLS-1$ //$NON-NLS-2$
-//        .append(",").append(MMJDBCSQLTypeInfo.LONG)        .append(",").append(ResultsMetadataDefaults.getDefaultPrecision(MMJDBCSQLTypeInfo.LONG)) //$NON-NLS-1$ //$NON-NLS-2$
-//        .append(",").append(MMJDBCSQLTypeInfo.CLOB)        .append(",").append(ResultsMetadataDefaults.getDefaultPrecision(MMJDBCSQLTypeInfo.CLOB)) //$NON-NLS-1$ //$NON-NLS-2$
-//        .append(",").append(MMJDBCSQLTypeInfo.BLOB)        .append(",").append(ResultsMetadataDefaults.getDefaultPrecision(MMJDBCSQLTypeInfo.BLOB)) //$NON-NLS-1$ //$NON-NLS-2$
-//        .append(",").append(MMJDBCSQLTypeInfo.BIGINTEGER)  .append(",").append(ResultsMetadataDefaults.getDefaultPrecision(MMJDBCSQLTypeInfo.BIGINTEGER)) //$NON-NLS-1$ //$NON-NLS-2$
-//        .append(",").append(MMJDBCSQLTypeInfo.CHAR)        .append(",").append(ResultsMetadataDefaults.getDefaultPrecision(MMJDBCSQLTypeInfo.CHAR)) //$NON-NLS-1$ //$NON-NLS-2$
-//        .append(",").append(MMJDBCSQLTypeInfo.OBJECT)      .append(",").append(ResultsMetadataDefaults.getDefaultPrecision(MMJDBCSQLTypeInfo.OBJECT)) //$NON-NLS-1$ //$NON-NLS-2$
-//        .toString();
+
     static {
         String[] internalTypes = MMJDBCSQLTypeInfo.getMMTypeNames();
         StringBuffer typeMapping = new StringBuffer();

Modified: trunk/client-jdbc/src/main/java/com/metamatrix/jdbc/MMPreparedStatement.java
===================================================================
--- trunk/client-jdbc/src/main/java/com/metamatrix/jdbc/MMPreparedStatement.java	2009-04-16 16:26:10 UTC (rev 786)
+++ trunk/client-jdbc/src/main/java/com/metamatrix/jdbc/MMPreparedStatement.java	2009-04-16 17:33:22 UTC (rev 787)
@@ -201,8 +201,7 @@
     
     @Override
     protected RequestMessage createRequestMessage(String[] commands,
-    		boolean isBatchedCommand, Boolean requiresResultSet)
-    		throws MMSQLException {
+    		boolean isBatchedCommand, Boolean requiresResultSet) {
     	RequestMessage message = super.createRequestMessage(commands, false, requiresResultSet);
     	message.setPreparedStatement(true);
     	message.setParameterValues(isBatchedCommand?getParameterValuesList(): getParameterValues());

Modified: trunk/client-jdbc/src/main/java/com/metamatrix/jdbc/MMStatement.java
===================================================================
--- trunk/client-jdbc/src/main/java/com/metamatrix/jdbc/MMStatement.java	2009-04-16 16:26:10 UTC (rev 786)
+++ trunk/client-jdbc/src/main/java/com/metamatrix/jdbc/MMStatement.java	2009-04-16 17:33:22 UTC (rev 787)
@@ -32,7 +32,6 @@
 import java.sql.SQLFeatureNotSupportedException;
 import java.sql.SQLWarning;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Calendar;
 import java.util.Collection;
 import java.util.HashMap;
@@ -443,11 +442,7 @@
     }
 
 	protected RequestMessage createRequestMessage(String[] commands,
-			boolean isBatchedCommand, Boolean requiresResultSet)
-			throws MMSQLException {
-		if (isBatchedCommand || requiresResultSet == Boolean.FALSE) {
-            throw new MMSQLException(JDBCPlugin.Util.getString("MMStatement.Operation_Not_Supported", Arrays.asList(commands))); //$NON-NLS-1$
-        }
+			boolean isBatchedCommand, Boolean requiresResultSet) {
         RequestMessage reqMessage = new RequestMessage();
     	reqMessage.setCommands(commands);
     	reqMessage.setBatchedUpdate(isBatchedCommand);

Modified: trunk/client-jdbc/src/test/java/com/metamatrix/jdbc/TestMMStatement.java
===================================================================
--- trunk/client-jdbc/src/test/java/com/metamatrix/jdbc/TestMMStatement.java	2009-04-16 16:26:10 UTC (rev 786)
+++ trunk/client-jdbc/src/test/java/com/metamatrix/jdbc/TestMMStatement.java	2009-04-16 17:33:22 UTC (rev 787)
@@ -22,11 +22,20 @@
 
 package com.metamatrix.jdbc;
 
+import static org.junit.Assert.*;
+
 import java.sql.ResultSet;
+import java.util.Arrays;
+import java.util.List;
 
 import org.junit.Test;
 import org.mockito.Mockito;
 
+import com.metamatrix.dqp.client.ClientSideDQP;
+import com.metamatrix.dqp.client.ResultsFuture;
+import com.metamatrix.dqp.message.RequestMessage;
+import com.metamatrix.dqp.message.ResultsMessage;
+
 public class TestMMStatement {
 
 	@Test(expected=MMSQLException.class) public void testUpdateException() throws Exception {
@@ -34,4 +43,20 @@
 		statement.executeQuery("delete from table"); //$NON-NLS-1$
 	}
 	
+	@Test public void testBatchExecution() throws Exception {
+		MMConnection conn = Mockito.mock(MMConnection.class);
+		ClientSideDQP dqp = Mockito.mock(ClientSideDQP.class);
+		ResultsFuture<ResultsMessage> results = new ResultsFuture<ResultsMessage>(); 
+		Mockito.stub(dqp.executeRequest(Mockito.anyLong(), (RequestMessage)Mockito.anyObject())).toReturn(results);
+		ResultsMessage rm = new ResultsMessage();
+		rm.setResults(new List<?>[] {Arrays.asList(1), Arrays.asList(2)});
+		rm.setUpdateResult(true);
+		results.getResultsReceiver().receiveResults(rm);
+		Mockito.stub(conn.getDQP()).toReturn(dqp);
+		MMStatement statement = new MMStatement(conn, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
+		statement.addBatch("delete from table"); //$NON-NLS-1$
+		statement.addBatch("delete from table1"); //$NON-NLS-1$
+		assertTrue(Arrays.equals(new int[] {1, 2}, statement.executeBatch()));
+	}
+	
 }




More information about the teiid-commits mailing list