[
https://issues.apache.org/jira/browse/DERBY-6994?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Rick Hillegas reassigned DERBY-6994:
------------------------------------
Assignee: (was: Rick Hillegas)
> Only last generated key in batch update is returned
> ---------------------------------------------------
>
> Key: DERBY-6994
> URL: https://issues.apache.org/jira/browse/DERBY-6994
> Project: Derby
> Issue Type: Bug
> Affects Versions: 10.14.1.0
> Reporter: Philippe Marschall
> Priority: Major
> Attachments: DerbyGeneratedKeysTest.java
>
>
> When a batch update is executed only the generated keys of the last update
> are returned. Consider the following code.
> {code}
> EmbeddedDataSource derbyDataSource = new EmbeddedDataSource();
> derbyDataSource.setDatabaseName("memory:test");
> derbyDataSource.setCreateDatabase("create");
> try (Connection connection = derbyDataSource.getConnection()) {
> try (Statement statement = connection.createStatement()) {
> statement.execute("CREATE TABLE test_table ("
> + "id INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY
> (START WITH 1, INCREMENT BY 1) PRIMARY KEY,"
> + "test_value INTEGER"
> + ")");
> }
> try (PreparedStatement preparedStatement = connection.prepareStatement(
> "INSERT INTO test_table(test_value) VALUES (?)",
> Statement.RETURN_GENERATED_KEYS)) {
> preparedStatement.setObject(1, Integer.valueOf(42));
> preparedStatement.addBatch();
> preparedStatement.setObject(1, Integer.valueOf(43));
> preparedStatement.addBatch();
> int[] updateCount = preparedStatement.executeBatch();
> assertArrayEquals(new int[] {1, 1}, updateCount, "update count");
> List<Integer> generatedIntegers = new ArrayList<>(2);
> try (ResultSet generatedKeys = preparedStatement.getGeneratedKeys()) {
> while (generatedKeys.next()) {
> generatedIntegers.add(generatedKeys.getObject(1, Integer.class));
> }
> }
> assertEquals(Arrays.asList(1, 2), generatedIntegers, "generated
> keys");
> }
> }
> {code}
>
> two updates are performed in a single batch. The first generates the key
> {{1}} and the second generates the key {{2}} but only the key {{2}} is
> returned.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)