[ 
https://issues.apache.org/jira/browse/DERBY-4451?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12781428#action_12781428
 ] 

Knut Anders Hatlen commented on DERBY-4451:
-------------------------------------------

The approach in the patch looks good. Some small comments:

- to get consistent naming of the forbid* methods, you may want to rename the 
new method to forbidGenerationOverrides (note: lower-case b in forbid)

- typo in DMLModStatementNode: multi-row VALUE clause -> multi-row VALUES clause

- the code touched in DMLModStatementNode uses spaces for indentation, whereas 
the added code uses tabs

- javadoc for ResultSetNode.forBidGenerationOverrides() says "For a UnionNode 
representing a table constructor, this happens recursively till we have checked 
all rows", but in the implementation, UnionNodes that are not representing a 
table constructor are handled the same way.

> 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
>
>
> 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