[
https://issues.apache.org/jira/browse/DERBY-3609?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Knut Anders Hatlen updated DERBY-3609:
--------------------------------------
Attachment: generated-keys.diff
It turns out Derby does actually collect all generated keys during inserts,
also for multi-row inserts. It just doesn't expose theses values and returns
the result of calling VALUES IDENTITY_VAL_LOCAL().
The attached patch (generated-keys.diff) shows how
EmbedStatement.getGeneratedKeys() can be made to return the collected keys. In
my small experiments this appears to make getGeneratedKeys() work for multi-row
inserts.
> Wrong functionality of auto-generated keys support
> --------------------------------------------------
>
> Key: DERBY-3609
> URL: https://issues.apache.org/jira/browse/DERBY-3609
> Project: Derby
> Issue Type: Bug
> Components: JDBC
> Affects Versions: 10.3.2.1
> Environment: N/A
> Reporter: Oleksandr Alesinskyy
> Labels: derby_triage10_11
> Attachments: generated-keys.diff, TestGeneratedKeys.java
>
>
> Currently support for autogeneration key retrieval in JDBC driver
> (java.sql.Statement) relies on IDENTITY_VAL_LOCAL function, which means that
> for multi-row INSERT... VALUES statements as well as for INSERT...AS SELECT
> statement wrong result are returned (key generated of last executed
> single-row INSERT...VALUES statement or NULL otherwise). While this
> functionality is documented in the Reference description of
> IDENTITY_VAL_LOCAL it is not so clearly documented in "autogenerated keys"
> subchapter of JDBC 3.0 Features (the only vague hint is "Calling
> ResultSet.getMetaData on the ResultSet object returned by getGeneratedKeys
> produces a ResultSetMetaData object that is similar to that returned by
> IDENTITY_VAL_LOCAL.").
> Moreover, as far as I understant it diverge from JDBC specification. IMHO or
> this functionality shal lbe implemented completely, or exception shall be
> thrown if for given statement functionality is not supported (e.g. "Feature
> not supported").
--
This message was sent by Atlassian JIRA
(v6.1#6144)