db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bryan Pendleton (JIRA)" <j...@apache.org>
Subject [jira] Updated: (DERBY-3947) Cannot insert 994 character long string into indexed column
Date Sat, 28 Nov 2009 18:47:20 GMT

     [ https://issues.apache.org/jira/browse/DERBY-3947?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

Bryan Pendleton updated DERBY-3947:

    Attachment: firstTry.diff

Attached is my first try at fixing this problem. The patch contains a regression
test case, based on Knut's repro program, and a change to TableElementList
to check, when creating the index which backs up a constraint, whether the
index needs to use a large page size rather than the default page size.

The change makes the repro case passes, but does NOT handle the similar,
but different, cases of ALTER TABLE ADD CONSTRAINT, so the patch is
not ready for commit.

But I think the basic idea is workable, so I'll see if I can extend it to handle 
the special needs of ALTER TABLE.

> Cannot insert 994 character long string into indexed column
> -----------------------------------------------------------
>                 Key: DERBY-3947
>                 URL: https://issues.apache.org/jira/browse/DERBY-3947
>             Project: Derby
>          Issue Type: Bug
>          Components: Store
>    Affects Versions:
>            Reporter: Knut Anders Hatlen
>            Assignee: Bryan Pendleton
>         Attachments: firstTry.diff, VarcharIndex.java
> 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.

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message