[ 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)