You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by Sylvain Leroux <sy...@chicoree.fr> on 2010/02/18 13:02:00 UTC
Updatable cursors and generated columns
Hi,
By reading DERBY-1773 I had a question. Since it is only slightly related with
that JIRA issue, I prefer posting here - rather than interfering with the
corresponding discution.
How /should/ behave an updatable cursor on columns, when there is a generated
column on the table which is not marked FOR UPDATE, but which is dependent of an
updatable column.
Here is an example:
CREATE TABLE T(COL1 INT, COL2 INT, COL3 GENERATED ALWAYS AS (COL1+COL2));
SELECT COL1 FROM T FOR UPDATE OF COL1;
If I update 'COL1' from the above cursor, should COL3 be updated as well? Or
should an error be raised?
Thanks,
Sylvain
--
sylvain@chicoree.fr
http://www.chicoree.fr
Re: Updatable cursors and generated columns
Posted by Sylvain Leroux <sy...@chicoree.fr>.
Reported as DERBY-4559
Knut Anders Hatlen a écrit :
> Sylvain Leroux <sy...@chicoree.fr> writes:
>
>> Hi,
>>
>>
>> By reading DERBY-1773 I had a question. Since it is only slightly
>> related with that JIRA issue, I prefer posting here - rather than
>> interfering with the corresponding discution.
>>
>>
>> How /should/ behave an updatable cursor on columns, when there is a
>> generated column on the table which is not marked FOR UPDATE, but
>> which is dependent of an updatable column.
>>
>> Here is an example:
>> CREATE TABLE T(COL1 INT, COL2 INT, COL3 GENERATED ALWAYS AS (COL1+COL2));
>> SELECT COL1 FROM T FOR UPDATE OF COL1;
>>
>> If I update 'COL1' from the above cursor, should COL3 be updated as
>> well? Or should an error be raised?
>
> Hi Sylvain,
>
> I would say that it should be allowed, and COL3 should automatically be
> updated, similar to what you'd get if you had an update trigger on COL1
> that updated COL3. But I see that that's not the case:
>
> ij> insert into t(col1,col2) values (1,2),(3,4);
> 2 rows inserted/updated/deleted
> ij> get cursor c as 'SELECT COL1 FROM T FOR UPDATE OF COL1';
> ij> next c;
> COL1
> -----------
> 1
> ij> update t set col1 = 5 where current of c;
> ERROR 42X31: Column 'COL3' is not in the FOR UPDATE list of cursor 'C'.
>
> Looks like a bug to me...
>
--
sylvain@chicoree.fr
http://www.chicoree.fr
Re: Updatable cursors and generated columns
Posted by Knut Anders Hatlen <Kn...@Sun.COM>.
Sylvain Leroux <sy...@chicoree.fr> writes:
> Hi,
>
>
> By reading DERBY-1773 I had a question. Since it is only slightly
> related with that JIRA issue, I prefer posting here - rather than
> interfering with the corresponding discution.
>
>
> How /should/ behave an updatable cursor on columns, when there is a
> generated column on the table which is not marked FOR UPDATE, but
> which is dependent of an updatable column.
>
> Here is an example:
> CREATE TABLE T(COL1 INT, COL2 INT, COL3 GENERATED ALWAYS AS (COL1+COL2));
> SELECT COL1 FROM T FOR UPDATE OF COL1;
>
> If I update 'COL1' from the above cursor, should COL3 be updated as
> well? Or should an error be raised?
Hi Sylvain,
I would say that it should be allowed, and COL3 should automatically be
updated, similar to what you'd get if you had an update trigger on COL1
that updated COL3. But I see that that's not the case:
ij> insert into t(col1,col2) values (1,2),(3,4);
2 rows inserted/updated/deleted
ij> get cursor c as 'SELECT COL1 FROM T FOR UPDATE OF COL1';
ij> next c;
COL1
-----------
1
ij> update t set col1 = 5 where current of c;
ERROR 42X31: Column 'COL3' is not in the FOR UPDATE list of cursor 'C'.
Looks like a bug to me...
--
Knut Anders