From 74c06bf825be127eac8eb445aa73d43ac1db3724 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Mon, 21 Sep 2020 22:40:34 +0200 Subject: [PATCH] [jOOQ/jOOQ#10660] H2 supports SYSTEM_RANGE --- .../main/java/org/jooq/impl/GenerateSeries.java | 16 ++++++++++++---- jOOQ/src/main/java/org/jooq/impl/Names.java | 1 + 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/GenerateSeries.java b/jOOQ/src/main/java/org/jooq/impl/GenerateSeries.java index aedd1e1ee8..39364e7302 100644 --- a/jOOQ/src/main/java/org/jooq/impl/GenerateSeries.java +++ b/jOOQ/src/main/java/org/jooq/impl/GenerateSeries.java @@ -41,10 +41,10 @@ import static org.jooq.impl.DSL.inline; // ... import static org.jooq.impl.DSL.one; import static org.jooq.impl.DSL.select; -import static org.jooq.impl.DSL.table; import static org.jooq.impl.DSL.unquotedName; import static org.jooq.impl.DSL.withRecursive; import static org.jooq.impl.Names.N_GENERATE_SERIES; +import static org.jooq.impl.Names.N_SYSTEM_RANGE; import static org.jooq.impl.SQLDataType.INTEGER; import static org.jooq.impl.Tools.visitSubquery; @@ -110,6 +110,15 @@ final class GenerateSeries extends AbstractTable> { break; } + case H2: { + if (step == null) + ctx.visit(N_SYSTEM_RANGE).sql('(').visit(from).sql(", ").visit(to).sql(')'); + else + ctx.visit(N_SYSTEM_RANGE).sql('(').visit(from).sql(", ").visit(to).sql(", ").visit(step).sql(')'); + + break; + } + @@ -133,13 +142,12 @@ final class GenerateSeries extends AbstractTable> { - case H2: case POSTGRES: default: { if (step == null) - ctx.visit(table("{generate_series}({0}, {1})", from, to)); + ctx.visit(N_GENERATE_SERIES).sql('(').visit(from).sql(", ").visit(to).sql(')'); else - ctx.visit(table("{generate_series}({0}, {1}, {2})", from, to, step)); + ctx.visit(N_GENERATE_SERIES).sql('(').visit(from).sql(", ").visit(to).sql(", ").visit(step).sql(')'); } } } diff --git a/jOOQ/src/main/java/org/jooq/impl/Names.java b/jOOQ/src/main/java/org/jooq/impl/Names.java index f11f0c5ae7..fd1f6916e7 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Names.java +++ b/jOOQ/src/main/java/org/jooq/impl/Names.java @@ -230,6 +230,7 @@ final class Names { static final Name N_SUBSTR = unquotedName("substr"); static final Name N_SUBSTRING = unquotedName("substring"); static final Name N_SYSDATE = unquotedName("sysdate"); + static final Name N_SYSTEM_RANGE = unquotedName("system_range"); static final Name N_SYSTEM_TIME = unquotedName("system_time"); static final Name N_T = unquotedName("t"); static final Name N_TANH = unquotedName("tanh");