[jOOQ/jOOQ#7106] Add support for procedural transaction statements - WIP

This includes:
- Partial support for Db2, Firebird, SQL Server
This commit is contained in:
Lukas Eder 2023-01-03 19:48:11 +01:00
parent a90243a275
commit bb7a8b4c3b
5 changed files with 63 additions and 5 deletions

View File

@ -371,6 +371,7 @@ final class Keywords {
static final Keyword K_ROWS_FROM = keyword("rows from");
static final Keyword K_ROWS_ONLY = keyword("rows only");
static final Keyword K_ROWS_WITH_TIES = keyword("rows with ties");
static final Keyword K_SAVE = keyword("save");
static final Keyword K_SAVEPOINT = keyword("savepoint");
static final Keyword K_SCHEMA = keyword("schema");
static final Keyword K_SCN = keyword("scn");

View File

@ -89,7 +89,21 @@ implements
@Override
public final void accept(Context<?> ctx) {
ctx.visit(K_RELEASE).sql(' ').visit(K_SAVEPOINT).sql(' ').visit(name);
switch (ctx.family()) {
default:
ctx.visit(K_RELEASE).sql(' ').visit(K_SAVEPOINT).sql(' ').visit(name);
break;
}
}
// -------------------------------------------------------------------------

View File

@ -114,10 +114,25 @@ implements
@Override
public final void accept(Context<?> ctx) {
ctx.visit(K_ROLLBACK);
switch (ctx.family()) {
if (toSavepoint != null)
ctx.sql(' ').visit(K_TO).sql(' ').visit(K_SAVEPOINT).sql(' ').visit(toSavepoint);
default:
ctx.visit(K_ROLLBACK);
if (toSavepoint != null)
ctx.sql(' ').visit(K_TO).sql(' ').visit(K_SAVEPOINT).sql(' ').visit(toSavepoint);
break;
}
}
// -------------------------------------------------------------------------

View File

@ -89,7 +89,19 @@ implements
@Override
public final void accept(Context<?> ctx) {
ctx.visit(K_SAVEPOINT).sql(' ').visit(name);
switch (ctx.family()) {
default:
ctx.visit(K_SAVEPOINT).sql(' ').visit(name);
break;
}
}
// -------------------------------------------------------------------------

View File

@ -92,6 +92,22 @@ implements
break;
}
case FIREBIRD: {
ctx.visit(K_SET).sql(' ').visit(K_TRANSACTION).sql(' ').visit(K_READ).sql(' ').visit(K_WRITE);
break;
}
case H2: {
ctx.visit(K_BEGIN).sql(' ').visit(K_TRANSACTION);
break;