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 mi...@apache.org on 2014/10/09 23:44:28 UTC
svn commit: r1630596 - in /db/derby/code/branches/10.10: ./
java/engine/org/apache/derby/vti/
java/testing/org/apache/derbyTesting/functionTests/tests/lang/
java/tools/org/apache/derby/impl/tools/optional/
Author: mikem
Date: Thu Oct 9 21:44:27 2014
New Revision: 1630596
URL: http://svn.apache.org/r1630596
Log:
DERBY-6440: Drop connection to foreign database when foreignViews optional tool is unloaded.
backported change #1553269 from trunk to 10.10 branch.
Modified:
db/derby/code/branches/10.10/ (props changed)
db/derby/code/branches/10.10/java/engine/org/apache/derby/vti/ForeignTableVTI.java
db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/tests/lang/OptionalToolsTest.java
db/derby/code/branches/10.10/java/tools/org/apache/derby/impl/tools/optional/ForeignDBViews.java
Propchange: db/derby/code/branches/10.10/
------------------------------------------------------------------------------
Merged /db/derby/code/trunk:r1553269
Modified: db/derby/code/branches/10.10/java/engine/org/apache/derby/vti/ForeignTableVTI.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.10/java/engine/org/apache/derby/vti/ForeignTableVTI.java?rev=1630596&r1=1630595&r2=1630596&view=diff
==============================================================================
--- db/derby/code/branches/10.10/java/engine/org/apache/derby/vti/ForeignTableVTI.java (original)
+++ db/derby/code/branches/10.10/java/engine/org/apache/derby/vti/ForeignTableVTI.java Thu Oct 9 21:44:27 2014
@@ -193,6 +193,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/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/tests/lang/OptionalToolsTest.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/tests/lang/OptionalToolsTest.java?rev=1630596&r1=1630595&r2=1630596&view=diff
==============================================================================
--- db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/tests/lang/OptionalToolsTest.java (original)
+++ db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/tests/lang/OptionalToolsTest.java Thu Oct 9 21:44:27 2014
@@ -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/branches/10.10/java/tools/org/apache/derby/impl/tools/optional/ForeignDBViews.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.10/java/tools/org/apache/derby/impl/tools/optional/ForeignDBViews.java?rev=1630596&r1=1630595&r2=1630596&view=diff
==============================================================================
--- db/derby/code/branches/10.10/java/tools/org/apache/derby/impl/tools/optional/ForeignDBViews.java (original)
+++ db/derby/code/branches/10.10/java/tools/org/apache/derby/impl/tools/optional/ForeignDBViews.java Thu Oct 9 21:44:27 2014
@@ -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 );
}
///////////////////////////////////////////////////////////////////////////////////