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

Cannot insert 994 character long string into indexed column

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 10.4.2.0
    • 10.6.1.0
    • Store
    • None
    • Normal
    • High Value Fix, Repro attached, Workaround attached
    • Seen in production

    Description

      Inserting a 994 character string into a varchar(1000) column with an index fails.

      These steps

      1. "create table t (x varchar(1000) primary key)"
      2. "insert into t values " where ? holds a 994 character string

      produce the following error:

      ERROR XSCB6: Limitation: Record of a btree secondary index cannot be updated or inserted due to lack of space on the page. Use the parameters derby.storage.pageSize and/or derby.storage.pageReservedSpace to work around this limitation.
      at org.apache.derby.iapi.error.StandardException.newException(StandardException.java:276)
      at org.apache.derby.impl.store.access.btree.BTreeController.doIns(BTreeController.java:845)
      at org.apache.derby.impl.store.access.btree.BTreeController.insert(BTreeController.java:1264)
      at org.apache.derby.impl.store.access.btree.index.B2IController.insert(B2IController.java:210)
      at org.apache.derby.impl.sql.execute.IndexChanger.insertAndCheckDups(IndexChanger.java:439)
      at org.apache.derby.impl.sql.execute.IndexChanger.doInsert(IndexChanger.java:383)
      at org.apache.derby.impl.sql.execute.IndexChanger.insert(IndexChanger.java:589)
      at org.apache.derby.impl.sql.execute.IndexSetChanger.insert(IndexSetChanger.java:268)
      at org.apache.derby.impl.sql.execute.RowChangerImpl.insertRow(RowChangerImpl.java:453)
      at org.apache.derby.impl.sql.execute.InsertResultSet.normalInsertCore(InsertResultSet.java:1011)
      at org.apache.derby.impl.sql.execute.InsertResultSet.open(InsertResultSet.java:487)
      at org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:372)
      at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1235)

      The page size should be set sufficiently high at index creation time to hold columns with the specified maximum size.

      Attachments

        1. firstTry.diff
          5 kB
          Bryan Pendleton
        2. moreTests.diff
          6 kB
          Bryan Pendleton
        3. VarcharIndex.java
          0.6 kB
          Knut Anders Hatlen

        Activity

          People

            bryanpendleton Bryan Pendleton
            knutanders Knut Anders Hatlen
            Votes:
            1 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: