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

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

Before DERBY-1644, a PRN was inserted on top of SetOperatorNodes. Perhaps 
reintroducing parts of the old code would help. The case DERBY-1644 solved by 
removing the PRN, was a UnionNode that represented a multi-row VALUES clause. 
I'll see if inserting a PRN for all SetOperatorNodes, except UnionNodes whose 
tableConstructor() method returns true, solves this issue and at the same time 
doesn't break the DERBY-1644 cases. If that works, the approach could be 
extended to other node types as well, which may be helpful for DERBY-4 (both 
removing the need for OrderByColumn.findNewPos() and solving the problem with 
early evaluation of identity columns).

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

Reply via email to