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 Sun, 29 Nov 2009 20:15: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: moreTests.diff

Upon more study, I don't think that ALTER TABLE takes a different code path
when adding a constraint; i think the flow still goes through TableElementList.

I did, however, add some more tests, including a test of trying to add a constraint
which mentions a column which doesn't exist, which caught the fact that the
patch needs to be careful when looking at the column lengths, because if the
column doesn't exist, we can't access its length.

I added more tests to the patch proposal, and am running a full set of regression tests.

> 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, moreTests.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