[
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: 10.4.2.0
> 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.