[ 
https://issues.apache.org/jira/browse/DERBY-6952?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16097090#comment-16097090
 ] 

Bryan Pendleton commented on DERBY-6952:
----------------------------------------

I'm not sure what 10.13 change might have caused this. Thanks very much for the
concise repro program; it should make it possible to bisect the source changes 
and
determine where the behavior change arose.

I agree with the other commenters about the general state of of this feature in 
Derby,
and I also think that, in the particular case of your repro program, no new 
values
for the column 'ID' are generated, so if anything it seems to me that the 
returned
generated keys should have been an empty set, not "0" nor "1"; see DERBY-6849
for a similar  though not identical case.

> Regression on Statement.getGeneratedKeys() on UPDATE statements
> ---------------------------------------------------------------
>
>                 Key: DERBY-6952
>                 URL: https://issues.apache.org/jira/browse/DERBY-6952
>             Project: Derby
>          Issue Type: Bug
>          Components: JDBC
>    Affects Versions: 10.13.1.1
>            Reporter: Lukas Eder
>
> Consider this program:
> {code}
> import java.sql.Connection;
> import java.sql.PreparedStatement;
> import java.sql.ResultSet;
> import java.sql.Statement;
> import java.util.Properties;
> import org.apache.derby.jdbc.EmbeddedDriver;
> public class Derby {
>     public static void main(String[] args) throws Exception {
>         try (Connection c1 = new 
> EmbeddedDriver().connect("jdbc:derby:memory:test;create=true", new 
> Properties());
>              Statement s = c1.createStatement()) {
>             s.execute(
>                 "CREATE TABLE test ("
>                     + "id INT PRIMARY KEY NOT NULL GENERATED ALWAYS AS 
> IDENTITY,"
>                     + "val INT)");
>             try {
>                 s.executeUpdate("INSERT INTO test (val) VALUES (1)");
>                 try (PreparedStatement p = c1.prepareStatement("UPDATE test 
> SET val = 2 WHERE id = 1", Statement.RETURN_GENERATED_KEYS)) {
>                     p.executeUpdate();
>                     try (ResultSet rs = p.getGeneratedKeys()) {
>                         while (rs.next())
>                             System.out.println(rs.getString(1));
>                     }
>                 }
>             }
>             finally {
>                 s.execute("DROP TABLE test");
>             }
>         }
>     }
> }
> {code}
> Running this with Derby version 10.12.1.1 yields
> 1
> With 10.13.1.1, it yields:
> 0
> I'm not sure if this is (supposed to be) working at all, but the change is 
> certainly a bit confusing.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to