diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultTransactionProvider.java b/jOOQ/src/main/java/org/jooq/impl/DefaultTransactionProvider.java index 1c495a4deb..ab3c88c5c9 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultTransactionProvider.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultTransactionProvider.java @@ -122,7 +122,11 @@ public class DefaultTransactionProvider implements TransactionProvider { @Override public final void commit(TransactionContext ctx) { Stack savepoints = savepoints(ctx.configuration()); - savepoints.pop(); + Savepoint savepoint = savepoints.pop(); + + // [#3489] Explicitly release savepoints prior to commit + if (savepoint != null) + connection(ctx.configuration()).releaseSavepoint(savepoint); // This is the top-level transaction if (savepoints.isEmpty()) {