Uploaded image for project: 'Derby'
  1. Derby
  2. DERBY-854

DatabaseMetaData methods fail on read-only database

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 10.1.2.1
    • Fix Version/s: 10.3.1.4
    • Component/s: JDBC
    • Labels:
      None
    • Environment:
      Win XP SP2 / Intel

      Description

      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)

        Attachments

        1. BirtSample.jar
          478 kB
          Gary Xue
        2. TestGetDBMetaData.java
          1 kB
          Gary Xue

          Issue Links

            Activity

              People

              • Assignee:
                Unassigned
                Reporter:
                amiller Alex Miller
              • Votes:
                4 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: