Return-Path: Delivered-To: apmail-db-derby-dev-archive@www.apache.org Received: (qmail 83051 invoked from network); 22 May 2008 23:46:17 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 22 May 2008 23:46:17 -0000 Received: (qmail 76309 invoked by uid 500); 22 May 2008 23:46:19 -0000 Delivered-To: apmail-db-derby-dev-archive@db.apache.org Received: (qmail 76194 invoked by uid 500); 22 May 2008 23:46:18 -0000 Mailing-List: contact derby-dev-help@db.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: Delivered-To: mailing list derby-dev@db.apache.org Received: (qmail 76183 invoked by uid 99); 22 May 2008 23:46:18 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 22 May 2008 16:46:18 -0700 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.140] (HELO brutus.apache.org) (140.211.11.140) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 22 May 2008 23:45:40 +0000 Received: from brutus (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id 4D3F6234C11C for ; Thu, 22 May 2008 16:45:56 -0700 (PDT) Message-ID: <1626322388.1211499956315.JavaMail.jira@brutus> Date: Thu, 22 May 2008 16:45:56 -0700 (PDT) From: "Dag H. Wanvik (JIRA)" To: derby-dev@db.apache.org Subject: [jira] Commented: (DERBY-3546) Failed to get database schemas of a JAR database In-Reply-To: <71793000.1205524345571.JavaMail.jira@brutus> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org [ https://issues.apache.org/jira/browse/DERBY-3546?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12599247#action_12599247 ] Dag H. Wanvik commented on DERBY-3546: -------------------------------------- I verified that the new test failed without the rest of the patch on trunk as expected, and worked when the rest was added. Approach looks good to me! +1 > Failed to get database schemas of a JAR database > ------------------------------------------------ > > Key: DERBY-3546 > URL: https://issues.apache.org/jira/browse/DERBY-3546 > Project: Derby > Issue Type: Bug > Components: JDBC > Affects Versions: 10.3.2.1 > Environment: Sun JRE 1.5.0_08 > Windows Server 2003 > Reporter: Gary Xue > Assignee: Kathey Marsden > Attachments: BirtSample.jar, derby-3546_10.3_diff.txt, derby-3546_trunk_diff.txt > > > When a database residing in a JAR file is open via Derby embedded JDBC connection, the getSchemas() call on the connection's DatabaseMetaData fails with an exception: ERROR 40XD1: Container was opened in read-only mode. > STEPS TO REPRODUCE: > (1) Download the attached JAR database, BirtSample.jar, and place it in C:\ (or if another location, update the dbFile variable in test code below). > (2) Run the following Java test code, with derby.jar (version 10.3.1.1) in classpath. > // *** BEGIN TEST CODE > import java.sql.Connection; > import java.sql.DatabaseMetaData; > import java.sql.DriverManager; > import java.sql.ResultSet; > public class TestGetDBMetaData > { > public static void main(String[] args) throws Exception > { > final String dbFile = "c:/BirtSample.jar"; > final String driverClass = "org.apache.derby.jdbc.EmbeddedDriver"; > final String url= "jdbc:derby:jar:(" + dbFile + ")BirtSample"; > final String user = "ClassicModels"; > final String pwd = ""; > > Class.forName( driverClass ); > Connection conn = DriverManager.getConnection( url, user, pwd); > DatabaseMetaData dbmd = conn.getMetaData(); > ResultSet rs = dbmd.getSchemas(); > rs.close(); > conn.close(); > } > } > // ***END TEST CODE > The following exception happens in the getSchemas() call: > Exception in thread "main" java.sql.SQLException: Container was opened in read-only mode. > at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source) > at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source) > at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source) > at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source) > at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source) > at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown Source) > at org.apache.derby.impl.jdbc.EmbedPreparedStatement.(Unknown Source) > at org.apache.derby.impl.jdbc.EmbedPreparedStatement20.(Unknown Source) > at org.apache.derby.impl.jdbc.EmbedPreparedStatement30.(Unknown Source) > at org.apache.derby.jdbc.Driver30.newEmbedPreparedStatement(Unknown Source) > at org.apache.derby.impl.jdbc.EmbedConnection.prepareMetaDataStatement(Unknown Source) > at org.apache.derby.impl.jdbc.EmbedDatabaseMetaData.prepareSPS(Unknown Source) > at org.apache.derby.impl.jdbc.EmbedDatabaseMetaData.getPreparedQueryUsingSystemTables(Unknown Source) > at org.apache.derby.impl.jdbc.EmbedDatabaseMetaData.getPreparedQuery(Unknown Source) > at org.apache.derby.impl.jdbc.EmbedDatabaseMetaData.getPreparedQuery(Unknown Source) > at org.apache.derby.impl.jdbc.EmbedDatabaseMetaData.getSchemas(Unknown Source) > at org.apache.derby.impl.jdbc.EmbedDatabaseMetaData.getSchemas(Unknown Source) > at TestGetDBMetaData.main(TestGetDBMetaData.java:34) > Caused by: ERROR 40XD1: Container was opened in read-only mode. > at org.apache.derby.iapi.error.StandardException.newException(Unknown Source) > at org.apache.derby.impl.store.raw.data.BaseContainer.use(Unknown Source) > at org.apache.derby.impl.store.raw.data.BaseContainerHandle.useContainer(Unknown Source) > at org.apache.derby.impl.store.raw.data.BaseDataFileFactory.openContainer(Unknown Source) > at org.apache.derby.impl.store.raw.data.BaseDataFileFactory.openContainer(Unknown Source) > at org.apache.derby.impl.store.raw.xact.Xact.openContainer(Unknown Source) > at org.apache.derby.impl.store.access.conglomerate.OpenConglomerate.init(Unknown Source) > at org.apache.derby.impl.store.access.heap.Heap.open(Unknown Source) > at org.apache.derby.impl.store.access.RAMTransaction.openConglomerate(Unknown Source) > at org.apache.derby.impl.store.access.RAMTransaction.openConglomerate(Unknown Source) > at org.apache.derby.impl.sql.execute.RowChangerImpl.openForUpdate(Unknown Source) > at org.apache.derby.impl.sql.execute.RowChangerImpl.open(Unknown Source) > at org.apache.derby.impl.sql.catalog.TabInfoImpl.deleteRows(Unknown Source) > at org.apache.derby.impl.sql.catalog.TabInfoImpl.deleteRow(Unknown Source) > at org.apache.derby.impl.sql.catalog.DataDictionaryImpl.dropDependentsStoredDependencies(Unknown Source) > at org.apache.derby.impl.sql.depend.BasicDependencyManager.clearDependencies(Unknown Source) > at org.apache.derby.iapi.sql.dictionary.SPSDescriptor.compileStatement(Unknown Source) > at org.apache.derby.iapi.sql.dictionary.SPSDescriptor.prepareAndRelease(Unknown Source) > at org.apache.derby.iapi.sql.dictionary.SPSDescriptor.getPreparedStatement(Unknown Source) > at org.apache.derby.iapi.sql.dictionary.SPSDescriptor.getPreparedStatement(Unknown Source) > at org.apache.derby.impl.sql.compile.ExecSPSNode.generate(Unknown Source) > at org.apache.derby.impl.sql.GenericStatement.prepMinion(Unknown Source) > at org.apache.derby.impl.sql.GenericStatement.prepare(Unknown Source) > at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(Unknown Source) > ... 12 more > NOTE: > This is an identical issue as reported in DERBY-854. It was reported as resolved but is still reproducible in 10.3.2.1., the latest official release as of this report. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.