[
https://issues.apache.org/jira/browse/DERBY-4433?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Knut Anders Hatlen updated DERBY-4433:
--------------------------------------
Attachment: prn3.diff
The root cause of NPE was that the code currently on trunk that reorders and
enhances the RCL is only meant to be used for replacing the RCL in a node. It
does not account for the extra level in the tree caused by inserting a
ProjectRestrictNode.
This was easily solved by reviving more of the pre-DERBY-1644 code in
SetOperatorNode, since that code used to insert a PRN and correctly adjusted
the nesting levels of the RCs. The old code used the method
ResultColumn.getExpressionType(), which does not exist anymore, but I think it
should work fine to use ResultColumn.getType() instead.
This solved the NPE in union.sql. I'll start the regression tests to see if it
has introduced any new problems.
(Updated patch attached as prn3.diff.)
> Cannot insert from EXCEPT/INTERSECT when target table has more columns than
> the source
> --------------------------------------------------------------------------------------
>
> Key: DERBY-4433
> URL: https://issues.apache.org/jira/browse/DERBY-4433
> Project: Derby
> Issue Type: Bug
> Components: SQL
> Affects Versions: 10.6.0.0
> Reporter: Knut Anders Hatlen
> Assignee: Knut Anders Hatlen
> Attachments: prn.diff, prn2.diff, prn3.diff
>
>
> If an INSERT statement takes the rows to insert from an EXCEPT query or an
> INTERSECT query, the statement fails with "Column position 'X' out of range"
> if the target table contains more columns than the result returned from
> EXCEPT or INTERSECT.
> Example:
> ij> create table t (x int, y int);
> 0 rows inserted/updated/deleted
> ij> insert into t(x) select x from t except select x from t;
> ERROR 42X77: Column position '2' is out of range for the query expression.
> ij> insert into t(x) select x from t intersect select x from t;
> ERROR 42X77: Column position '2' is out of range for the query expression.
> The corresponding UNION query works:
> ij> insert into t(x) select x from t union select x from t;
> 0 rows inserted/updated/deleted
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.