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 dj...@apache.org on 2006/03/07 01:55:16 UTC
svn commit: r383732 - in
/db/derby/code/branches/10.1/java/testing/org/apache/derbyTesting/functionTests:
master/XATest.out tests/jdbcapi/XATest.java util/XATestUtil.java
Author: djd
Date: Mon Mar 6 16:55:15 2006
New Revision: 383732
URL: http://svn.apache.org/viewcvs?rev=383732&view=rev
Log:
DERBY-434 XATest changes to get closer to running it with client.
Merge of 379989 from trunk.
Modified:
db/derby/code/branches/10.1/java/testing/org/apache/derbyTesting/functionTests/master/XATest.out
db/derby/code/branches/10.1/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/XATest.java
db/derby/code/branches/10.1/java/testing/org/apache/derbyTesting/functionTests/util/XATestUtil.java
Modified: db/derby/code/branches/10.1/java/testing/org/apache/derbyTesting/functionTests/master/XATest.out
URL: http://svn.apache.org/viewcvs/db/derby/code/branches/10.1/java/testing/org/apache/derbyTesting/functionTests/master/XATest.out?rev=383732&r1=383731&r2=383732&view=diff
==============================================================================
--- db/derby/code/branches/10.1/java/testing/org/apache/derbyTesting/functionTests/master/XATest.out (original)
+++ db/derby/code/branches/10.1/java/testing/org/apache/derbyTesting/functionTests/master/XATest.out Mon Mar 6 16:55:15 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/branches/10.1/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/XATest.java
URL: http://svn.apache.org/viewcvs/db/derby/code/branches/10.1/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/XATest.java?rev=383732&r1=383731&r2=383732&view=diff
==============================================================================
--- db/derby/code/branches/10.1/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/XATest.java (original)
+++ db/derby/code/branches/10.1/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/XATest.java Mon Mar 6 16:55:15 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/branches/10.1/java/testing/org/apache/derbyTesting/functionTests/util/XATestUtil.java
URL: http://svn.apache.org/viewcvs/db/derby/code/branches/10.1/java/testing/org/apache/derbyTesting/functionTests/util/XATestUtil.java?rev=383732&r1=383731&r2=383732&view=diff
==============================================================================
--- db/derby/code/branches/10.1/java/testing/org/apache/derbyTesting/functionTests/util/XATestUtil.java (original)
+++ db/derby/code/branches/10.1/java/testing/org/apache/derbyTesting/functionTests/util/XATestUtil.java Mon Mar 6 16:55:15 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 new org.apache.derby.diag.TransactionTable() As transaction_table");
s.close();