From 2c3908a6dc948b867f4078f417c32b5c3df445e3 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Thu, 10 Jun 2021 11:19:06 +0200 Subject: [PATCH] [jOOQ/jOOQ#10437] Get HANA dialect up to date - STRING_AGG() can't be used as window function - Check also Connection.rollback(Savepoint) to see if SP's are supported - Savepoints are now supported --- .../jooq/impl/DefaultTransactionProvider.java | 36 +++++-------------- 1 file changed, 9 insertions(+), 27 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultTransactionProvider.java b/jOOQ/src/main/java/org/jooq/impl/DefaultTransactionProvider.java index c0628e9c1d..285e90ed6e 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultTransactionProvider.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultTransactionProvider.java @@ -72,16 +72,10 @@ import org.jooq.exception.DataAccessException; public class DefaultTransactionProvider implements TransactionProvider { /** - * This {@link Savepoint} serves as a marker for top level - * transactions in dialects that do not support Savepoints. + * This {@link Savepoint} serves as a marker for top level transactions if + * {@link #nested()} transactions are deactivated. */ - private static final Savepoint UNSUPPORTED_SAVEPOINT = new DefaultSavepoint(); - - /** - * This {@link Savepoint} serves as a marker for top level - * transactions if {@link #nested()} transactions are deactivated. - */ - private static final Savepoint IGNORED_SAVEPOINT = new DefaultSavepoint(); + private static final Savepoint IGNORED_SAVEPOINT = new DefaultSavepoint(); private final ConnectionProvider connectionProvider; private final boolean nested; @@ -150,25 +144,14 @@ public class DefaultTransactionProvider implements TransactionProvider { if (topLevel) brace(ctx.configuration(), true); - Savepoint savepoint = setSavepoint(ctx.configuration(), topLevel); - - if (savepoint == UNSUPPORTED_SAVEPOINT && !topLevel) - throw new DataAccessException("Cannot nest transactions because Savepoints are not supported"); - - savepoints.push(savepoint); + savepoints.push(setSavepoint(ctx.configuration(), topLevel)); } private final Savepoint setSavepoint(Configuration configuration, boolean topLevel) { if (topLevel || !nested()) return IGNORED_SAVEPOINT; - - switch (configuration.family()) { - - case CUBRID: - return UNSUPPORTED_SAVEPOINT; - default: - return connection(configuration).setSavepoint(); - } + else + return connection(configuration).setSavepoint(); } @Override @@ -177,7 +160,7 @@ public class DefaultTransactionProvider implements TransactionProvider { Savepoint savepoint = savepoints.pop(); // [#3489] Explicitly release savepoints prior to commit - if (savepoint != null && savepoint != UNSUPPORTED_SAVEPOINT && savepoint != IGNORED_SAVEPOINT) + if (savepoint != null && savepoint != IGNORED_SAVEPOINT) try { connection(ctx.configuration()).releaseSavepoint(savepoint); } @@ -207,7 +190,7 @@ public class DefaultTransactionProvider implements TransactionProvider { savepoint = savepoints.pop(); try { - if (savepoint == null || savepoint == UNSUPPORTED_SAVEPOINT) { + if (savepoint == null) { connection(ctx.configuration()).rollback(); } @@ -217,9 +200,8 @@ public class DefaultTransactionProvider implements TransactionProvider { if (savepoints.isEmpty()) connection(ctx.configuration()).rollback(); } - else { + else connection(ctx.configuration()).rollback(savepoint); - } } finally {