From 0ab2a9601d98050bf74afd8a3e7d5f1369df09cb Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Fri, 25 Nov 2022 14:47:43 +0100 Subject: [PATCH] [jOOQ/jOOQ#8630] Support MySQL GROUPING() function --- jOOQ/src/main/java/org/jooq/impl/DSL.java | 2 +- jOOQ/src/main/java/org/jooq/impl/Rollup.java | 28 +++++++++++--------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/DSL.java b/jOOQ/src/main/java/org/jooq/impl/DSL.java index 4f64e17e8a..5685b2e1c2 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DSL.java +++ b/jOOQ/src/main/java/org/jooq/impl/DSL.java @@ -25757,7 +25757,7 @@ public class DSL { * @see #rollup(Field...) */ @NotNull - @Support({ POSTGRES }) + @Support({ MARIADB, MYSQL, POSTGRES }) public static Field grouping(Field field) { return function("grouping", Integer.class, field); } diff --git a/jOOQ/src/main/java/org/jooq/impl/Rollup.java b/jOOQ/src/main/java/org/jooq/impl/Rollup.java index d51bab61e0..c7fd084ba1 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Rollup.java +++ b/jOOQ/src/main/java/org/jooq/impl/Rollup.java @@ -37,15 +37,22 @@ */ package org.jooq.impl; +// ... +import static org.jooq.SQLDialect.CUBRID; +import static org.jooq.SQLDialect.MARIADB; +import static org.jooq.SQLDialect.MYSQL; import static org.jooq.impl.Keywords.K_WITH_ROLLUP; import static org.jooq.impl.Names.N_ROLLUP; import static org.jooq.impl.SQLDataType.OTHER; import static org.jooq.impl.Tools.EMPTY_FIELD_OR_ROW; +import java.util.Set; + import org.jooq.Context; import org.jooq.FieldOrRow; import org.jooq.Function1; import org.jooq.GroupField; +import org.jooq.SQLDialect; import org.jooq.impl.QOM.UnmodifiableList; /** @@ -53,8 +60,10 @@ import org.jooq.impl.QOM.UnmodifiableList; */ final class Rollup extends AbstractField implements QOM.Rollup { + static final Set SUPPORT_WITH_ROLLUP = SQLDialect.supportedBy(CUBRID, MARIADB, MYSQL); private QueryPartList arguments; + Rollup(FieldOrRow... arguments) { super(N_ROLLUP, OTHER); @@ -63,20 +72,13 @@ final class Rollup extends AbstractField implements QOM.Rollup { @Override public final void accept(Context ctx) { - switch (ctx.family()) { - - case CUBRID: - case MARIADB: - case MYSQL: - ctx.visit(arguments) - .formatSeparator() - .visit(K_WITH_ROLLUP); - break; - - default: - ctx.visit(N_ROLLUP).sql(" (").visit(arguments).sql(')'); - break; + if (SUPPORT_WITH_ROLLUP.contains(ctx.dialect())) { + ctx.visit(arguments) + .formatSeparator() + .visit(K_WITH_ROLLUP); } + else + ctx.visit(N_ROLLUP).sql(" (").visit(arguments).sql(')'); } // -------------------------------------------------------------------------