[ 
http://issues.apache.org/jira/browse/DERBY-854?page=comments#action_12414281 ] 

Gary Xue commented on DERBY-854:
--------------------------------

This isssue is also encounted by the Eclipse BIRT project 
(http://www.eclipse.org/birt) and is blocking BIRT's upgrade to Derby 10.1.2.1. 
This problem does not occur with Derby 10.0.2, which BIRT currrently packages.

To help with reproduction of this issue, I have attached:
(1) BirtSample.jar, which is the Jar'ed version of the BIRT sample database 
created with Derby 10.1.2.1.
(2) Test code TestGetDBMetaData. 

To run the test, place the attached db jar file in c:\temp (or update 
TestGetDBMetaData.main to set dbFile to the location of this file). Run 
TestGetDBMetaData class. You will get the same exception as in Description.

This is a blocker issue for us and we'd appreciate a prompt fix or a workaround 
suggestion.


> DatabaseMetaData methods fail on read-only database
> ---------------------------------------------------
>
>          Key: DERBY-854
>          URL: http://issues.apache.org/jira/browse/DERBY-854
>      Project: Derby
>         Type: Bug

>   Components: JDBC
>     Versions: 10.1.2.1
>  Environment: Win XP SP2 / Intel
>     Reporter: Alex Miller

>
> I am using a read-only db in a zip file with Derby in embedded mode.  I ran 
> an importer against it which basically just harvests info from 
> DatabaseMetaData and got an error on several methods like this one.  The 
> method in question here is DatabaseMetaData.getTableTypes().  The same thing 
> seems to happen on other methods I've tried as well (getCatalogs, 
> getProcedures, etc).
> Program:
>         Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
>         Connection conn = 
> DriverManager.getConnection("jdbc:derby:jar:(d:\\derby\\bqt\\zipped\\bqt-mini.zip)bqt");
>         DatabaseMetaData dbmd = conn.getMetaData();
>         ResultSet rs = dbmd.getTableTypes();
> 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.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)
>         at org.apache.derby.impl.jdbc.EmbedPreparedStatement.<init>(Unknown 
> Source)
>         at org.apache.derby.impl.jdbc.EmbedPreparedStatement20.<init>(Unknown 
> Source)
>         at org.apache.derby.impl.jdbc.EmbedPreparedStatement30.<init>(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.getPreparedQuery(Unknown 
> Source)
>         at 
> org.apache.derby.impl.jdbc.EmbedDatabaseMetaData.getSimpleQuery(Unknown 
> Source)
>         at 
> org.apache.derby.impl.jdbc.EmbedDatabaseMetaData.getTableTypes(Unknown 
> Source) 

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to