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

Unable to perform select query using DISTINCT on a read-only database

Attach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Normal
    • High Value Fix, Repro attached

    Description

      It is not possible to perform queries using DISTINCT on a read-only database packaged in a zip file. This generates the following error:

      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.raw.data.BaseDataFileFactory.addContainer(Unknown Source)
      at org.apache.derby.impl.store.raw.xact.Xact.addContainer(Unknown Source)
      at org.apache.derby.impl.store.access.heap.Heap.create(Unknown Source)
      at org.apache.derby.impl.store.access.heap.HeapConglomerateFactory.createConglomerate(Unknown Source)
      at org.apache.derby.impl.store.access.RAMTransaction.createConglomerate(Unknown Source)
      at org.apache.derby.iapi.store.access.DiskHashtable.<init>(Unknown Source)
      at org.apache.derby.iapi.store.access.BackingStoreHashtable.spillToDisk(Unknown Source)
      at org.apache.derby.iapi.store.access.BackingStoreHashtable.add_row_to_hash_table(Unknown Source)
      at org.apache.derby.iapi.store.access.BackingStoreHashtable.put(Unknown Source)
      at org.apache.derby.impl.store.access.btree.BTreeForwardScan.fetchRows(Unknown Source)
      at org.apache.derby.impl.store.access.btree.BTreeScan.fetchSet(Unknown Source)
      at org.apache.derby.impl.store.access.BackingStoreHashTableFromScan.<init>(Unknown Source)
      at org.apache.derby.impl.store.access.RAMTransaction.createBackingStoreHashtableFromScan(Unknown Source)
      at org.apache.derby.impl.sql.execute.HashScanResultSet.openCore(Unknown Source)
      at org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl.open(Unknown Source)
      at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown Source)
      at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown Source)
      at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
      at org.apache.derby.impl.jdbc.EmbedStatement.executeQuery(Unknown Source)
      at DerbyTest.main(DerbyTest.java:29)

      The problem can be reproduced using the attached java program and the following database file:
      http://ftp2.bigcat.unimaas.nl/~thomas.kelder/derbytest/testdb.zip.
      Both the 'derby.storage.tempDirectory' and 'derby.stream.error.file' properties are set to writable locations, as advised in the help file.

      Also see derby-user mailing list thread: http://article.gmane.org/gmane.comp.apache.db.derby.user/6123

      "This appears to be a bug, possibly a regression. When I converted your
      DB to10.0 everything worked fine even when I did NOT set the properties
      for tempDirectory and error.file (hmmm..). When I switched to using the
      10.1 or 10.2 jars and accessed the very same database the 40XD1 ERROR
      happened." (Stanley Bradbury)

      Attachments

        1. d2354-createdb.sql
          0.4 kB
          Knut Anders Hatlen
        2. d2354-repro.sql
          0.1 kB
          Knut Anders Hatlen
        3. derby-2354-1a.diff
          7 kB
          Knut Anders Hatlen
        4. derby-2354-1b.diff
          13 kB
          Knut Anders Hatlen
        5. derby-2354-1c.diff
          13 kB
          Knut Anders Hatlen
        6. DerbyTest.java
          1.0 kB
          Thomas Kelder

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            knutanders Knut Anders Hatlen
            thomaskelder Thomas Kelder
            Votes:
            4 Vote for this issue
            Watchers:
            7 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment