Modified:
branches/branch_5_1/src/com/mysql/jdbc/Connection.java
branches/branch_5_1/src/com/mysql/jdbc/ReplicationConnection.java
branches/branch_5_1/src/com/mysql/jdbc/jdbc2/optional/ConnectionWrapper.java
branches/branch_5_1/src/com/mysql/jdbc/jdbc2/optional/JDBC4ConnectionWrapper.java
branches/branch_5_1/src/com/mysql/jdbc/jdbc2/optional/MysqlPooledConnection.java
branches/branch_5_1/src/testsuite/regression/ConnectionRegressionTest.java
Log:
Complete the fix for BUG#34937 (next time have someone review the testcase, to make sure
you don't do something dumb and not create the right *type* of connection in the first
place).
Modified: branches/branch_5_1/src/com/mysql/jdbc/Connection.java
===================================================================
--- branches/branch_5_1/src/com/mysql/jdbc/Connection.java 2008-02-29 19:31:29 UTC (rev
6755)
+++ branches/branch_5_1/src/com/mysql/jdbc/Connection.java 2008-03-03 21:27:51 UTC (rev
6756)
@@ -185,6 +185,12 @@
* Is this connection currently a participant in an XA transaction?
*/
public abstract boolean isInGlobalTx();
+
+ /**
+ * Set the state of being in a global (XA) transaction.
+ * @param flag
+ */
+ public void setInGlobalTx(boolean flag);
/**
* Is this connection connected to the first host in the list if
@@ -204,6 +210,15 @@
public abstract boolean isNoBackslashEscapesSet();
/**
+ * Does this connection have the same resource name as the given
+ * connection (for XA)?
+ *
+ * @param c
+ * @return
+ */
+ public abstract boolean isSameResource(Connection c);
+
+ /**
* Is the server configured to use lower-case table names only?
*
* @return true if lower_case_table_names is 'on'
Modified: branches/branch_5_1/src/com/mysql/jdbc/ReplicationConnection.java
===================================================================
--- branches/branch_5_1/src/com/mysql/jdbc/ReplicationConnection.java 2008-02-29 19:31:29
UTC (rev 6755)
+++ branches/branch_5_1/src/com/mysql/jdbc/ReplicationConnection.java 2008-03-03 21:27:51
UTC (rev 6756)
@@ -2317,4 +2317,12 @@
public synchronized boolean useUnbufferedInput() {
return this.currentConnection.useUnbufferedInput();
}
+
+ public synchronized boolean isSameResource(Connection c) {
+ return this.currentConnection.isSameResource(c);
+ }
+
+ public void setInGlobalTx(boolean flag) {
+ this.currentConnection.setInGlobalTx(flag);
+ }
}
Modified: branches/branch_5_1/src/com/mysql/jdbc/jdbc2/optional/ConnectionWrapper.java
===================================================================
---
branches/branch_5_1/src/com/mysql/jdbc/jdbc2/optional/ConnectionWrapper.java 2008-02-29
19:31:29 UTC (rev 6755)
+++
branches/branch_5_1/src/com/mysql/jdbc/jdbc2/optional/ConnectionWrapper.java 2008-03-03
21:27:51 UTC (rev 6756)
@@ -25,13 +25,12 @@
package com.mysql.jdbc.jdbc2.optional;
import java.lang.reflect.Constructor;
-import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Savepoint;
import java.sql.Statement;
import java.util.TimeZone;
-import com.mysql.jdbc.ConnectionImpl;
+import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Extension;
import com.mysql.jdbc.MysqlErrorNumbers;
import com.mysql.jdbc.SQLError;
@@ -60,9 +59,8 @@
* @see org.gjt.mm.mysql.jdbc2.Connection
* @see org.gjt.mm.mysql.jdbc2.optional.MysqlPooledConnection
*/
-public class ConnectionWrapper extends WrapperBase implements Connection,
- com.mysql.jdbc.Connection {
- protected com.mysql.jdbc.ConnectionImpl mc = null;
+public class ConnectionWrapper extends WrapperBase implements Connection {
+ protected Connection mc = null;
private MysqlPooledConnection mpc = null;
@@ -81,7 +79,7 @@
"com.mysql.jdbc.jdbc2.optional.JDBC4ConnectionWrapper")
.getConstructor(
new Class[] { MysqlPooledConnection.class,
- ConnectionImpl.class, Boolean.TYPE });
+ Connection.class, Boolean.TYPE });
} catch (SecurityException e) {
throw new RuntimeException(e);
} catch (NoSuchMethodException e) {
@@ -96,7 +94,7 @@
protected static ConnectionWrapper getInstance(
MysqlPooledConnection mysqlPooledConnection,
- ConnectionImpl mysqlConnection, boolean forXa) throws SQLException {
+ Connection mysqlConnection, boolean forXa) throws SQLException {
if (!Util.isJdbc4()) {
return new ConnectionWrapper(mysqlPooledConnection,
mysqlConnection, forXa);
@@ -120,7 +118,7 @@
* if an error occurs.
*/
public ConnectionWrapper(MysqlPooledConnection mysqlPooledConnection,
- ConnectionImpl mysqlConnection, boolean forXa) throws SQLException {
+ Connection mysqlConnection, boolean forXa) throws SQLException {
this.mpc = mysqlPooledConnection;
this.mc = mysqlConnection;
this.closed = false;
@@ -876,7 +874,7 @@
return this.mc.isInGlobalTx();
}
- protected void setInGlobalTx(boolean flag) {
+ public void setInGlobalTx(boolean flag) {
this.mc.setInGlobalTx(flag);
}
Modified:
branches/branch_5_1/src/com/mysql/jdbc/jdbc2/optional/JDBC4ConnectionWrapper.java
===================================================================
---
branches/branch_5_1/src/com/mysql/jdbc/jdbc2/optional/JDBC4ConnectionWrapper.java 2008-02-29
19:31:29 UTC (rev 6755)
+++
branches/branch_5_1/src/com/mysql/jdbc/jdbc2/optional/JDBC4ConnectionWrapper.java 2008-03-03
21:27:51 UTC (rev 6756)
@@ -64,7 +64,7 @@
* if an error occurs.
*/
public JDBC4ConnectionWrapper(MysqlPooledConnection mysqlPooledConnection,
- ConnectionImpl mysqlConnection, boolean forXa)
+ com.mysql.jdbc.Connection mysqlConnection, boolean forXa)
throws SQLException {
super(mysqlPooledConnection, mysqlConnection, forXa);
}
Modified: branches/branch_5_1/src/com/mysql/jdbc/jdbc2/optional/MysqlPooledConnection.java
===================================================================
---
branches/branch_5_1/src/com/mysql/jdbc/jdbc2/optional/MysqlPooledConnection.java 2008-02-29
19:31:29 UTC (rev 6755)
+++
branches/branch_5_1/src/com/mysql/jdbc/jdbc2/optional/MysqlPooledConnection.java 2008-03-03
21:27:51 UTC (rev 6756)
@@ -177,7 +177,7 @@
}
this.logicalHandle = ConnectionWrapper.getInstance(this,
- (ConnectionImpl)this.physicalConn,
+ this.physicalConn,
forXa);
} catch (SQLException sqlException) {
callConnectionEventListeners(CONNECTION_ERROR_EVENT, sqlException);
Modified: branches/branch_5_1/src/testsuite/regression/ConnectionRegressionTest.java
===================================================================
--- branches/branch_5_1/src/testsuite/regression/ConnectionRegressionTest.java 2008-02-29
19:31:29 UTC (rev 6755)
+++ branches/branch_5_1/src/testsuite/regression/ConnectionRegressionTest.java 2008-03-03
21:27:51 UTC (rev 6756)
@@ -2377,7 +2377,20 @@
urlBuf.append("&");
}
- ds.setURL(urlBuf.toString());
- ds.getPooledConnection().close();
+ String url = urlBuf.toString();
+ url = "jdbc:mysql:replication:" + url.substring(url.indexOf("jdbc:mysql:") +
"jdbc:mysql:".length());
+ ds.setURL(url);
+ Connection replConn = ds.getPooledConnection().getConnection();
+
+ boolean readOnly = false;
+
+ for (int i = 0; i < 10; i++) {
+ this.rs = replConn.createStatement().executeQuery("SELECT 1");
+ assertTrue(this.rs.next());
+ this.rs = replConn.prepareStatement("SELECT 1").executeQuery();
+ assertTrue(this.rs.next());
+ readOnly = !readOnly;
+ replConn.setReadOnly(readOnly);
+ }
}
}
\ No newline at end of file
| Thread |
|---|
| • Connector/J commit: r6756 - in branches/branch_5_1/src: com/mysql/jdbc com/mysql/jdbc/jdbc2/optional testsuite/regression | mmatthews | 3 Mar 2008 |