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 rh...@apache.org on 2013/12/24 14:09:05 UTC

svn commit: r1553269 - in /db/derby/code/trunk/java: engine/org/apache/derby/vti/ForeignTableVTI.java testing/org/apache/derbyTesting/functionTests/tests/lang/OptionalToolsTest.java tools/org/apache/derby/impl/tools/optional/ForeignDBViews.java

Author: rhillegas
Date: Tue Dec 24 13:09:05 2013
New Revision: 1553269

URL: http://svn.apache.org/r1553269
Log:
DERBY-6440: Drop connection to foreign database when foreignViews optional tool is unloaded.

Modified:
    db/derby/code/trunk/java/engine/org/apache/derby/vti/ForeignTableVTI.java
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/OptionalToolsTest.java
    db/derby/code/trunk/java/tools/org/apache/derby/impl/tools/optional/ForeignDBViews.java

Modified: db/derby/code/trunk/java/engine/org/apache/derby/vti/ForeignTableVTI.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/vti/ForeignTableVTI.java?rev=1553269&r1=1553268&r2=1553269&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/vti/ForeignTableVTI.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/vti/ForeignTableVTI.java Tue Dec 24 13:09:05 2013
@@ -194,6 +194,34 @@ public	class   ForeignTableVTI extends V
 
     ////////////////////////////////////////////////////////////////////////
     //
+    //	SUPPORT FUNCTIONS
+    //
+    ////////////////////////////////////////////////////////////////////////
+
+    /**
+     * <p>
+     * Remove the cached connection to the foreign database. This method is called
+     * by ForeignDBViews.unloadTool().
+     * </p>
+     */
+    public  static  void    dropConnection( String connectionURL )
+    {
+        _connections.remove( connectionURL );
+    }
+
+    /**
+     * <p>
+     * This function is useful for verifying that the connection to the foreign
+     * database was dropped when the foreignViews tool was unloaded.
+     * </p>
+     */
+    public  static  int countConnections()
+    {
+        return _connections.size();
+    }
+
+    ////////////////////////////////////////////////////////////////////////
+    //
     //	ResultSet BEHAVIOR
     //
     ////////////////////////////////////////////////////////////////////////

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/OptionalToolsTest.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/OptionalToolsTest.java?rev=1553269&r1=1553268&r2=1553269&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/OptionalToolsTest.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/OptionalToolsTest.java Tue Dec 24 13:09:05 2013
@@ -249,6 +249,16 @@ public class OptionalToolsTest  extends 
                 { "Polaris", "100", "1" },
             };
 
+        // create a function to count the number of connections
+        // managed by ForeignTableVTI
+        goodStatement
+            (
+             dboConnection,
+             "create function countConnections() returns int\n" +
+             "language java parameter style java no sql\n" +
+             "external name 'org.apache.derby.vti.ForeignTableVTI.countConnections'\n"
+             );
+
         // wrong number of arguments
         expectExecutionError
             (
@@ -293,6 +303,13 @@ public class OptionalToolsTest  extends 
              starResult,
              false
              );
+        assertResults
+            (
+             dboConnection,
+             "values countConnections()",
+             new String[][] { { "1" } },
+             false
+             );
         
         // wrong number of arguments
         expectExecutionError
@@ -308,6 +325,13 @@ public class OptionalToolsTest  extends 
              dboConnection,
              "call syscs_util.syscs_register_tool( 'foreignViews', false, '" + foreignURL + "' )"
              );
+        assertResults
+            (
+             dboConnection,
+             "values countConnections()",
+             new String[][] { { "0" } },
+             false
+             );
 
         // should fail because the view and its schema were dropped when the tool was unloaded
         expectCompilationError
@@ -373,6 +397,14 @@ public class OptionalToolsTest  extends 
              MISSING_SCHEMA,
              starSelect
              );
+        assertResults
+            (
+             dboConnection,
+             "values countConnections()",
+             new String[][] { { "0" } },
+             false
+             );
+        goodStatement( dboConnection, "drop function countConnections" );
     }
 
     /**

Modified: db/derby/code/trunk/java/tools/org/apache/derby/impl/tools/optional/ForeignDBViews.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/tools/org/apache/derby/impl/tools/optional/ForeignDBViews.java?rev=1553269&r1=1553268&r2=1553269&view=diff
==============================================================================
--- db/derby/code/trunk/java/tools/org/apache/derby/impl/tools/optional/ForeignDBViews.java (original)
+++ db/derby/code/trunk/java/tools/org/apache/derby/impl/tools/optional/ForeignDBViews.java Tue Dec 24 13:09:05 2013
@@ -34,6 +34,7 @@ import org.apache.derby.iapi.sql.diction
 import org.apache.derby.iapi.tools.i18n.LocalizedResource;
 import org.apache.derby.iapi.util.IdUtil;
 import org.apache.derby.iapi.util.StringUtil;
+import org.apache.derby.vti.ForeignTableVTI;
 
 /**
  * <p>
@@ -171,6 +172,9 @@ public	class   ForeignDBViews  implement
 
         // now drop the schemas created by loadTool()
         for ( String schemaName : schemas ) { dropDerbySchema( derbyConn, schemaName ); }
+
+        // now drop the connection to the foreign database
+        ForeignTableVTI.dropConnection( foreignConnectionURL );
     }
 
     ///////////////////////////////////////////////////////////////////////////////////