You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by km...@apache.org on 2006/02/24 15:09:21 UTC

svn commit: r380672 - in /db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests: master/DerbyNetClient/checkDataSource.out tests/jdbcapi/checkDataSource.java

Author: kmarsden
Date: Fri Feb 24 06:09:11 2006
New Revision: 380672

URL: http://svn.apache.org/viewcvs?rev=380672&view=rev
Log:
DERBY-435 continuing work to get checkDataSource running with client
disabled test cases for DERBY-1025, DERBY-1044, and DERBY-1047
added workaround for DERBY-1036 to give statements different cursor names



Modified:
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/checkDataSource.out
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/checkDataSource.java

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/checkDataSource.out
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/checkDataSource.out?rev=380672&r1=380671&r2=380672&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/checkDataSource.out (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/checkDataSource.out Fri Feb 24 06:09:11 2006
@@ -325,10 +325,6 @@
   read only       false
 EVENT(6):connectionClosed
 Some more isolation testing using SQL and JDBC api
-initial local
-  isolation level REPEATABLE_READ
-  auto commit     true
-  read only       false
 Issue setTransactionIsolation in local transaction
 setTransactionIsolation in local
   isolation level READ_UNCOMMITTED
@@ -339,4 +335,135 @@
 WITH HOLDABILITY TRUE WHEREAS GLOBAL CONNECTION CAN ONLY WORK WITH STATEMENTS WITH HOLDABILITY FALSE
 LOCK TABLE
 END LOCK TABLE
+Statement State @ Create 
+  getResultSetType() SCROLL_INSENSITIVE
+  getResultSetConcurrency() READ_ONLY
+  getFetchDirection() REVERSE
+  getFetchSize() 444
+  getMaxFieldSize() 713
+  getMaxRows() 19
+Statement State @ PS Create 
+  getResultSetType() SCROLL_INSENSITIVE
+  getResultSetConcurrency() READ_ONLY
+  getFetchDirection() REVERSE
+  getFetchSize() 888
+  getMaxFieldSize() 317
+  getMaxRows() 91
+Statement State @ CS Create 
+  getResultSetType() SCROLL_INSENSITIVE
+  getResultSetConcurrency() READ_ONLY
+  getFetchDirection() REVERSE
+  getFetchSize() 999
+  getMaxFieldSize() 137
+  getMaxRows() 85
+Params-local-1: ru(params) contents {3}
+sru1-local-1: mismatched Statement connection
+sru1-local-1: ru(SN1) contents {1} {2} {3}
+Expecting exception because global transaction sru1-global-2 is trying to use a statement with holdability true
+sru1-global-2: mismatched Statement connection
+sru1-global-2: java.sql.SQLException: Cannot set holdability ResultSet.HOLD_CURSORS_OVER_COMMIT for a global transaction.
+sru2-global-3: mismatched Statement connection
+sru2-global-3: ru(OAK2) contents {1} {2} {3}
+Expecting exception because global transaction sru1-global-4 is trying to use a statement with holdability true
+sru1-global-4: mismatched Statement connection
+sru1-global-4: java.sql.SQLException: Cannot set holdability ResultSet.HOLD_CURSORS_OVER_COMMIT for a global transaction.
+Statement State @ GLOBAL 
+  getResultSetType() SCROLL_INSENSITIVE
+  getResultSetConcurrency() READ_ONLY
+  getFetchDirection() REVERSE
+  getFetchSize() 444
+  getMaxFieldSize() 713
+  getMaxRows() 19
+Statement State @ PS GLOBAL 
+  getResultSetType() SCROLL_INSENSITIVE
+  getResultSetConcurrency() READ_ONLY
+  getFetchDirection() REVERSE
+  getFetchSize() 888
+  getMaxFieldSize() 317
+  getMaxRows() 91
+Statement State @ CS GLOBAL 
+  getResultSetType() SCROLL_INSENSITIVE
+  getResultSetConcurrency() READ_ONLY
+  getFetchDirection() REVERSE
+  getFetchSize() 999
+  getMaxFieldSize() 137
+  getMaxRows() 85
+PASS: got exception because holdability is true on prepared statement and that is not allowed in global transactions
+Cannot set holdability ResultSet.HOLD_CURSORS_OVER_COMMIT for a global transaction.
+sru1-local-5: mismatched Statement connection
+sru1-local-5: ru(SQL_CURLH000C4) contents {1} {2} {3}
+sru2-local-6: mismatched Statement connection
+sru2-local-6: ru(SQL_CURLN000C8) contents {1} {2} {3}
+sru3-local-7: mismatched Statement connection
+sru3-local-7: ru(SF3) contents {1} {2} {3}
+Statement State @ LOCAL 
+  getResultSetType() SCROLL_INSENSITIVE
+  getResultSetConcurrency() READ_ONLY
+  getFetchDirection() REVERSE
+  getFetchSize() 444
+  getMaxFieldSize() 713
+  getMaxRows() 19
+Statement State @ PS LOCAL 
+  getResultSetType() SCROLL_INSENSITIVE
+  getResultSetConcurrency() READ_ONLY
+  getFetchDirection() REVERSE
+  getFetchSize() 888
+  getMaxFieldSize() 317
+  getMaxRows() 91
+Statement State @ CS LOCAL 
+  getResultSetType() SCROLL_INSENSITIVE
+  getResultSetConcurrency() READ_ONLY
+  getFetchDirection() REVERSE
+  getFetchSize() 999
+  getMaxFieldSize() 137
+  getMaxRows() 85
+LOCK TABLE
+  xid row 0 lock count 4
+  xid row 1 lock count 12
+END LOCK TABLE
+sru1-local-8: mismatched Statement connection
+sru1-local-8: ru(SQL_CURLH000C9) contents {1} {2} {3}
+sru2-local-9: mismatched Statement connection
+sru2-local-9: ru(SQL_CURLN000C1) contents {1} {2} {3}
+sru3-local-10: mismatched Statement connection
+sru3-local-10: ru(SQL_CURLH000C4) contents {1} {2} {3}
+Statement State @ LOCAL 2 
+  getResultSetType() SCROLL_INSENSITIVE
+  getResultSetConcurrency() READ_ONLY
+  getFetchDirection() REVERSE
+  getFetchSize() 444
+  getMaxFieldSize() 713
+  getMaxRows() 19
+Statement State @ PS LOCAL 2 
+  getResultSetType() SCROLL_INSENSITIVE
+  getResultSetConcurrency() READ_ONLY
+  getFetchDirection() REVERSE
+  getFetchSize() 888
+  getMaxFieldSize() 317
+  getMaxRows() 91
+Statement State @ CS LOCAL 2
+  getResultSetType() SCROLL_INSENSITIVE
+  getResultSetConcurrency() READ_ONLY
+  getFetchDirection() REVERSE
+  getFetchSize() 999
+  getMaxFieldSize() 137
+  getMaxRows() 85
+LOCK TABLE
+  xid row 0 lock count 4
+  xid row 1 lock count 12
+END LOCK TABLE
+sruBatch update counts : 1  1  2  1 :
+sruBatch: mismatched Statement connection
+sruBatch: ru(SQL_CURLH000C10) contents {1} {2} {3} {4} {5} {6} {7} {8}
+XAConnection.getConnection : getConnection() is not valid on a closed PooledConnection.
+XAResource.start : XAException - XAER_RMFAIL : Connection is Closed.
+XAResource.end : XAException - XAER_RMFAIL : Connection is Closed.
+XAResource.commit : XAException - XAER_RMFAIL : Connection is Closed.
+XAResource.prepare : XAException - XAER_RMFAIL : Connection is Closed.
+XAResource.recover : XAException - XAER_RMFAIL : Connection is Closed.
+XAResource.prepare : XAException - XAER_RMFAIL : Connection is Closed.
+XAResource.isSameRM : XAException - XAER_RMFAIL : Connection is Closed.
+Patricio update count 1
+testing jira 95 for DataSource; ok - expected exception: XCY00
+testing jira 95 for XADataSource; ok - expected exception: XCY00
 Completed checkDataSource

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/checkDataSource.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/checkDataSource.java?rev=380672&r1=380671&r2=380672&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/checkDataSource.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/checkDataSource.java Fri Feb 24 06:09:11 2006
@@ -68,27 +68,46 @@
 	// Client connection toString values are not correlated at this time and just 
 	// use default toString
 	// These tests are exempted from other frameworks
-	private static boolean testConnectionToString = TestUtil.isEmbeddedFramework();
+	private boolean testConnectionToString = TestUtil.isEmbeddedFramework();
 	
 	// Only embedded supports SimpleDataSource (JSR169).  
 	// These tests are exempted from other frameworks
-	private static boolean testSimpleDataSource = TestUtil.isEmbeddedFramework();
+	private boolean testSimpleDataSource = TestUtil.isEmbeddedFramework();
 
 	// for a PooledConnection.getConnection() the connection gets closed.
 	// Embedded automatically rolls back any activity on the connection.
 	// Client requires the user to rollback and gives an SQLException  
 	// java.sql.Connection.close() requested while a transaction is in progress
 	// This has been filed as DERBY-1004 
-	private static boolean needRollbackBeforePCGetConnection = 
+	private  boolean needRollbackBeforePCGetConnection = 
 		TestUtil.isDerbyNetClientFramework(); 
 	
 	// DERBY-1035 With client, Connection.getTransactionIsolation() return value is 
 	// wrong after changing the isolation level with an SQL statement such as 
 	// "set current isolation = RS"
 	// Tests for setting isolation level this way only run in embedded for now.
-	private static boolean canSetIsolationWithStatement = TestUtil.isEmbeddedFramework();
+	private boolean canSetIsolationWithStatement = TestUtil.isEmbeddedFramework();
 	  
-    /**
+	// DERBY-1044 [xa] client XAConnection.getConnection() does not have the 
+	// correct default isolation level if set by an earlier connection 
+	// obtained from the same XAConnection
+	// Only print out initial isolation for embedded in this case
+	private boolean isolationResetOnSecondGetConnection = 
+			TestUtil.isEmbeddedFramework();
+	
+	// DERBY-1047  wiht client xa a PreparedStatement created before the global 
+	//transaction starts gives java.sql.SQLException: 'Statement' already closed.' 
+	// when used after  the global transaction ends
+	private static boolean canUseStatementAfterXa_end = TestUtil.isEmbeddedFramework();
+	
+	// DERBY-1025 client  XAResource.start() does not commit an active local transaction 
+	// when auto commit is true. Embedded XAResource.start() implementation commits 
+	// the active local transaction on the Connection associated with the XAResource.
+	// Client incorrectly throws an error.
+	// run only for embedded for now.
+	private static boolean autocommitCommitsOnXa_Start =TestUtil.isEmbeddedFramework();
+	
+	/**
      * A hashtable of opened connections.  This is used when checking to
      * make sure connection strings are unique; we need to make sure all
      * the connections are closed when we are done, so they are stored
@@ -428,7 +447,8 @@
 		System.out.println("Some more isolation testing using SQL and JDBC api");
 		cs1 = xac.getConnection();
 		s = cs1.createStatement();
-		printState("initial local", cs1);
+		if (isolationResetOnSecondGetConnection)
+			printState("initial local", cs1);
 
     System.out.println("Issue setTransactionIsolation in local transaction");
 		cs1.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);
@@ -449,10 +469,6 @@
 		cs1.setAutoCommit(false);
 
 		checkLocks(cs1);
-		// For client the test only runs this far 
-		// More DERBY-435 checkins will take it further.
-		if (TestUtil.isDerbyNetClientFramework())
-				return;
 		
 		Statement sru1 = cs1.createStatement();
 		sru1.setCursorName("SN1");
@@ -503,7 +519,10 @@
 		showStatementState("LOCAL ", sruState);
 		showStatementState("PS LOCAL ", psruState);
 		showStatementState("CS LOCAL ", csruState);
-		resultSetQuery("Params-local-2", psParams.executeQuery());
+		if (canUseStatementAfterXa_end)
+		{
+			resultSetQuery("Params-local-2", psParams.executeQuery());
+		}
 		checkLocks(cs1);
 		cs1.commit();
 
@@ -617,48 +636,50 @@
 		conn3.close();
 		xac3.close();
 
-		// test that an xastart in auto commit mode commits the existing work.(beetle 5178)
-		XAConnection xac4 = dsx.getXAConnection();
-		Xid xid4a = new cdsXid(4, (byte) 23, (byte) 76);
-		Connection conn4 = xac4.getConnection();
-		System.out.println("conn4 autcommit " + conn4.getAutoCommit());
-
-		Statement s4 = conn4.createStatement();
-		s4.executeUpdate("create table autocommitxastart(i int)");
-		s4.executeUpdate("insert into autocommitxastart values 1,2,3,4,5");
-
-		ResultSet rs4 = s4.executeQuery("select i from autocommitxastart");
-		rs4.next(); System.out.println("acxs " + rs4.getInt(1));
-		rs4.next(); System.out.println("acxs " + rs4.getInt(1));
-
-		xac4.getXAResource().start(xid4a, XAResource.TMNOFLAGS);
-		xac4.getXAResource().end(xid4a, XAResource.TMSUCCESS);
-
-		try {
-			rs4.next(); System.out.println("acxs " + rs.getInt(1));
-		} catch (SQLException sqle) {
-			System.out.println("autocommitxastart expected " + sqle.getMessage());
-		}
-
-		conn4.setAutoCommit(false);
-
-		rs4 = s4.executeQuery("select i from autocommitxastart");
-		rs4.next(); System.out.println("acxs " + rs4.getInt(1));
-		rs4.next(); System.out.println("acxs " + rs4.getInt(1));
+		if (autocommitCommitsOnXa_Start)
+		{
+			// test that an xastart in auto commit mode commits the existing work.(beetle 5178)
+			XAConnection xac4 = dsx.getXAConnection();
+			Xid xid4a = new cdsXid(4, (byte) 23, (byte) 76);
+			Connection conn4 = xac4.getConnection();
+			System.out.println("conn4 autcommit " + conn4.getAutoCommit());
+
+			Statement s4 = conn4.createStatement();
+			s4.executeUpdate("create table autocommitxastart(i int)");
+			s4.executeUpdate("insert into autocommitxastart values 1,2,3,4,5");
+
+			ResultSet rs4 = s4.executeQuery("select i from autocommitxastart");
+			rs4.next(); System.out.println("acxs " + rs4.getInt(1));
+			rs4.next(); System.out.println("acxs " + rs4.getInt(1));
 
-		try {
 			xac4.getXAResource().start(xid4a, XAResource.TMNOFLAGS);
-		} catch (XAException xae) {
-			showXAException("autocommitxastart expected ", xae);
-		}
-		rs4.next(); System.out.println("acxs " + rs4.getInt(1));
-		rs4.close();
+			xac4.getXAResource().end(xid4a, XAResource.TMSUCCESS);
 
-		conn4.rollback();
-		conn4.close();
-		xac4.close();
+			try {
+				rs4.next(); System.out.println("acxs " + rs.getInt(1));
+			} catch (SQLException sqle) {
+				System.out.println("autocommitxastart expected " + sqle.getMessage());
+			}
+
+			conn4.setAutoCommit(false);
+
+			rs4 = s4.executeQuery("select i from autocommitxastart");
+			rs4.next(); System.out.println("acxs " + rs4.getInt(1));
+			rs4.next(); System.out.println("acxs " + rs4.getInt(1));
+
+			try {
+				xac4.getXAResource().start(xid4a, XAResource.TMNOFLAGS);
+			} catch (XAException xae) {
+				showXAException("autocommitxastart expected ", xae);
+			}
+			rs4.next(); System.out.println("acxs " + rs4.getInt(1));
+			rs4.close();
+
+			conn4.rollback();
+			conn4.close();
+			xac4.close();
 		
-
+		}
 
 		// test jira-derby 95 - a NullPointerException was returned when passing
 		// an incorrect database name (a url in this case) - should now give error XCY00
@@ -687,7 +708,10 @@
 		} catch (Exception e) {
 				System.out.println("; wrong, unexpected exception: " + e.toString());
 		}
-
+		// Continuing work for DERBY-435 to get checkDataSource working with client 
+		// return here for now.
+		if (TestUtil.isDerbyNetClientFramework())
+			return;
 		testDSRequestAuthentication();
 	}
 
@@ -737,7 +761,6 @@
 			xar.start(xid2, XAResource.TMJOIN);
 			printState("2nd global(existing)", conn);
 			xar.end(xid2, XAResource.TMSUCCESS);
-
 			xar.rollback(xid2);
 			printState("(After 2nd global rollback) local", conn);
 
@@ -780,7 +803,10 @@
 	}
 	protected PreparedStatement createFloatStatementForStateChecking(Connection conn, String sql) throws SQLException {
 		PreparedStatement s = internalCreateFloatStatementForStateChecking(conn, sql);
-		s.setCursorName("StokeNewington");
+		// Need to make a different cursor name here because of DERBY-1036
+		// client won't allow duplicate name.
+		//s.setCursorName("StokeNewington");
+		s.setCursorName("LondonNW17");
 		s.setFetchDirection(ResultSet.FETCH_REVERSE);
 		s.setFetchSize(888);
 		s.setMaxFieldSize(317);
@@ -791,7 +817,9 @@
 	}
 	protected CallableStatement createFloatCallForStateChecking(Connection conn, String sql) throws SQLException {
 		CallableStatement s = internalCreateFloatCallForStateChecking(conn, sql);
-		s.setCursorName("StokeNewington");
+		//DERBY-1036 - need a new name
+		//s.setCursorName("StokeNewington");
+		s.setCursorName("districtInLondon");
 		s.setFetchDirection(ResultSet.FETCH_REVERSE);
 		s.setFetchSize(999);
 		s.setMaxFieldSize(137);