[
https://issues.apache.org/jira/browse/DERBY-4244?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Bryan Pendleton resolved DERBY-4244.
------------------------------------
Resolution: Fixed
Fix Version/s: 10.6.0.0
Thanks for the revised patch, Eranda!
I ran a complete set of regression tests, and committed the fix, as revision
795459.
I decided not to remove the THROWASSERT from Heap.java at this time. I agree
with Knut's observation that the THROWASSERT was not adding much value, but it
also seemed that removing it was not essential to the patch, so in the
interests of making a small, focused patch, I simply included the changes to
AlterTableNode and AlterTableTest.
I believe that the work on this issue is complete.
> ALTER TABLE Sanity ASSERT in add column with autocommit off
> -----------------------------------------------------------
>
> Key: DERBY-4244
> URL: https://issues.apache.org/jira/browse/DERBY-4244
> Project: Derby
> Issue Type: Bug
> Components: SQL
> Affects Versions: 10.2.1.6, 10.2.2.0, 10.3.1.4, 10.3.2.1, 10.3.3.0,
> 10.4.1.3, 10.4.2.0, 10.5.1.1, 10.6.0.0
> Reporter: Bryan Pendleton
> Assignee: Eranda Sooriyabandara
> Priority: Minor
> Fix For: 10.6.0.0
>
> Attachments: checkAtCompileTime.diff, DERBY-4244.diff
>
>
> While working with Eranda on DERBY-4187, I stumbled across an apparent ALTER
> TABLE bug.
> Here's a script which reproduces the problem for me:
> autocommit off;
> create table t0(c1 int not null constraint p1 primary key);
> alter table t0 add column c1 int;
> alter table t0 add column c2 int not null default 0 primary key;
> alter table t0 add column c2 int not null default 0;
> The "autocommit off" is crucial; otherwise the problem does not reproduce.
> Here's the detailed assertion failure:
> 2009-05-23 15:01:17.436 GMT Thread[main,5,main] (XID = 146), (SESSIONID = 1),
> (DATABASE = brydb), (DRDAID = null), Failed Statement is: alter table t0 add
> column c2 int not null default 0
> org.apache.derby.shared.common.sanity.AssertFailure: ASSERT FAILED column_id
> = 1format_ids.length = 2format_ids = [...@1321f5
> at
> org.apache.derby.shared.common.sanity.SanityManager.THROWASSERT(SanityManager.java:162)
> at
> org.apache.derby.shared.common.sanity.SanityManager.THROWASSERT(SanityManager.java:147)
> at
> org.apache.derby.impl.store.access.heap.Heap.addColumn(Heap.java:418)
> at
> org.apache.derby.impl.store.access.RAMTransaction.addColumnToConglomerate(RAMTransaction.java:618)
> at
> org.apache.derby.impl.sql.execute.AlterTableConstantAction.addNewColumnToTable(AlterTableConstantAction.java:1325)
> at
> org.apache.derby.impl.sql.execute.AlterTableConstantAction.executeConstantAction(AlterTableConstantAction.java:449)
> Here's the relevant section of Heap.java:
> if (column_id != format_ids.length)
> {
> if (SanityManager.DEBUG)
> SanityManager.THROWASSERT(
> "column_id = " + column_id +
> "format_ids.length = " + format_ids.length +
> "format_ids = " + format_ids);
> throw(StandardException.newException(
> SQLState.HEAP_TEMPLATE_MISMATCH,
> new Long(column_id),
> new Long(this.format_ids.length)));
> }
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.