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/01/18 22:55:49 UTC

svn commit: r370275 - in /db/derby/code/trunk/java: client/org/apache/derby/client/am/ testing/org/apache/derbyTesting/functionTests/master/ testing/org/apache/derbyTesting/functionTests/suites/ testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/

Author: kmarsden
Date: Wed Jan 18 13:55:36 2006
New Revision: 370275

URL: http://svn.apache.org/viewcvs?rev=370275&view=rev
Log:
DERBY-210 reverting change until jdk1.5 lang/updatableResultset.java diff can be resolved


Removed:
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/derbyStress.out
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/derbyStress.java
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/derbyStress_app.properties
Modified:
    db/derby/code/trunk/java/client/org/apache/derby/client/am/Connection.java
    db/derby/code/trunk/java/client/org/apache/derby/client/am/Lob.java
    db/derby/code/trunk/java/client/org/apache/derby/client/am/PreparedStatement.java
    db/derby/code/trunk/java/client/org/apache/derby/client/am/ResultSet.java
    db/derby/code/trunk/java/client/org/apache/derby/client/am/Statement.java
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/DerbyNet.exclude
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/jdbcapi.runall

Modified: db/derby/code/trunk/java/client/org/apache/derby/client/am/Connection.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/client/org/apache/derby/client/am/Connection.java?rev=370275&r1=370274&r2=370275&view=diff
==============================================================================
--- db/derby/code/trunk/java/client/org/apache/derby/client/am/Connection.java (original)
+++ db/derby/code/trunk/java/client/org/apache/derby/client/am/Connection.java Wed Jan 18 13:55:36 2006
@@ -30,21 +30,20 @@
     public Agent agent_;
 
     public DatabaseMetaData databaseMetaData_;
-    
-    // WeakHashMap is used to store references so that the objects added to 
-    // the map can get garbage-collected without waiting for the Connection object.
-    
-    // When Connection.close() is called, this list is traversed and markClosed() 
-    // is called on all statements in this list.    
-    final java.util.WeakHashMap openStatements_ = new java.util.WeakHashMap();
+    // Since DERBY prepared statements must be re-prepared after a commit,
+    // then we must traverse this list after a commit and notify statements
+    // that they are now in an un-prepared state.
+    final java.util.LinkedList openStatements_ = new java.util.LinkedList();
 
-    // Some statuses of DERBY objects may be invalid on server after both 
-    // commit and rollback. For example,
+    // Some statuses of DERBY objects may be invalid on server either after only rollback
+    // or after both commit and rollback. For example,
     // (1) prepared statements need to be re-prepared
     //     after both commit and rollback
     // (2) result set will be unpositioned on server after both commit and rollback.
+    // If they only depend on rollback, they need to get on RollbackOnlyListeners_.
     // If they depend on both commit and rollback, they need to get on CommitAndRollbackListeners_.
-    final java.util.WeakHashMap CommitAndRollbackListeners_ = new java.util.WeakHashMap();
+    final java.util.LinkedList RollbackOnlyListeners_ = new java.util.LinkedList();
+    final java.util.LinkedList CommitAndRollbackListeners_ = new java.util.LinkedList();
     private SqlWarning warnings_ = null;
 
     // ------------------------properties set for life of connection--------------
@@ -395,7 +394,7 @@
         PreparedStatement ps = newPreparedStatement_(sql, java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY, resultSetHoldability_, java.sql.Statement.NO_GENERATED_KEYS, null);
         ps.isCatalogQuery_ = true;
         ps.prepare();
-        openStatements_.put(ps,null);
+        openStatements_.add(ps);
         return ps;
     }
 
@@ -738,6 +737,7 @@
         inUnitOfWork_ = false;
         markStatementsClosed();
         CommitAndRollbackListeners_.clear();
+        RollbackOnlyListeners_.clear();
         markClosed_();
     }
 
