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-4433) Cannot insert from EXCEPT/INTERSECT when target table has more columns than the source
Date Thu, 19 Nov 2009 10:03:41 GMT

     [ https://issues.apache.org/jira/browse/DERBY-4433?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Knut Anders Hatlen updated DERBY-4433:
--------------------------------------

    Attachment: prn2.diff

I'm not so sure anymore that failure (1) is an instance of DERBY-4448. The fix turned out
to be simple, though. Just don't call forbidOverrides() on the top-level UnionNode if it's
a table constructor. forbidOverrides() is called on each child RowResultSetNode in the table
constructor, so the check is not needed on the UnionNode. The current code on trunk also skips
the call to forbidOverrides() on UnionNodes that are table constructors (or actually, it skips
it for all UnionNodes).

The attached prn2.diff includes this change and fixes failure (1). Failure (2) is still seen,
though.

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