From 691859ee4054c8d401719b24e5b099b86e23159b Mon Sep 17 00:00:00 2001 From: lukaseder Date: Wed, 3 May 2017 16:02:12 +0200 Subject: [PATCH] [#6171] DefaultTransactionProvider should not roll back to savepoint in top transaction --- .../org/jooq/impl/DefaultTransactionProvider.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultTransactionProvider.java b/jOOQ/src/main/java/org/jooq/impl/DefaultTransactionProvider.java index 9ca7f45a80..b20d6fc2d4 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultTransactionProvider.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultTransactionProvider.java @@ -142,19 +142,20 @@ public class DefaultTransactionProvider implements TransactionProvider { Deque savepoints = savepoints(ctx.configuration()); // This is the top-level transaction - if (savepoints.isEmpty()) + boolean topLevel = savepoints.isEmpty(); + if (topLevel) brace(ctx.configuration(), true); - Savepoint savepoint = setSavepoint(ctx.configuration()); + Savepoint savepoint = setSavepoint(ctx.configuration(), topLevel); - if (savepoint == UNSUPPORTED_SAVEPOINT && !savepoints.isEmpty()) + if (savepoint == UNSUPPORTED_SAVEPOINT && !topLevel) throw new DataAccessException("Cannot nest transactions because Savepoints are not supported"); savepoints.push(savepoint); } - private final Savepoint setSavepoint(Configuration configuration) { - if (!nested()) + private final Savepoint setSavepoint(Configuration configuration, boolean topLevel) { + if (topLevel || !nested()) return IGNORED_SAVEPOINT; switch (configuration.family()) {