From 72b5751ca1365666ccdadd95753dee64ea7d7900 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Mon, 15 Mar 2021 17:30:38 +0100 Subject: [PATCH] [jOOQ/jOOQ#11641] Make sure generated switches have braces when needed --- jOOQ/src/main/java/org/jooq/impl/Ceil.java | 3 ++- jOOQ/src/main/java/org/jooq/impl/Exp.java | 1 + jOOQ/src/main/java/org/jooq/impl/Floor.java | 3 ++- jOOQ/src/main/java/org/jooq/impl/Power.java | 1 + jOOQ/src/main/java/org/jooq/impl/Rand.java | 3 +++ jOOQ/src/main/java/org/jooq/impl/Repeat.java | 3 ++- jOOQ/src/main/java/org/jooq/impl/Space.java | 3 ++- jOOQ/src/main/java/org/jooq/impl/SplitPart.java | 4 +++- jOOQ/src/main/java/org/jooq/impl/Sqrt.java | 1 + 9 files changed, 17 insertions(+), 5 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/Ceil.java b/jOOQ/src/main/java/org/jooq/impl/Ceil.java index 5c8a50c511..3133945acc 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Ceil.java +++ b/jOOQ/src/main/java/org/jooq/impl/Ceil.java @@ -93,10 +93,11 @@ extends - case SQLITE: + case SQLITE: { // [#8275] Improved emulation for SQLite ctx.sql('(').visit(value.cast(BIGINT)).sql(" + (").visit(value).sql(" > ").visit(value.cast(BIGINT)).sql("))"); break; + } diff --git a/jOOQ/src/main/java/org/jooq/impl/Exp.java b/jOOQ/src/main/java/org/jooq/impl/Exp.java index d67e9e771e..82b404d0af 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Exp.java +++ b/jOOQ/src/main/java/org/jooq/impl/Exp.java @@ -98,6 +98,7 @@ extends + default: ctx.visit(function(N_EXP, getDataType(), value)); break; diff --git a/jOOQ/src/main/java/org/jooq/impl/Floor.java b/jOOQ/src/main/java/org/jooq/impl/Floor.java index 8d189e9c91..d84647b18e 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Floor.java +++ b/jOOQ/src/main/java/org/jooq/impl/Floor.java @@ -88,10 +88,11 @@ extends public final void accept(Context ctx) { switch (ctx.family()) { - case SQLITE: + case SQLITE: { // [#8275] Improved emulation for SQLite ctx.sql('(').visit(value.cast(BIGINT)).sql(" - (").visit(value).sql(" < ").visit(value.cast(BIGINT)).sql("))"); break; + } default: ctx.visit(function(N_FLOOR, getDataType(), value)); diff --git a/jOOQ/src/main/java/org/jooq/impl/Power.java b/jOOQ/src/main/java/org/jooq/impl/Power.java index 3b9d9e17ae..9e55a6c8d6 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Power.java +++ b/jOOQ/src/main/java/org/jooq/impl/Power.java @@ -97,6 +97,7 @@ extends + case DERBY: case SQLITE: ctx.visit(DSL.exp(imul(DSL.ln(value), exponent))); diff --git a/jOOQ/src/main/java/org/jooq/impl/Rand.java b/jOOQ/src/main/java/org/jooq/impl/Rand.java index 79097ea435..c4797e96c2 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Rand.java +++ b/jOOQ/src/main/java/org/jooq/impl/Rand.java @@ -99,6 +99,9 @@ extends + + + diff --git a/jOOQ/src/main/java/org/jooq/impl/Repeat.java b/jOOQ/src/main/java/org/jooq/impl/Repeat.java index bd104b2702..81e394ff35 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Repeat.java +++ b/jOOQ/src/main/java/org/jooq/impl/Repeat.java @@ -100,13 +100,14 @@ extends ctx.visit(DSL.rpad(string, imul(DSL.length(string), count), string)); break; - case SQLITE: + case SQLITE: { // Emulation of REPEAT() for SQLite currently cannot be achieved // using RPAD() above, as RPAD() expects characters, not strings // Another option is documented here, though: // https://stackoverflow.com/a/51792334/521799 ctx.visit(N_REPLACE).sql('(').visit(N_HEX).sql('(').visit(N_ZEROBLOB).sql('(').visit(count).sql(")), '00', ").visit(string).sql(')'); break; + } diff --git a/jOOQ/src/main/java/org/jooq/impl/Space.java b/jOOQ/src/main/java/org/jooq/impl/Space.java index a1115dfb90..747d97139f 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Space.java +++ b/jOOQ/src/main/java/org/jooq/impl/Space.java @@ -94,10 +94,11 @@ extends case FIREBIRD: - case SQLITE: + case SQLITE: { // [#10135] Avoid REPEAT() emulation that is too complicated for SPACE(N) ctx.visit(DSL.rpad(DSL.inline(' '), count)); break; + } diff --git a/jOOQ/src/main/java/org/jooq/impl/SplitPart.java b/jOOQ/src/main/java/org/jooq/impl/SplitPart.java index a99f3ef0c5..6a9db7ef2a 100644 --- a/jOOQ/src/main/java/org/jooq/impl/SplitPart.java +++ b/jOOQ/src/main/java/org/jooq/impl/SplitPart.java @@ -107,8 +107,9 @@ extends + case MARIADB: - case MYSQL: + case MYSQL: { Field rS = DSL.field(name("s"), String.class); Field rN = DSL.field(name("n"), int.class); Field rD = DSL.field(name("d"), String.class); @@ -133,6 +134,7 @@ extends withRecursive(s1, s2).select(DSL.coalesce(DSL.max(DSL.field(name("x"))), inline(""))).from(s2).where(s2.field("n").eq((Field) n)) ); break; + } default: ctx.visit(function(N_SPLIT_PART, getDataType(), string, delimiter, n)); diff --git a/jOOQ/src/main/java/org/jooq/impl/Sqrt.java b/jOOQ/src/main/java/org/jooq/impl/Sqrt.java index b5b39a7ea0..6ee6ecabab 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Sqrt.java +++ b/jOOQ/src/main/java/org/jooq/impl/Sqrt.java @@ -102,6 +102,7 @@ extends + case SQLITE: ctx.visit(DSL.power(value, inline(0.5))); break;