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] Commented: (DERBY-4433) Cannot insert from EXCEPT/INTERSECT when target table has more columns than the source
Date Tue, 03 Nov 2009 21:31:32 GMT

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


Mime
View raw message