Lukas Eder created DERBY-6948: --------------------------------- Summary: INSERT .. SELECT produces NULL for getGeneratedKeys() Key: DERBY-6948 URL: https://issues.apache.org/jira/browse/DERBY-6948 Project: Derby Issue Type: Bug Components: JDBC Affects Versions: 10.13.1.1 Reporter: Lukas Eder
The following code: {code} import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.Statement; import org.apache.derby.jdbc.EmbeddedDataSource; public class Derby { public static void main(String[] args) throws Exception { EmbeddedDataSource ds; ds = new EmbeddedDataSource(); ds.setDatabaseName("memory:test;create=true"); try (Connection con = ds.getConnection(); Statement s = con.createStatement()) { s.execute( "CREATE TABLE test (" + "id INT PRIMARY KEY NOT NULL GENERATED ALWAYS AS IDENTITY," + "name VARCHAR(255))"); try (PreparedStatement ps = con.prepareStatement("insert into test (name) select 'a' from sysibm.sysdummy1", Statement.RETURN_GENERATED_KEYS)) { ps.executeUpdate(); try (ResultSet rs = ps.getGeneratedKeys()) { while (rs.next()) System.out.println("GEN_ID: " + rs.getObject(1)); } } try (PreparedStatement ps = con.prepareStatement("insert into test (name) select 'a' from sysibm.sysdummy1", Statement.RETURN_GENERATED_KEYS)) { ps.executeUpdate(); try (ResultSet rs = ps.getGeneratedKeys()) { while (rs.next()) System.out.println("GEN_ID: " + rs.getObject(1)); } } try (ResultSet rs = s.executeQuery("select id from test")) { while (rs.next()) System.out.println(" ID: " + rs.getObject(1)); } } } } {code} Produces this output: {code} GEN_ID: null GEN_ID: null ID: 1 ID: 2 ID: 3 {code} The expected output would be: {code} GEN_ID: 1 GEN_ID: 2 GEN_ID: 3 ID: 1 ID: 2 ID: 3 {code} -- This message was sent by Atlassian JIRA (v6.4.14#64029)