@@ -748,8 +748,7 @@
     }
 
     private void markStatementsClosed() {
-    	java.util.Set keySet = openStatements_.keySet();
-        for (java.util.Iterator i = keySet.iterator(); i.hasNext();) {
+        for (java.util.ListIterator i = openStatements_.listIterator(); i.hasNext();) {
             Statement stmt = (Statement) i.next();
             stmt.markClosed();
             i.remove();
@@ -757,15 +756,13 @@
     }
 
     private void writeCloseStatements() throws SqlException {
-    	java.util.Set keySet = openStatements_.keySet();
-        for (java.util.Iterator i = keySet.iterator(); i.hasNext();) {
+        for (java.util.ListIterator i = openStatements_.listIterator(); i.hasNext();) {
             ((Statement) i.next()).writeClose(false);  // false means don't permit auto-commits
         }
     }
 
     private void readCloseStatements() throws SqlException {
-    	java.util.Set keySet = openStatements_.keySet();
-        for (java.util.Iterator i = keySet.iterator(); i.hasNext();) {
+        for (java.util.ListIterator i = openStatements_.listIterator(); i.hasNext();) {
             ((Statement) i.next()).readClose(false);  // false means don't permit auto-commits
         }
     }
@@ -1223,7 +1220,7 @@
         resultSetConcurrency = downgradeResultSetConcurrency(resultSetConcurrency, resultSetType);
         Statement s = newStatement_(resultSetType, resultSetConcurrency, resultSetHoldability);
         s.cursorAttributesToSendOnPrepare_ = s.cacheCursorAttributesToSendOnPrepare();
-        openStatements_.put(s,null);
+        openStatements_.add(s);
         return s;
     }
 
@@ -1269,7 +1266,7 @@
         PreparedStatement ps = newPreparedStatement_(sql, resultSetType, resultSetConcurrency, resultSetHoldability, autoGeneratedKeys, columnNames);
         ps.cursorAttributesToSendOnPrepare_ = ps.cacheCursorAttributesToSendOnPrepare();
         ps.prepare();
-        openStatements_.put(ps,null);
+        openStatements_.add(ps);
         return ps;
     }
 
@@ -1307,7 +1304,7 @@
         CallableStatement cs = newCallableStatement_(sql, resultSetType, resultSetConcurrency, resultSetHoldability);
         cs.cursorAttributesToSendOnPrepare_ = cs.cacheCursorAttributesToSendOnPrepare();
         cs.prepare();
-        openStatements_.put(cs,null);
+        openStatements_.add(cs);
         return cs;
     }
 
@@ -1447,8 +1444,7 @@
     public abstract void readLocalCommit_() throws SqlException;
 
     public void completeLocalCommit() {
-    	java.util.Set keySet = CommitAndRollbackListeners_.keySet();
-        for (java.util.Iterator i = keySet.iterator(); i.hasNext();) {
+        for (java.util.Iterator i = CommitAndRollbackListeners_.iterator(); i.hasNext();) {
             UnitOfWorkListener listener = (UnitOfWorkListener) i.next();
             listener.completeLocalCommit(i);
         }
@@ -1463,8 +1459,11 @@
     // This is a client-side only operation.
     // This method will only throw an exception on bug check.
     public void completeLocalRollback() {
-    	java.util.Set keySet = CommitAndRollbackListeners_.keySet();
-        for (java.util.Iterator i = keySet.iterator(); i.hasNext();) {
+        for (java.util.Iterator i = CommitAndRollbackListeners_.iterator(); i.hasNext();) {
+            UnitOfWorkListener listener = (UnitOfWorkListener) i.next();
+            listener.completeLocalRollback(i);
+        }
+        for (java.util.Iterator i = RollbackOnlyListeners_.iterator(); i.hasNext();) {
             UnitOfWorkListener listener = (UnitOfWorkListener) i.next();
             listener.completeLocalRollback(i);
         }
@@ -1566,8 +1565,7 @@
         // Notice that these physical statements may not belong to this logical connection.
         // Iterate through the physical statements and re-enable them for reuse.
 
-        java.util.Set keySet = openStatements_.keySet();
-        for (java.util.Iterator i = keySet.iterator(); i.hasNext();) {
+        for (java.util.Iterator i = openStatements_.iterator(); i.hasNext();) {
             Object o = i.next();
             ((Statement) o).reset(recomputeFromDataSource);
 

Modified: db/derby/code/trunk/java/client/org/apache/derby/client/am/Lob.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/client/org/apache/derby/client/am/Lob.java?rev=370275&r1=370274&r2=370275&view=diff
==============================================================================
--- db/derby/code/trunk/java/client/org/apache/derby/client/am/Lob.java (original)
+++ db/derby/code/trunk/java/client/org/apache/derby/client/am/Lob.java Wed Jan 18 13:55:36 2006
@@ -64,7 +64,7 @@
     //-----------------------event callback methods-------------------------------
 
     public void listenToUnitOfWork() {
-        agent_.connection_.CommitAndRollbackListeners_.put(this,null);
+        agent_.connection_.CommitAndRollbackListeners_.add(this);
     }
 
     public void completeLocalCommit(java.util.Iterator listenerIterator) {

Modified: db/derby/code/trunk/java/client/org/apache/derby/client/am/PreparedStatement.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/client/org/apache/derby/client/am/PreparedStatement.java?rev=370275&r1=370274&r2=370275&view=diff
==============================================================================
--- db/derby/code/trunk/java/client/org/apache/derby/client/am/PreparedStatement.java (original)
+++ db/derby/code/trunk/java/client/org/apache/derby/client/am/PreparedStatement.java Wed Jan 18 13:55:36 2006
@@ -1613,7 +1613,7 @@
     public void listenToUnitOfWork() {
         if (!listenToUnitOfWork_) {
             listenToUnitOfWork_ = true;
-            connection_.CommitAndRollbackListeners_.put(this,null);
+            connection_.CommitAndRollbackListeners_.add(this);
         }
     }
 

Modified: db/derby/code/trunk/java/client/org/apache/derby/client/am/ResultSet.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/client/org/apache/derby/client/am/ResultSet.java?rev=370275&r1=370274&r2=370275&view=diff
==============================================================================
--- db/derby/code/trunk/java/client/org/apache/derby/client/am/ResultSet.java (original)
+++ db/derby/code/trunk/java/client/org/apache/derby/client/am/ResultSet.java Wed Jan 18 13:55:36 2006
@@ -3055,7 +3055,7 @@
     public void listenToUnitOfWork() {
         if (!listenToUnitOfWork_) {
             listenToUnitOfWork_ = true;
-            connection_.CommitAndRollbackListeners_.put(this,null);
+            connection_.CommitAndRollbackListeners_.add(this);
         }
     }
 

Modified: db/derby/code/trunk/java/client/org/apache/derby/client/am/Statement.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/client/org/apache/derby/client/am/Statement.java?rev=370275&r1=370274&r2=370275&view=diff
==============================================================================
--- db/derby/code/trunk/java/client/org/apache/derby/client/am/Statement.java (original)
+++ db/derby/code/trunk/java/client/org/apache/derby/client/am/Statement.java Wed Jan 18 13:55:36 2006
@@ -2017,18 +2017,12 @@
     }
 
     // Only called on positioned upate statements
-    //Removing resultset from hashtable is called for all statements
     void resetCursorNameAndRemoveFromWhereCurrentOfMappings() {
         // Remove client/server cursorName -> ResultSet mapping from the hashtable.
         // If Statement.close() is called before ResultSet.close(), then statement_.section is null.
         if (section_ != null) {
             agent_.sectionManager_.removeCursorNameToResultSetMapping(cursorName_,
                     section_.getServerCursorNameForPositionedUpdate());
-            
-            // remove resultset mapping for other cursors (other than positioned
-            // update statements)
-            agent_.sectionManager_.removeCursorNameToResultSetMapping(cursorName_,
-                    section_.getServerCursorName());
 
             // Remove client and server cursorName -> QuerySection mapping from the hashtable
             // if one exists

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/DerbyNet.exclude
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/DerbyNet.exclude?rev=370275&r1=370274&r2=370275&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/DerbyNet.exclude (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/DerbyNet.exclude Wed Jan 18 13:55:36 2006
@@ -12,7 +12,6 @@
 # excluding jdbcapi/statementJdbc30.java - Client behaves differently. Need to look into this
 # excluding jdbcapi/holdCursorJava.java - JCC behaves differently with hold cursors.
 # excluding jdbcapi/dataSourceReference.java - client side only tests, tests all data sources
-# excluding jdbcapi/derbyStress.java - jcc runs out of memory with this test
 #           regardless of framework
 jdbcapi/resultsetStream.java
 lang/errorStream.java
@@ -29,4 +28,3 @@
 jdbcapi/statementJdbc30.java
 lang/holdCursorJava.java
 jdbcapi/dataSourceReference.java
-jdbcapi/derbyStress.java

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/jdbcapi.runall
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/jdbcapi.runall?rev=370275&r1=370274&r2=370275&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/jdbcapi.runall (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/jdbcapi.runall Wed Jan 18 13:55:36 2006
@@ -1,7 +1,6 @@
 jdbcapi/bestrowidentifier.sql
 jdbcapi/characterStreams.java
 jdbcapi/checkDriver.java
-jdbcapi/derbyStress.java
 jdbcapi/nullSQLText.java
 jdbcapi/prepStmtMetaData.java
 jdbcapi/resultset.java