Return-Path: Delivered-To: apmail-db-derby-commits-archive@www.apache.org Received: (qmail 99081 invoked from network); 22 Feb 2006 23:49:07 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 22 Feb 2006 23:49:07 -0000 Received: (qmail 13948 invoked by uid 500); 22 Feb 2006 23:49:07 -0000 Delivered-To: apmail-db-derby-commits-archive@db.apache.org Received: (qmail 13913 invoked by uid 500); 22 Feb 2006 23:49:07 -0000 Mailing-List: contact derby-commits-help@db.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: "Derby Development" List-Id: Delivered-To: mailing list derby-commits@db.apache.org Received: (qmail 13902 invoked by uid 99); 22 Feb 2006 23:49:07 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 22 Feb 2006 15:49:07 -0800 X-ASF-Spam-Status: No, hits=-9.4 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME,UPPERCASE_25_50 X-Spam-Check-By: apache.org Received: from [209.237.227.194] (HELO minotaur.apache.org) (209.237.227.194) by apache.org (qpsmtpd/0.29) with SMTP; Wed, 22 Feb 2006 15:49:06 -0800 Received: (qmail 98911 invoked by uid 65534); 22 Feb 2006 23:48:45 -0000 Message-ID: <20060222234845.98910.qmail@minotaur.apache.org> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r379989 - in /db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests: master/XATest.out tests/jdbcapi/XATest.java util/XATestUtil.java Date: Wed, 22 Feb 2006 23:48:44 -0000 To: derby-commits@db.apache.org From: djd@apache.org X-Mailer: svnmailer-1.0.7 X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Author: djd Date: Wed Feb 22 15:48:42 2006 New Revision: 379989 URL: http://svn.apache.org/viewcvs?rev=379989&view=rev Log: DEBRY-434 XATest changes to get closer to running it with client. Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/XATest.out db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/XATest.java db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/XATestUtil.java Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/XATest.out URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/XATest.out?rev=379989&r1=379988&r2=379989&view=diff ============================================================================== --- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/XATest.out (original) +++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/XATest.out Wed Feb 22 15:48:42 2006 @@ -1,29 +1,32 @@ +initial Connection holdable HOLD_CURSORS_OVER_COMMIT 1 singleConnectionOnePhaseCommit +XA Connection holdable CLOSE_CURSORS_AT_COMMIT 2 +XA Statement holdable CLOSE_CURSORS_AT_COMMIT 2 A ----------- 0 -GXID|STATUS |READ&|USERNAME |TYPE -------------------------------------------------------------- -(0 |ACTIVE |false|APP |UserTransaction +GXID|STATUS |READONLY|USERNAME |TYPE +---------------------------------------------------------------- +(0 |ACTIVE |false |APP |UserTransaction interleavingTransactions -GXID|STATUS |READ&|USERNAME |TYPE -------------------------------------------------------------- -(1 |ACTIVE |false|SKU |UserTransaction -(2 |ACTIVE |false|SKU |UserTransaction -GXID|STATUS |READ&|USERNAME |TYPE -------------------------------------------------------------- -(1 |ACTIVE |false|SKU |UserTransaction -(2 |ACTIVE |false|SKU |UserTransaction -GXID|STATUS |READ&|USERNAME |TYPE -------------------------------------------------------------- -(1 |PREPARED|false|SKU |UserTransaction -(2 |PREPARED|false|SKU |UserTransaction +GXID|STATUS |READONLY|USERNAME |TYPE +---------------------------------------------------------------- +(1 |ACTIVE |false |SKU |UserTransaction +(2 |ACTIVE |false |SKU |UserTransaction +GXID|STATUS |READONLY|USERNAME |TYPE +---------------------------------------------------------------- +(1 |ACTIVE |false |SKU |UserTransaction +(2 |ACTIVE |false |SKU |UserTransaction +GXID|STATUS |READONLY|USERNAME |TYPE +---------------------------------------------------------------- +(1 |PREPARED|false |SKU |UserTransaction +(2 |PREPARED|false |SKU |UserTransaction recovered start 2 recovered 0 recovered end 0 -GXID|STATUS |READ&|USERNAME |TYPE -------------------------------------------------------------- -(3 |IDLE |NULL |SKU |UserTransaction +GXID|STATUS |READONLY|USERNAME |TYPE +---------------------------------------------------------------- +(3 |IDLE |NULL |SKU |UserTransaction A ----------- 0 @@ -31,13 +34,13 @@ 3 noTransaction morph -GXID|STATUS |READ&|USERNAME |TYPE -------------------------------------------------------------- -GXID|STATUS |READ&|USERNAME |TYPE -------------------------------------------------------------- -GXID|STATUS |READ&|USERNAME |TYPE -------------------------------------------------------------- -(1 |IDLE |NULL |APP |UserTransaction +GXID|STATUS |READONLY|USERNAME |TYPE +---------------------------------------------------------------- +GXID|STATUS |READONLY|USERNAME |TYPE +---------------------------------------------------------------- +GXID|STATUS |READONLY|USERNAME |TYPE +---------------------------------------------------------------- +(1 |IDLE |NULL |APP |UserTransaction EXPECTED SQLSTATE(XJ05C): Cannot set holdability ResultSet.HOLD_CURSORS_OVER_COMMIT for a global transaction. Statement created in global has holdabilty: false A @@ -45,12 +48,12 @@ 2001 2002 2003 -GXID|STATUS |READ&|USERNAME |TYPE -------------------------------------------------------------- -(1 |PREPARED|false|APP |UserTransaction -(1 |IDLE |NULL |APP |UserTransaction -GXID|STATUS |READ&|USERNAME |TYPE -------------------------------------------------------------- +GXID|STATUS |READONLY|USERNAME |TYPE +---------------------------------------------------------------- +(1 |PREPARED|false |APP |UserTransaction +(1 |IDLE |NULL |APP |UserTransaction +GXID|STATUS |READONLY|USERNAME |TYPE +---------------------------------------------------------------- A ----------- 2001 @@ -78,59 +81,99 @@ 2005 2007 derby966 -Local connection holdable true -Local(held) default Statement holdable true -held true +Local Connection holdable HOLD_CURSORS_OVER_COMMIT 1 +Local(held) default Statement holdable HOLD_CURSORS_OVER_COMMIT 1 +ResultSet HOLD_CURSORS_OVER_COMMIT 1 BC A=0 AC A=1 -Local(held) default PreparedStatement holdable true -held true + AC A=3 + AC A=2001 + AC A=2002 + AC A=2003 + AC A=2005 + AC A=2007 +Local(held) default PreparedStatement holdable HOLD_CURSORS_OVER_COMMIT 1 +ResultSet HOLD_CURSORS_OVER_COMMIT 1 BC A=0 AC A=1 -Local(held) held Statement holdable true -held true + AC A=3 + AC A=2001 + AC A=2002 + AC A=2003 + AC A=2005 + AC A=2007 +Local(held) held Statement holdable HOLD_CURSORS_OVER_COMMIT 1 +ResultSet HOLD_CURSORS_OVER_COMMIT 1 BC A=0 AC A=1 -Local(held) held PreparedStatement holdable true -held true + AC A=3 + AC A=2001 + AC A=2002 + AC A=2003 + AC A=2005 + AC A=2007 +Local(held) held PreparedStatement holdable HOLD_CURSORS_OVER_COMMIT 1 +ResultSet HOLD_CURSORS_OVER_COMMIT 1 BC A=0 AC A=1 -Local(held) close Statement holdable false -held false + AC A=3 + AC A=2001 + AC A=2002 + AC A=2003 + AC A=2005 + AC A=2007 +Local(held) close Statement holdable CLOSE_CURSORS_AT_COMMIT 2 +ResultSet CLOSE_CURSORS_AT_COMMIT 2 BC A=0 EXPECTED SQLSTATE(XCL16): ResultSet not open. Operation 'next' not permitted. Verify that autocommit is OFF. -Local(held) close PreparedStatement holdable false -held false +Local(held) close PreparedStatement holdable CLOSE_CURSORS_AT_COMMIT 2 +ResultSet CLOSE_CURSORS_AT_COMMIT 2 BC A=0 EXPECTED SQLSTATE(XCL16): ResultSet not open. Operation 'next' not permitted. Verify that autocommit is OFF. -Local(close) default Statement holdable false -held false +Local(close) default Statement holdable CLOSE_CURSORS_AT_COMMIT 2 +ResultSet CLOSE_CURSORS_AT_COMMIT 2 BC A=0 EXPECTED SQLSTATE(XCL16): ResultSet not open. Operation 'next' not permitted. Verify that autocommit is OFF. -Local(close) default PreparedStatement holdable false -held false +Local(close) default PreparedStatement holdable CLOSE_CURSORS_AT_COMMIT 2 +ResultSet CLOSE_CURSORS_AT_COMMIT 2 BC A=0 EXPECTED SQLSTATE(XCL16): ResultSet not open. Operation 'next' not permitted. Verify that autocommit is OFF. -Local(close) held Statement holdable true -held true +Local(close) held Statement holdable HOLD_CURSORS_OVER_COMMIT 1 +ResultSet HOLD_CURSORS_OVER_COMMIT 1 BC A=0 AC A=1 -Local(close) held PreparedStatement holdable true -held true + AC A=3 + AC A=2001 + AC A=2002 + AC A=2003 + AC A=2005 + AC A=2007 +Local(close) held PreparedStatement holdable HOLD_CURSORS_OVER_COMMIT 1 +ResultSet HOLD_CURSORS_OVER_COMMIT 1 BC A=0 AC A=1 -Local(close) close Statement holdable false -held false + AC A=3 + AC A=2001 + AC A=2002 + AC A=2003 + AC A=2005 + AC A=2007 +Local(close) close Statement holdable CLOSE_CURSORS_AT_COMMIT 2 +ResultSet CLOSE_CURSORS_AT_COMMIT 2 BC A=0 EXPECTED SQLSTATE(XCL16): ResultSet not open. Operation 'next' not permitted. Verify that autocommit is OFF. -Local(close) close PreparedStatement holdable false -held false +Local(close) close PreparedStatement holdable CLOSE_CURSORS_AT_COMMIT 2 +ResultSet CLOSE_CURSORS_AT_COMMIT 2 BC A=0 EXPECTED SQLSTATE(XCL16): ResultSet not open. Operation 'next' not permitted. Verify that autocommit is OFF. +BGBC 0 +BGAC 1 +START GLOBAL TRANSACTION EXPECTED SQLSTATE(XJ05C): Cannot set holdability ResultSet.HOLD_CURSORS_OVER_COMMIT for a global transaction. EXPECTED SQLSTATE(XJ05C): Cannot set holdability ResultSet.HOLD_CURSORS_OVER_COMMIT for a global transaction. EXPECTED SQLSTATE(XJ05C): Cannot set holdability ResultSet.HOLD_CURSORS_OVER_COMMIT for a global transaction. EXPECTED SQLSTATE(XJ05C): Cannot set holdability ResultSet.HOLD_CURSORS_OVER_COMMIT for a global transaction. EXPECTED SQLSTATE(XJ05C): Cannot set holdability ResultSet.HOLD_CURSORS_OVER_COMMIT for a global transaction. EXPECTED SQLSTATE(XJ05C): Cannot set holdability ResultSet.HOLD_CURSORS_OVER_COMMIT for a global transaction. +derby966 complete XATest complete Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/XATest.java URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/XATest.java?rev=379989&r1=379988&r2=379989&view=diff ============================================================================== --- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/XATest.java (original) +++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/XATest.java Wed Feb 22 15:48:42 2006 @@ -50,7 +50,9 @@ public static void main(String[] args) throws Exception { ij.getPropertyArg(args); Connection dmc = ij.startJBMS(); - + + showHoldStatus("initial ", dmc); + XATestUtil.createXATransactionView(dmc); dmc.close(); @@ -149,8 +151,11 @@ xar.start(xid, XAResource.TMNOFLAGS); Connection conn = xac.getConnection(); + + showHoldStatus("XA ", conn); Statement s = conn.createStatement(); + showHoldStatus("XA ", s); s.execute("create table foo (a int)"); s.executeUpdate("insert into foo values (0)"); @@ -172,6 +177,7 @@ } catch (SQLException sqle) { TestUtil.dumpSQLExceptions(sqle); + sqle.printStackTrace(System.out); } catch (XAException e) { XATestUtil.dumpXAException("singleConnectionOnePhaseCommit", e); } @@ -701,7 +707,10 @@ try { xar.start(xid3, XAResource.TMNOFLAGS); } catch (XAException xae) { - if (xae.errorCode != XAException.XAER_OUTSIDE) + if ((xae.errorCode != XAException.XAER_OUTSIDE) + && + // DERBY-1024 + (xae.errorCode != XAException.XAER_RMFAIL)) throw xae; } conn.commit(); @@ -780,10 +789,7 @@ // Obtain Statements and PreparedStatements // with all the holdability options. - boolean hold = - conn.getHoldability() == ResultSet.HOLD_CURSORS_OVER_COMMIT; - - System.out.println("Local connection holdable " + hold); + showHoldStatus("Local ", conn); Statement sdh = conn.createStatement(); showHoldStatus("Local(held) default ", sdh); @@ -859,9 +865,18 @@ conn.setHoldability(ResultSet.HOLD_CURSORS_OVER_COMMIT); ResultSet rs = sdh.executeQuery("SELECT * FROM APP.FOO"); + rs.next(); System.out.println("BGBC " + rs.getInt(1)); conn.commit(); - rs.next(); + rs.next(); System.out.println("BGAC " + rs.getInt(1)); + + // This switch to global is ok because conn + // is in auto-commit mode, thus the start performs + // an implicit commit to complete the local transaction. + // DERBY-1025 Client only bug + if (TestUtil.isDerbyNetClientFramework()) + conn.commit(); + System.out.println("START GLOBAL TRANSACTION"); // start a global xact and test those statements. xar.start(xid, XAResource.TMNOFLAGS); @@ -918,6 +933,12 @@ } pscc.executeQuery().close(); + xar.end(xid, XAResource.TMSUCCESS); + if (xar.prepare(xid) != XAResource.XA_RDONLY) + System.out.println("FAIL prepare didn't indicate r/o"); + + System.out.println("derby966 complete"); + } catch (SQLException e) { TestUtil.dumpSQLExceptions(e); e.printStackTrace(System.out); @@ -947,23 +968,23 @@ boolean held = s.getResultSetHoldability() == ResultSet.HOLD_CURSORS_OVER_COMMIT; - - - System.out.println("held " + held); + System.out.println("ResultSet " + holdStatus(s.getResultSetHoldability())); rs.next(); System.out.println(" BC A=" + rs.getInt(1)); conn.commit(); try { - rs.next(); - rs.getInt(1); - System.out.println(" AC A=" + rs.getInt(1)); + while (rs.next()) + { + rs.getInt(1); + System.out.println(" AC A=" + rs.getInt(1)); + } if (!held) System.out.println("FAIL: non-held cursor not closed by commit"); } catch (SQLException sqle) { - TestUtil.dumpSQLExceptions(sqle, !held); + TestUtil.dumpSQLExceptions(sqle, !held); } rs.close(); @@ -975,9 +996,35 @@ */ private static void showHoldStatus(String tag, Statement s) throws SQLException { - boolean hold = - s.getResultSetHoldability() == ResultSet.HOLD_CURSORS_OVER_COMMIT; + System.out.println(tag + "Statement holdable " + + holdStatus(s.getResultSetHoldability())); + } + /** + * Show the held status of the Connection. + */ + private static void showHoldStatus(String tag, Connection conn) throws SQLException + { + System.out.println(tag + "Connection holdable " + + holdStatus(conn.getHoldability())); + } + + private static String holdStatus(int holdability) + { + String s; + switch (holdability) + { + case ResultSet.CLOSE_CURSORS_AT_COMMIT: + s = "CLOSE_CURSORS_AT_COMMIT "; + break; + case ResultSet.HOLD_CURSORS_OVER_COMMIT: + s = "HOLD_CURSORS_OVER_COMMIT "; + break; + default: + s = "UNKNOWN HOLDABILITY "; + break; + } - System.out.println(tag + "Statement holdable " + hold); + return s + Integer.toString(holdability); } + } Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/XATestUtil.java URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/XATestUtil.java?rev=379989&r1=379988&r2=379989&view=diff ============================================================================== --- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/XATestUtil.java (original) +++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/XATestUtil.java Wed Feb 22 15:48:42 2006 @@ -63,7 +63,7 @@ "create view XATESTUTIL.global_xactTable as " + "select cast(global_xid as char(2)) as gxid," + " status, " + - " case when first_instant is NULL then 'NULL' else 'false' end as readOnly, " + + " CAST (case when first_instant is NULL then 'NULL' else 'false' end AS VARCHAR(8)) as readOnly, " + " cast (username as char(10)) as username, type " + " from syscs_diag.transaction_table"); s.close();