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

Dag H. Wanvik updated DERBY-4451:
---------------------------------

    Attachment: derby-4451d.stat
                derby-4451d.diff

Discussed this offline with Knut, it turns out that the removal of generated 
columns for the case where we have an explicit target column list is not really 
required. This frees us from having to duplicate the checking if nested 
DEFAULTs at this stage also, so we can devise a solution which works for all 
column types; postponed this to DERBY-4426. 
The resulting patch is way simpler now:
  - drop the call to forbidGenerationOverrides from InsertNode.
  - move forbidGenerationOverrides to UpdateNode since it's now only used by 
that class.
  - simplified forbidGenerationOverrides to only handle the update case
  - removed the test cases for DERBY-4426 from GeneratedColumnsTest seen in 
earlier patch versions.
  - removed forbidGenerationOverrides from the result sets seen in earlier 
patch versions.

Rerunning regressions.

> ArrayIndexOutOfBoundsException or ASSERT FAILED when inserting generated 
> columns out of order
> ---------------------------------------------------------------------------------------------
>
>                 Key: DERBY-4451
>                 URL: https://issues.apache.org/jira/browse/DERBY-4451
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.5.3.0, 10.6.0.0
>            Reporter: Knut Anders Hatlen
>            Assignee: Dag H. Wanvik
>         Attachments: derby-4451.diff, derby-4451.stat, derby-4451b.diff, 
> derby-4451b.stat, derby-4451c.diff, derby-4451c.stat, derby-4451d.diff, 
> derby-4451d.stat
>
>
> I see this error when I specify the columns in a different order than in the 
> table definition. It only fails if a multi-row table constructor is used.
> ij> create table t(a int, b generated always as (-a));
> 0 rows inserted/updated/deleted
> ij> insert into t(b,a) values (default,1);
> 1 row inserted/updated/deleted
> ij> insert into t(b,a) values (default,1), (default, 2);
> ERROR XJ001: Java exception: '1 >= 1: 
> java.lang.ArrayIndexOutOfBoundsException'.
> And in a sane build:
> ij> insert into t(b,a) values (default,1),(default,2);
> ERROR XJ001: Java exception: 'ASSERT FAILED More columns in result column 
> list than in base table: org.apache.derby.shared.common.sanity.AssertFailure'.
> This bug may be similar to DERBY-4448, but the stack trace is different, and 
> DERBY-4448 does not raise an ASSERT FAILED in sane builds.

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

Reply via email to