diff --git a/jOOQ-test/src/test/java/org/jooq/test/SQLServerTest.java b/jOOQ-test/src/test/java/org/jooq/test/SQLServerTest.java index 81efe9012c..b51bf22257 100644 --- a/jOOQ-test/src/test/java/org/jooq/test/SQLServerTest.java +++ b/jOOQ-test/src/test/java/org/jooq/test/SQLServerTest.java @@ -1142,6 +1142,45 @@ xxxxxx xxxxx xxxxxxxxxxxxx xxxxxxx xxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxx xxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx x + xxxxx + xxxxxx xxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx x + xxxxxxxxx xxx xxxx x xxxxxx xxxx + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + + xxxxxxxxxx xxxxxx x xxxxxxxxx + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + + xxxxxxxxxxxxxxxxxxxxxxxxx xx x xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + xxxxxxxxxxxxxxxxxxxxxxxxx xx x xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + + xx xxxxxxx xxxxx xxxxxxx xx xxxxx + xxxxxxxxxxxxx + xxxxxxxxxxxxxxxx + xxxxxxxxxxxxx + xxxxxxxxxxxxxxxx + xxxxxxxxxxxxxx + + xxxxxxxxxxxxx + xxxxxxxxxxxxxxxx + xxxxxxxxxxxxx + xxxxxxxxxxxxxxxx + xxxxxxxxxxxxxx + + xxxxx xxxxxx x xxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxx + + xxxxxxxxxxxxxxx xxxxxxxxxxx + xxxxxxxxxxxxxxx xxxxxxxxxxx + xxxxxxxxxxxxxxxxxxxxxx xxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + + xxxxxxxxxxxxxxx + xxxxxxxxxxxxxxx + xxxxxx x xxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxx + + xxxxxxxxxxxxxxx xxxxxxxxxxx + xxxxxxxxxxxxxxx xxxxxxxxxxx + xxxxxxxxxxxxxxxxxxxxxxx xxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + x + xxxxx xxxxxx xxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx x xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx diff --git a/jOOQ/src/main/java/org/jooq/impl/BatchCRUD.java b/jOOQ/src/main/java/org/jooq/impl/BatchCRUD.java index 326b6e8f35..872b457554 100644 --- a/jOOQ/src/main/java/org/jooq/impl/BatchCRUD.java +++ b/jOOQ/src/main/java/org/jooq/impl/BatchCRUD.java @@ -227,6 +227,12 @@ class BatchCRUD implements Batch { // 2. Stored records should be marked as unchanged for (TableRecord record : records) { record.changed(action == Action.DELETE); + + // [#3362] If new records (fetched = false) are batch-stored twice in a row, the second + // batch-store needs to generate an UPDATE statement. + if (record instanceof AbstractRecord) { + ((AbstractRecord) record).fetched = action != Action.DELETE; + } } }