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

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

    Details

    • Urgency:
      Normal
    • Issue & fix info:
      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. DerbyTest.java
          1.0 kB
          Thomas Kelder
        2. derby-2354-1c.diff
          13 kB
          Knut Anders Hatlen
        3. derby-2354-1b.diff
          13 kB
          Knut Anders Hatlen
        4. derby-2354-1a.diff
          7 kB
          Knut Anders Hatlen
        5. d2354-repro.sql
          0.1 kB
          Knut Anders Hatlen
        6. d2354-createdb.sql
          0.4 kB
          Knut Anders Hatlen

          Activity

            People

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

              Dates

              • Created:
                Updated:
                Resolved: