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] Created: (DERBY-4244) ALTER TABLE Sanity ASSERT in add column with autocommit off
Date Sat, 23 May 2009 14:43:46 GMT
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.6.0.0
            Reporter: Bryan Pendleton
            Priority: Minor


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 = [I@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.


Mime
View raw message