Hi Satheesh,
Thanx for committing!
I just wanted to point out that this patch also fixes DERBY-439.
This was the test case pointed out which was returning null. This
returns the correct value now.
ij> connect 'jdbc:derby:mydb;create=true';
ij> CREATE TABLE MYTABLE
(
MYTABLE_ID BIGINT NOT NULL generated always as identity (start with 1)
) ;
0 rows inserted/updated/deleted
ij> INSERT INTO MYTABLE VALUES (DEFAULT);
1 row inserted/updated/deleted
ij> VALUES IDENTITY_VAL_LOCAL();
1
-------------------------------
1
1 row selected
Can you please update this JIRA entry also? If you want a test case to
be checked in for this fix I can provide one.
thanx
V.Narayanan
Satheesh Bandaram wrote:
> This patch is committed. Thanks Narayanan for the patch and Rick for the
> reviews.
>
> Satheesh
>
> Sending
> java\engine\org\apache\derby\impl\sql\execute\InsertResultSet.java
> Sending
> java\testing\org\apache\derbyTesting\functionTests\master\DerbyNet\autoGeneratedJdbc30.out
> Sending
> java\testing\org\apache\derbyTesting\functionTests\master\DerbyNetClient\autoGeneratedJdbc30.out
> Sending
> java\testing\org\apache\derbyTesting\functionTests\master\autoGeneratedJdbc30.out
> Sending
> java\testing\org\apache\derbyTesting\functionTests\master\autoincrement.out
> Transmitting file data .....
> Committed revision 267331.
>
> V.Narayanan (JIRA) wrote:
>
>> [ http://issues.apache.org/jira/browse/DERBY-353?page=all ]
>>
>>V.Narayanan updated DERBY-353:
>>------------------------------
>>
>> Attachment: patch353.diff
>>
>>Hi,
>>As Rick has pointed out the problem was because of a missed cannon only. The patch
now includes the missed changes.
>>Narayanan
>>
>>
>>
>>>It is desirable to have IDENTITY_VAL_LOCAL() function return last recent user
specified value or system generated value for BY DEFAULT identity columns.
>>>--------------------------------------------------------------------------------------------------------------------------------------------------------
>>>
>>> Key: DERBY-353
>>> URL: http://issues.apache.org/jira/browse/DERBY-353
>>> Project: Derby
>>> Type: Bug
>>> Components: SQL
>>> Versions: 10.1.1.0
>>> Environment: Generic
>>> Reporter: Satheesh Bandaram
>>> Attachments: patch353.diff
>>>
>>>Derby was recently enhanced to support BY DEFAULT identity column. While the behavior
of this feature is not documented yet, I think, it is desirable for IDENTITY_VAL_LOCAL() function,
that is used to retrieve last single statement insert value for identity column, to return
user specified value for the default column.
>>>For GENERATED ALWAYS identity columns, this issue doesn't apply, since users can't
provide a value. But for GENERATED BY DEFAULT identity columns, users can optionally specify
a value. IDENTITY_VAL_LOCAL() function should return this value. Derby currently doesn't support
this behavior.
>>>ij> create table tauto ( i int generated by default as identity, j int, k int);
>>>0 rows inserted/updated/deleted
>>>ij> insert into tauto (j,k) values (1,1);
>>>1 row inserted/updated/deleted
>>>ij> values identity_val_local();
>>>1
>>>-------------------------------
>>>1
>>>1 row selected
>>>ij> insert into tauto (j,k) values (1,1);
>>>1 row inserted/updated/deleted
>>>ij> values identity_val_local();
>>>1
>>>-------------------------------
>>>2
>>>1 row selected
>>>ij> insert into tauto values (5,1,1);
>>>1 row inserted/updated/deleted
>>>ij> values identity_val_local();
>>>1
>>>-------------------------------
>>>2 <<<<<<<<<<<<<<=============
This needs be '5'
>>>1 row selected
>>>ij> select * from tauto;
>>>I |J |K
>>>-----------------------------------
>>>1 |1 |1
>>>2 |1 |1
>>>5 |1 |1
>>>3 rows selected
>>>
>>>
>>
>>
>>
|