[ http://issues.apache.org/jira/browse/DERBY-854?page=all ]
Gary Xue updated DERBY-854:
---------------------------
Attachment: TestGetDBMetaData.java
test code
> 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
> Attachments: BirtSample.jar, TestGetDBMetaData.java
>
> 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