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/jdbc | mmatthews | 14 Mar |