List:Commits« Previous MessageNext Message »
From:mmatthews Date:March 14 2007 6:33pm
Subject:Connector/J commit: r6344 - trunk/connector-j/src/com/mysql/jdbc
View as plain text  
Modified:
   trunk/connector-j/src/com/mysql/jdbc/Connection.java
   trunk/connector-j/src/com/mysql/jdbc/DatabaseMetaData.java
   trunk/connector-j/src/com/mysql/jdbc/JDBC4Connection.java
   trunk/connector-j/src/com/mysql/jdbc/JDBC4PreparedStatement.java
   trunk/connector-j/src/com/mysql/jdbc/JDBC4PreparedStatementHelper.java
   trunk/connector-j/src/com/mysql/jdbc/JDBC4ResultSet.java
   trunk/connector-j/src/com/mysql/jdbc/JDBC4UpdatableResultSet.java
   trunk/connector-j/src/com/mysql/jdbc/MysqlIO.java
   trunk/connector-j/src/com/mysql/jdbc/PreparedStatement.java
   trunk/connector-j/src/com/mysql/jdbc/ResultSet.java
   trunk/connector-j/src/com/mysql/jdbc/SQLError.java
   trunk/connector-j/src/com/mysql/jdbc/Util.java
Log:
Re-work of factory methods to support JDBC-4.0 transparently in pre-6.0 VMs.

