From 0ddbc747987c7f7f9fa73229b18fb2bf348a3f87 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Mon, 9 Jan 2023 13:22:12 +0100 Subject: [PATCH] [jOOQ/jOOQ#7106] More transaction statement support (WIP) This includes: - Teradata implementation --- jOOQ/src/main/java/org/jooq/impl/AbstractQuery.java | 1 + jOOQ/src/main/java/org/jooq/impl/Commit.java | 13 ++++++++++++- jOOQ/src/main/java/org/jooq/impl/ParserImpl.java | 4 ++++ .../main/java/org/jooq/impl/StartTransaction.java | 1 + 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractQuery.java b/jOOQ/src/main/java/org/jooq/impl/AbstractQuery.java index 19a38faa05..8001f91804 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractQuery.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractQuery.java @@ -52,6 +52,7 @@ import static org.jooq.SQLDialect.HSQLDB; // ... // ... // ... +// ... import static org.jooq.conf.ParamType.INLINED; import static org.jooq.conf.SettingsTools.executePreparedStatements; import static org.jooq.conf.SettingsTools.getParamType; diff --git a/jOOQ/src/main/java/org/jooq/impl/Commit.java b/jOOQ/src/main/java/org/jooq/impl/Commit.java index 8f2af976be..276856ed89 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Commit.java +++ b/jOOQ/src/main/java/org/jooq/impl/Commit.java @@ -82,6 +82,17 @@ implements @Override public final void accept(Context ctx) { - ctx.visit(K_COMMIT); + switch (ctx.family()) { + + + + + + + + default: + ctx.visit(K_COMMIT); + break; + } } } diff --git a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java index a5b7569894..1e75ba5674 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java @@ -1105,6 +1105,8 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { case 'B': if (!parseResultQuery && peekKeyword("BEGIN WORK", "BEGIN TRANSACTION", "BEGIN TRAN")) return result = parseStartTransaction(); + else if (!parseResultQuery && parseKeywordIf("BT")) + return dsl.startTransaction(); else if (!parseResultQuery && peekKeyword("BEGIN")) { languageContext = previous; return result = parseBlock(false); @@ -1155,6 +1157,8 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { ; + else if (!parseResultQuery && parseKeywordIf("ET", "END TRANSACTION")) + return dsl.commit(); break; diff --git a/jOOQ/src/main/java/org/jooq/impl/StartTransaction.java b/jOOQ/src/main/java/org/jooq/impl/StartTransaction.java index e84638225b..496b4c0eb8 100644 --- a/jOOQ/src/main/java/org/jooq/impl/StartTransaction.java +++ b/jOOQ/src/main/java/org/jooq/impl/StartTransaction.java @@ -119,6 +119,7 @@ implements + case H2: case SQLITE: { ctx.visit(K_BEGIN).sql(' ').visit(K_TRANSACTION);