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