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