db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Knut Anders Hatlen (JIRA)" <j...@apache.org>
Subject [jira] Updated: (DERBY-4442) Evaluation of default value and identity in an INSERT result set evaluated too early.
Date Fri, 20 Nov 2009 11:23:39 GMT

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

View raw message