Return-Path: X-Original-To: apmail-db-derby-commits-archive@www.apache.org Delivered-To: apmail-db-derby-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id B0D3B78D2 for ; Wed, 3 Aug 2011 13:26:59 +0000 (UTC) Received: (qmail 61384 invoked by uid 500); 3 Aug 2011 13:26:59 -0000 Delivered-To: apmail-db-derby-commits-archive@db.apache.org Received: (qmail 61319 invoked by uid 500); 3 Aug 2011 13:26:59 -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 61287 invoked by uid 99); 3 Aug 2011 13:26:59 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 03 Aug 2011 13:26:59 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 03 Aug 2011 13:26:57 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 948F023889B3; Wed, 3 Aug 2011 13:26:37 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1153478 - in /db/derby/code/branches/10.8/java: engine/org/apache/derby/impl/services/reflect/ testing/org/apache/derbyTesting/functionTests/tests/lang/ Date: Wed, 03 Aug 2011 13:26:37 -0000 To: derby-commits@db.apache.org From: rhillegas@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20110803132637.948F023889B3@eris.apache.org> Author: rhillegas Date: Wed Aug 3 13:26:36 2011 New Revision: 1153478 URL: http://svn.apache.org/viewvc?rev=1153478&view=rev Log: DERBY-5352: Ported 1153474 from trunk to 10.8 branch. Modified: db/derby/code/branches/10.8/java/engine/org/apache/derby/impl/services/reflect/JarLoader.java db/derby/code/branches/10.8/java/testing/org/apache/derbyTesting/functionTests/tests/lang/DatabaseClassLoadingTest.java db/derby/code/branches/10.8/java/testing/org/apache/derbyTesting/functionTests/tests/lang/dummy_vti.jar Modified: db/derby/code/branches/10.8/java/engine/org/apache/derby/impl/services/reflect/JarLoader.java URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.8/java/engine/org/apache/derby/impl/services/reflect/JarLoader.java?rev=1153478&r1=1153477&r2=1153478&view=diff ============================================================================== --- db/derby/code/branches/10.8/java/engine/org/apache/derby/impl/services/reflect/JarLoader.java (original) +++ db/derby/code/branches/10.8/java/engine/org/apache/derby/impl/services/reflect/JarLoader.java Wed Aug 3 13:26:36 2011 @@ -175,7 +175,8 @@ final class JarLoader extends SecureClas // not make assumptions about this check reducing the // number of classes it has to check for. if (className.startsWith("org.apache.derby.") - && !className.startsWith("org.apache.derby.jdbc.")) + && !className.startsWith("org.apache.derby.jdbc.") + && !className.startsWith("org.apache.derby.vti.")) { ClassNotFoundException cnfe = new ClassNotFoundException(className); //cnfe.printStackTrace(System.out); Modified: db/derby/code/branches/10.8/java/testing/org/apache/derbyTesting/functionTests/tests/lang/DatabaseClassLoadingTest.java URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.8/java/testing/org/apache/derbyTesting/functionTests/tests/lang/DatabaseClassLoadingTest.java?rev=1153478&r1=1153477&r2=1153478&view=diff ============================================================================== --- db/derby/code/branches/10.8/java/testing/org/apache/derbyTesting/functionTests/tests/lang/DatabaseClassLoadingTest.java (original) +++ db/derby/code/branches/10.8/java/testing/org/apache/derbyTesting/functionTests/tests/lang/DatabaseClassLoadingTest.java Wed Aug 3 13:26:36 2011 @@ -108,6 +108,7 @@ public class DatabaseClassLoadingTest ex "testLoadDerbyClassIndirectly", "testIndirectLoading", "testTableFunctionInJar", + "test_5352", }; for (int i = 0; i < orderedTests.length; i++) @@ -1044,7 +1045,7 @@ public class DatabaseClassLoadingTest ex "language java\n" + "parameter style DERBY_JDBC_RESULT_SET\n" + "reads sql data\n" + - "external name 'DummyVTI2.dummyVTI'\n" + "external name 'MissingClass.dummyVTI'\n" ); // invoke the scalar function @@ -1078,7 +1079,63 @@ public class DatabaseClassLoadingTest ex } catch (SQLException e) { assertSQLState("XJ001", e); } + + // drop the useless function + s.executeUpdate( "drop function dummyVTI2\n" ); + + setDBClasspath(null); + + s.close(); + } + + /** + * Test that restricted table functions can be invoked from inside jar files stored in + * the database. + */ + public void test_5352() throws SQLException, MalformedURLException + { + // skip this test if vm is pre Java 5. This is because the jar file was + // compiled by a modern compiler and the jar file won't load on + // old vms. + if ( JVMInfo.J2ME || (JVMInfo.JDK_ID < JVMInfo.J2SE_15 ) ) { return; } + + String jarName = "EMC.DUMMY_VTI2"; + + installJar("dummy_vti.jar", jarName ); + + setDBClasspath( jarName ); + + Statement s = createStatement(); + + // register the table function + s.executeUpdate + ( + "create function dummyVTI2( allowsRestriction boolean )\n" + + "returns table( a int )\n" + + "language java\n" + + "parameter style DERBY_JDBC_RESULT_SET\n" + + "no sql\n" + + "external name 'DummyVTI2.dummyVTI2'\n" + ); + // invoke the table function + JDBC.assertFullResultSet + ( + s.executeQuery + ( + "select * from table( dummyVTI2( true ) ) s where a = 1" + ), + new String[][] + { + { "1" } + } + ); + + // verify that the RestrictedVTI machinery is really invoked + assertStatementError( "XYZZY", s, "select * from table( dummyVTI2( false ) ) s where a = 1" ); + + s.executeUpdate( "drop function dummyVTI2\n" ); + setDBClasspath(null); s.close(); Modified: db/derby/code/branches/10.8/java/testing/org/apache/derbyTesting/functionTests/tests/lang/dummy_vti.jar URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.8/java/testing/org/apache/derbyTesting/functionTests/tests/lang/dummy_vti.jar?rev=1153478&r1=1153477&r2=1153478&view=diff ============================================================================== Binary files - no diff available.