Modified: trunk/connector-j/src/com/mysql/jdbc/Connection.java
===================================================================
--- trunk/connector-j/src/com/mysql/jdbc/Connection.java	2007-03-13 20:33:55 UTC (rev
6343)
+++ trunk/connector-j/src/com/mysql/jdbc/Connection.java	2007-03-14 17:33:54 UTC (rev
6344)
@@ -273,7 +273,7 @@
 		}
 
 		return (Connection) Util.getInstance(
-				"com.mysql.jdbc.jdbc4.JDBC4Connection", new Class[] {
+				"com.mysql.jdbc.JDBC4Connection", new Class[] {
 						String.class, Integer.TYPE, Properties.class,
 						String.class, String.class }, new Object[] {
 						hostToConnectTo, new Integer(portToConnectTo), info,

Modified: trunk/connector-j/src/com/mysql/jdbc/DatabaseMetaData.java
===================================================================
--- trunk/connector-j/src/com/mysql/jdbc/DatabaseMetaData.java	2007-03-13 20:33:55 UTC
(rev 6343)
+++ trunk/connector-j/src/com/mysql/jdbc/DatabaseMetaData.java	2007-03-14 17:33:54 UTC
(rev 6344)
@@ -622,14 +622,14 @@
 				&& connToSet.versionMeetsMinimum(5, 0, 7)) {
 			return (DatabaseMetaData) Util
 					.getInstance(
-							"com.mysql.jdbc.jdbc4.JDBC4DatabaseMetaDataUsingInfoSchema",
+							"com.mysql.jdbc.JDBC4DatabaseMetaDataUsingInfoSchema",
 							new Class[] { com.mysql.jdbc.Connection.class,
 									String.class }, new Object[] { connToSet,
 									databaseToSet });
 		}
 
 		return (DatabaseMetaData) Util.getInstance(
-				"com.mysql.jdbc.jdbc4.JDBC4DatabaseMetaData", new Class[] {
+				"com.mysql.jdbc.JDBC4DatabaseMetaData", new Class[] {
 						com.mysql.jdbc.Connection.class, String.class },
 				new Object[] { connToSet, databaseToSet });
 	}

Modified: trunk/connector-j/src/com/mysql/jdbc/JDBC4Connection.java
===================================================================
--- trunk/connector-j/src/com/mysql/jdbc/JDBC4Connection.java	2007-03-13 20:33:55 UTC (rev
6343)
+++ trunk/connector-j/src/com/mysql/jdbc/JDBC4Connection.java	2007-03-14 17:33:54 UTC (rev
6344)
@@ -38,7 +38,7 @@
 
 public class JDBC4Connection extends Connection {
 
-	JDBC4Connection(String hostToConnectTo, int portToConnectTo, Properties info, String
databaseToConnectTo, String url) throws SQLException {
+	public JDBC4Connection(String hostToConnectTo, int portToConnectTo, Properties info,
String databaseToConnectTo, String url) throws SQLException {
 		super(hostToConnectTo, portToConnectTo, info, databaseToConnectTo, url);
 		// TODO Auto-generated constructor stub
 	}

Modified: trunk/connector-j/src/com/mysql/jdbc/JDBC4PreparedStatement.java
===================================================================
--- trunk/connector-j/src/com/mysql/jdbc/JDBC4PreparedStatement.java	2007-03-13 20:33:55
UTC (rev 6343)
+++ trunk/connector-j/src/com/mysql/jdbc/JDBC4PreparedStatement.java	2007-03-14 17:33:54
UTC (rev 6344)
@@ -33,19 +33,29 @@
 
 import com.mysql.jdbc.Connection;
 import com.mysql.jdbc.PreparedStatement;
+import com.mysql.jdbc.PreparedStatement.ParseInfo;
 import com.mysql.jdbc.exceptions.NotYetImplementedException;
 
 public class JDBC4PreparedStatement extends PreparedStatement {
 
-	protected JDBC4PreparedStatement(Connection conn, String catalog) throws SQLException {
+	public JDBC4PreparedStatement(Connection conn, String catalog) throws SQLException {
 		super(conn, catalog);
 	}
 	
+	public JDBC4PreparedStatement(Connection conn, String sql, String catalog)
+		throws SQLException {
+		super(conn, sql, catalog);
+	}
+	
+	public JDBC4PreparedStatement(Connection conn, String sql, String catalog,
+			ParseInfo cachedParseInfo) throws SQLException {
+		super(conn, sql, catalog, cachedParseInfo);
+	}
+
 	public void setRowId(int parameterIndex, RowId x) throws SQLException {
 		JDBC4PreparedStatementHelper.setRowId(this, parameterIndex, x);
 	}
-
-
+	
 	/**
 	 * JDBC 4.0 Set a NCLOB parameter.
 	 * 

Modified: trunk/connector-j/src/com/mysql/jdbc/JDBC4PreparedStatementHelper.java
===================================================================
--- trunk/connector-j/src/com/mysql/jdbc/JDBC4PreparedStatementHelper.java	2007-03-13
20:33:55 UTC (rev 6343)
+++ trunk/connector-j/src/com/mysql/jdbc/JDBC4PreparedStatementHelper.java	2007-03-14
17:33:54 UTC (rev 6344)
@@ -70,7 +70,8 @@
 		if (xmlObject == null) {
 			pstmt.setNull(parameterIndex, Types.SQLXML);
 		} else {
-			pstmt.setCharacterStream(parameterIndex, xmlObject.getCharacterStream());	
+			// FIXME: Won't work for Non-MYSQL SQLXMLs
+			pstmt.setCharacterStream(parameterIndex,
((JDBC4MysqlSQLXML)xmlObject).serializeAsCharacterStream());	
 		}
 	}
 }

Modified: trunk/connector-j/src/com/mysql/jdbc/JDBC4ResultSet.java
===================================================================
--- trunk/connector-j/src/com/mysql/jdbc/JDBC4ResultSet.java	2007-03-13 20:33:55 UTC (rev
6343)
+++ trunk/connector-j/src/com/mysql/jdbc/JDBC4ResultSet.java	2007-03-14 17:33:54 UTC (rev
6344)
@@ -32,8 +32,10 @@
 import java.sql.SQLXML;
 
 import com.mysql.jdbc.Connection;
+import com.mysql.jdbc.Field;
 import com.mysql.jdbc.NotUpdatable;
 import com.mysql.jdbc.ResultSet;
+import com.mysql.jdbc.RowData;
 import com.mysql.jdbc.SQLError;
 import com.mysql.jdbc.Statement;
 import com.mysql.jdbc.exceptions.NotYetImplementedException;
@@ -42,9 +44,13 @@
 
 	public JDBC4ResultSet(long updateCount, long updateID, Connection conn, Statement
creatorStmt) {
 		super(updateCount, updateID, conn, creatorStmt);
-		// TODO Auto-generated constructor stub
 	}
 	
+	public JDBC4ResultSet(String catalog, Field[] fields, RowData tuples,
+			Connection conn, Statement creatorStmt) throws SQLException {
+		super(catalog, fields, tuples, conn, creatorStmt);
+	}
+	
 	/**
 	 * JDBC 4.0
 	 * 

Modified: trunk/connector-j/src/com/mysql/jdbc/JDBC4UpdatableResultSet.java
===================================================================
--- trunk/connector-j/src/com/mysql/jdbc/JDBC4UpdatableResultSet.java	2007-03-13 20:33:55
UTC (rev 6343)
+++ trunk/connector-j/src/com/mysql/jdbc/JDBC4UpdatableResultSet.java	2007-03-14 17:33:54
UTC (rev 6344)
@@ -122,12 +122,74 @@
 		
 	}
 	
-	
-	
 	public void updateRowId(int columnIndex, RowId x) throws SQLException {
 		throw new NotUpdatable();
 	}
 
+	public void updateAsciiStream(String columnLabel, InputStream x) throws SQLException {
+		updateAsciiStream(findColumn(columnLabel), x);	
+	}
+
+	public void updateAsciiStream(String columnLabel, InputStream x, long length) throws
SQLException {
+		updateAsciiStream(findColumn(columnLabel), x, length);
+	}
+
+	public void updateBinaryStream(String columnLabel, InputStream x) throws SQLException {
+		updateBinaryStream(findColumn(columnLabel), x);
+	}
+
+	public void updateBinaryStream(String columnLabel, InputStream x, long length) throws
SQLException {
+		updateBinaryStream(findColumn(columnLabel), x, length);
+	}
+
+	public void updateBlob(String columnLabel, InputStream inputStream) throws SQLException
{
+		updateBlob(findColumn(columnLabel), inputStream);
+	}
+
+	public void updateBlob(String columnLabel, InputStream inputStream, long length) throws
SQLException {
+		updateBlob(findColumn(columnLabel), inputStream, length);
+	}
+
+	public void updateCharacterStream(String columnLabel, Reader reader) throws SQLException
{
+		updateCharacterStream(findColumn(columnLabel), reader);
+	}
+
+	public void updateCharacterStream(String columnLabel, Reader reader, long length) throws
SQLException {
+		updateCharacterStream(findColumn(columnLabel), reader, length);
+	}
+	
+	public void updateClob(String columnLabel, Reader reader) throws SQLException {
+		updateClob(findColumn(columnLabel), reader);
+	}
+
+	public void updateClob(String columnLabel, Reader reader, long length) throws
SQLException {
+		updateClob(findColumn(columnLabel), reader, length);
+	}
+	
+	public void updateNCharacterStream(String columnLabel, Reader reader) throws
SQLException {
+		updateNCharacterStream(findColumn(columnLabel), reader);
+		
+	}
+
+	public void updateNCharacterStream(String columnLabel, Reader reader, long length)
throws SQLException {
+		updateNCharacterStream(findColumn(columnLabel), reader, length);
+	}
+
+
+	public void updateNClob(String columnLabel, Reader reader) throws SQLException {
+		updateNClob(findColumn(columnLabel), reader);
+		
+	}
+
+	public void updateNClob(String columnLabel, Reader reader, long length) throws
SQLException {
+		updateNClob(findColumn(columnLabel), reader, length);
+	}
+
+	public void updateSQLXML(String columnLabel, SQLXML xmlObject) throws SQLException {
+		updateSQLXML(findColumn(columnLabel), xmlObject);
+		
+	}
+
 	/**
 	 * JDBC 4.0 Update a column with a character stream value. The updateXXX()
 	 * methods are used to update column values in the current row, or the

Modified: trunk/connector-j/src/com/mysql/jdbc/MysqlIO.java
===================================================================
--- trunk/connector-j/src/com/mysql/jdbc/MysqlIO.java	2007-03-13 20:33:55 UTC (rev 6343)
+++ trunk/connector-j/src/com/mysql/jdbc/MysqlIO.java	2007-03-14 17:33:54 UTC (rev 6344)
@@ -2054,8 +2054,8 @@
 
         switch (resultSetConcurrency) {
         case java.sql.ResultSet.CONCUR_READ_ONLY:
-            rs = new com.mysql.jdbc.ResultSet(catalog, fields, rows,
-                    this.connection, callingStatement);
+            rs = com.mysql.jdbc.ResultSet.getInstance(catalog, fields, rows,
+                    this.connection, callingStatement, false);
 
             if (isBinaryEncoded) {
                 rs.setBinaryEncoded();
@@ -2064,14 +2064,14 @@
             break;
 
         case java.sql.ResultSet.CONCUR_UPDATABLE:
-            rs = new com.mysql.jdbc.UpdatableResultSet(catalog, fields, rows,
-                    this.connection, callingStatement);
+            rs = com.mysql.jdbc.ResultSet.getInstance(catalog, fields, rows,
+                    this.connection, callingStatement, true);
 
             break;
 
         default:
-            return new com.mysql.jdbc.ResultSet(catalog, fields, rows,
-                this.connection, callingStatement);
+            return com.mysql.jdbc.ResultSet.getInstance(catalog, fields, rows,
+                this.connection, callingStatement, false);
         }
 
         rs.setResultSetType(resultSetType);
@@ -2124,7 +2124,7 @@
                  +ex.getClass().getName(), SQLError.SQL_STATE_GENERAL_ERROR, -1);
         }
 
-        ResultSet updateRs = new com.mysql.jdbc.ResultSet(updateCount,
+        ResultSet updateRs = com.mysql.jdbc.ResultSet.getInstance(updateCount,
                 updateID, this.connection, callingStatement);
 
         if (info != null) {

Modified: trunk/connector-j/src/com/mysql/jdbc/PreparedStatement.java
===================================================================
--- trunk/connector-j/src/com/mysql/jdbc/PreparedStatement.java	2007-03-13 20:33:55 UTC
(rev 6343)
+++ trunk/connector-j/src/com/mysql/jdbc/PreparedStatement.java	2007-03-14 17:33:54 UTC
(rev 6344)
@@ -447,7 +447,7 @@
 			return new PreparedStatement(conn, sql, catalog);
 		}
 
-		return
(PreparedStatement)Util.getInstance("com.mysql.jdbc.jdbc4.JDBC4PreparedStatement", 
+		return (PreparedStatement)Util.getInstance("com.mysql.jdbc.JDBC4PreparedStatement", 
 				new Class[] {Connection.class, String.class, String.class}, 
 				new Object[] {conn, sql, catalog});
 	}
@@ -465,7 +465,7 @@
 			return new PreparedStatement(conn, sql, catalog, cachedParseInfo);
 		}
 		
-		return
(PreparedStatement)Util.getInstance("com.mysql.jdbc.jdbc4.JDBC4PreparedStatement", 
+		return (PreparedStatement)Util.getInstance("com.mysql.jdbc.JDBC4PreparedStatement", 
 				new Class[] {Connection.class, String.class, String.class, ParseInfo.class}, 
 				new Object[] {conn, sql, catalog, cachedParseInfo});
 	}
@@ -481,7 +481,7 @@
 	 * @throws SQLException
 	 *             if an error occurs
 	 */
-	protected PreparedStatement(Connection conn, String catalog)
+	public PreparedStatement(Connection conn, String catalog)
 			throws SQLException {
 		super(conn, catalog);
 	}
@@ -499,7 +499,7 @@
 	 * @throws SQLException
 	 *             if a database error occurs.
 	 */
-	protected PreparedStatement(Connection conn, String sql, String catalog)
+	public PreparedStatement(Connection conn, String sql, String catalog)
 			throws SQLException {
 		super(conn, catalog);
 
@@ -535,7 +535,7 @@
 	 * @throws SQLException
 	 *             DOCUMENT ME!
 	 */
-	protected PreparedStatement(Connection conn, String sql, String catalog,
+	public PreparedStatement(Connection conn, String sql, String catalog,
 			ParseInfo cachedParseInfo) throws SQLException {
 		super(conn, catalog);
 
@@ -957,7 +957,9 @@
 	public synchronized boolean canRewriteAsMultivalueInsertStatement() {
 		if (!this.hasCheckedForRewrite) {
 			this.canRewrite = StringUtils.startsWithIgnoreCaseAndWs(
-					this.originalSql, "INSERT", this.statementAfterCommentsPos);
+					this.originalSql, "INSERT", this.statementAfterCommentsPos)
+					|| StringUtils.startsWithIgnoreCaseAndWs(this.originalSql,
+							"REPLACE", this.statementAfterCommentsPos);
 			this.hasCheckedForRewrite = true;
 		}
 

Modified: trunk/connector-j/src/com/mysql/jdbc/ResultSet.java
===================================================================
--- trunk/connector-j/src/com/mysql/jdbc/ResultSet.java	2007-03-13 20:33:55 UTC (rev 6343)
+++ trunk/connector-j/src/com/mysql/jdbc/ResultSet.java	2007-03-14 17:33:54 UTC (rev 6344)
@@ -294,7 +294,7 @@
 		}
 
 		return (ResultSet) Util.getInstance(
-				"com.mysql.jdbc.jdbc4.JDBC4ResultSet", new Class[] {
+				"com.mysql.jdbc.JDBC4ResultSet", new Class[] {
 						Long.TYPE, Long.TYPE,
 						com.mysql.jdbc.Connection.class,
 						com.mysql.jdbc.Statement.class }, new Object[] {
@@ -320,7 +320,7 @@
 			return new UpdatableResultSet(catalog, fields, tuples, conn, creatorStmt);
 		}
 
-		String className = isUpdatable ? "com.mysql.jdbc.jdbc4.JDBC4UpdatableResultSet" :
"com.mysql.jdbc.jdbc4.JDBC4ResultSet";
+		String className = isUpdatable ? "com.mysql.jdbc.JDBC4UpdatableResultSet" :
"com.mysql.jdbc.JDBC4ResultSet";
 		
 		return (ResultSet) Util.getInstance(
 				className, new Class[] {

Modified: trunk/connector-j/src/com/mysql/jdbc/SQLError.java
===================================================================
--- trunk/connector-j/src/com/mysql/jdbc/SQLError.java	2007-03-13 20:33:55 UTC (rev 6343)
+++ trunk/connector-j/src/com/mysql/jdbc/SQLError.java	2007-03-14 17:33:54 UTC (rev 6344)
@@ -916,7 +916,7 @@
 								.getInstance(
 										"com.mysql.jdbc.exceptions.jdbc4.MySQLTransientConnectionException",
 										new Class[] { String.class,
-												String.class, Integer.class },
+												String.class, Integer.TYPE },
 										new Object[] { message, sqlState,
 												new Integer(vendorErrorCode) });
 					}
@@ -930,7 +930,7 @@
 							.getInstance(
 									"com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException",
 									new Class[] { String.class, String.class,
-											Integer.class }, new Object[] {
+											Integer.TYPE  }, new Object[] {
 											message, sqlState,
 											new Integer(vendorErrorCode) });
 				}
@@ -945,7 +945,7 @@
 							.getInstance(
 									"com.mysql.jdbc.exceptions.jdbc4.MySQLDataException",
 									new Class[] { String.class, String.class,
-											Integer.class }, new Object[] {
+											Integer.TYPE  }, new Object[] {
 											message, sqlState,
 											new Integer(vendorErrorCode) });
 				}
@@ -961,7 +961,7 @@
 							.getInstance(
 									"com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException",
 									new Class[] { String.class, String.class,
-											Integer.class }, new Object[] {
+											Integer.TYPE  }, new Object[] {
 											message, sqlState,
 											new Integer(vendorErrorCode) });
 				}
@@ -976,7 +976,7 @@
 							.getInstance(
 									"com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException",
 									new Class[] { String.class, String.class,
-											Integer.class }, new Object[] {
+											Integer.TYPE  }, new Object[] {
 											message, sqlState,
 											new Integer(vendorErrorCode) });
 				}
@@ -991,7 +991,7 @@
 							.getInstance(
 									"com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException",
 									new Class[] { String.class, String.class,
-											Integer.class }, new Object[] {
+											Integer.TYPE  }, new Object[] {
 											message, sqlState,
 											new Integer(vendorErrorCode) });
 				}

Modified: trunk/connector-j/src/com/mysql/jdbc/Util.java
===================================================================
--- trunk/connector-j/src/com/mysql/jdbc/Util.java	2007-03-13 20:33:55 UTC (rev 6343)
+++ trunk/connector-j/src/com/mysql/jdbc/Util.java	2007-03-14 17:33:54 UTC (rev 6344)
@@ -337,7 +337,13 @@
 		} catch (IllegalAccessException e) {
 			throw new SQLException(e.toString(), SQLError.SQL_STATE_GENERAL_ERROR);
 		} catch (InvocationTargetException e) {
-			throw new SQLException(e.toString(), SQLError.SQL_STATE_GENERAL_ERROR);
+			Throwable target = e.getTargetException(); 
+			
+			if (target instanceof SQLException) {
+				throw (SQLException)target;
+			}
+			
+			throw new SQLException(target.toString(), SQLError.SQL_STATE_GENERAL_ERROR);
 		} catch (NoSuchMethodException e) {
 			throw new SQLException(e.toString(), SQLError.SQL_STATE_GENERAL_ERROR);
 		} catch (ClassNotFoundException e) {

Thread
Connector/J commit: r6344 - trunk/connector-j/src/com/mysql/jdbcmmatthews14 Mar