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

Knut Anders Hatlen updated DERBY-4442:
--------------------------------------

    Attachment: always_prn.diff

I took the prn3 patch attached to DERBY-4433, which ensures that 
generated/identity columns are added in a ProjectRestrictNode on top of the 
source result set if the source is a SetOperatorNode, and moved the PRN 
generation from SetOperatorNode to ResultSetNode so that it applies to all 
kinds of result sets (except table constructors, which need special handling). 
See the attached always_prn patch.

With that patch, the DERBY-3 repro does no longer produce gaps in the identity 
values, so the approach looks promising. I also tried it in combination with 
the DERBY-4 patch (derby-4_dhw), but then it unfortunately produced an assert 
error:

ij> create table t3(id int generated always as identity, i int);
0 rows inserted/updated/deleted
ij> insert into t3(i) select * from t1 order by x;
ERROR XJ001: Java exception: 'ASSERT FAILED bindExpressions() is not expected 
to be called for class org.apache.derby.impl.sql.compile.ProjectRestrictNode: 
org.apache.derby.shared.common.sanity.AssertFailure'.

> Evaluation of default value and identity in an INSERT result set evaluated 
> too early.
> -------------------------------------------------------------------------------------
>
>                 Key: DERBY-4442
>                 URL: https://issues.apache.org/jira/browse/DERBY-4442
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>            Reporter: Dag H. Wanvik
>         Attachments: always_prn.diff
>
>
> In contrast to generated column, which are evaluated when the next row from 
> the result set to be inserted, currently default values and identity columns 
> are generated "early", that is as part of avaluating the subquery (SELECT or 
> VALUES as the case may be). 
> This does not currently cause a user visible bug in Derby, but it lies behind 
> DERBY-3 and the effect Bryan observed in DERBY-4.
> Additionally, "early" computation has given rise to much special handling and 
> ensuing bugs, cf. DERBY-1644, DERBY-4413, DERBY-4419, DERBY-4425 and others.
> DERBY-4397 requires this fix for correct behaviour with INSERT.
> See also
> https://issues.apache.org/jira/browse/DERBY-4413?focusedCommentId=12769532&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#action_12769532

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