diff --git a/jOOQ/src/main/java/org/jooq/impl/DSL.java b/jOOQ/src/main/java/org/jooq/impl/DSL.java index b1c18a2926..8858ac815d 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DSL.java +++ b/jOOQ/src/main/java/org/jooq/impl/DSL.java @@ -28406,7 +28406,7 @@ public class DSL { * @see #rollup(FieldOrRow...) */ @NotNull - @Support({ CUBRID, DUCKDB, MARIADB, MYSQL, POSTGRES, TRINO }) + @Support({ CLICKHOUSE, CUBRID, DUCKDB, MARIADB, MYSQL, POSTGRES, TRINO }) public static GroupField rollup(Field... fields) { return rollup((FieldOrRow[]) Tools.nullSafe(fields)); } @@ -28425,7 +28425,7 @@ public class DSL { * @return A field to be used in a GROUP BY clause */ @NotNull - @Support({ CUBRID, DUCKDB, MARIADB, MYSQL, POSTGRES, TRINO }) + @Support({ CLICKHOUSE, CUBRID, DUCKDB, MARIADB, MYSQL, POSTGRES, TRINO }) public static GroupField rollup(FieldOrRow... fields) { return new Rollup(fields); } @@ -28436,7 +28436,7 @@ public class DSL { * @see #cube(Field...) */ @NotNull - @Support({ DUCKDB, POSTGRES, TRINO }) + @Support({ CLICKHOUSE, DUCKDB, POSTGRES, TRINO }) public static GroupField cube(Field... fields) { return cube((FieldOrRow[]) Tools.nullSafe(fields)); } @@ -28455,7 +28455,7 @@ public class DSL { * @return A field to be used in a GROUP BY clause */ @NotNull - @Support({ DUCKDB, POSTGRES, TRINO }) + @Support({ CLICKHOUSE, DUCKDB, POSTGRES, TRINO }) public static GroupField cube(FieldOrRow... fields) { return new Cube(fields); } @@ -28475,7 +28475,7 @@ public class DSL { * @return A field to be used in a GROUP BY clause */ @NotNull - @Support({ DUCKDB, POSTGRES, TRINO }) + @Support({ CLICKHOUSE, DUCKDB, POSTGRES, TRINO }) public static GroupField groupingSets(Field... fields) { List>[] array = map(fields, f -> asList(f), List[]::new); return groupingSets(array); @@ -28496,7 +28496,7 @@ public class DSL { * @return A field to be used in a GROUP BY clause */ @NotNull - @Support({ DUCKDB, POSTGRES, TRINO }) + @Support({ CLICKHOUSE, DUCKDB, POSTGRES, TRINO }) public static GroupField groupingSets(Field[]... fieldSets) { List>[] array = map(fieldSets, f -> asList(f), List[]::new); return groupingSets(array); @@ -28517,7 +28517,7 @@ public class DSL { * @return A field to be used in a GROUP BY clause */ @NotNull - @Support({ DUCKDB, POSTGRES, TRINO }) + @Support({ CLICKHOUSE, DUCKDB, POSTGRES, TRINO }) @SafeVarargs public static GroupField groupingSets(Collection>... fieldSets) { return new GroupingSets(fieldSets); @@ -28570,7 +28570,7 @@ public class DSL { * @see #rollup(Field...) */ @NotNull - @Support({ DUCKDB, MYSQL, POSTGRES, TRINO }) + @Support({ CLICKHOUSE, DUCKDB, MYSQL, POSTGRES, TRINO }) public static Field grouping(Field field) { return function("grouping", INTEGER, field); } diff --git a/jOOQ/src/main/java/org/jooq/impl/JoinTable.java b/jOOQ/src/main/java/org/jooq/impl/JoinTable.java index 63f13b89ae..daaccd8d01 100755 --- a/jOOQ/src/main/java/org/jooq/impl/JoinTable.java +++ b/jOOQ/src/main/java/org/jooq/impl/JoinTable.java @@ -74,25 +74,36 @@ import static org.jooq.JoinType.RIGHT_OUTER_JOIN; // ... // ... // ... +// ... import static org.jooq.SQLDialect.CLICKHOUSE; // ... import static org.jooq.SQLDialect.CUBRID; // ... +import static org.jooq.SQLDialect.DERBY; +import static org.jooq.SQLDialect.DUCKDB; // ... import static org.jooq.SQLDialect.FIREBIRD; import static org.jooq.SQLDialect.H2; // ... +import static org.jooq.SQLDialect.HSQLDB; import static org.jooq.SQLDialect.IGNITE; // ... // ... // ... +import static org.jooq.SQLDialect.MARIADB; +// ... +import static org.jooq.SQLDialect.MYSQL; +// ... import static org.jooq.SQLDialect.POSTGRES; // ... // ... // ... +import static org.jooq.SQLDialect.SQLITE; +// ... // ... // ... import static org.jooq.SQLDialect.TRINO; +// ... import static org.jooq.SQLDialect.YUGABYTEDB; import static org.jooq.impl.ConditionProviderImpl.extractCondition; import static org.jooq.impl.DSL.exists; @@ -166,6 +177,7 @@ abstract class JoinTable> extends AbstractJoinTable { static final Set EMULATE_NATURAL_OUTER_JOIN = SQLDialect.supportedBy(CLICKHOUSE, CUBRID, H2, IGNITE, TRINO); static final Set EMULATE_JOIN_USING = SQLDialect.supportedBy(CUBRID, IGNITE); static final Set EMULATE_APPLY = SQLDialect.supportedBy(FIREBIRD, POSTGRES, TRINO, YUGABYTEDB); + static final Set EMUlATE_SEMI_ANTI_JOIN = SQLDialect.supportedBy(CUBRID, DERBY, DUCKDB, FIREBIRD, H2, HSQLDB, IGNITE, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB); final Table lhs; final Table rhs; @@ -286,7 +298,9 @@ abstract class JoinTable> extends AbstractJoinTable { switch (translatedType) { case LEFT_SEMI_JOIN: case LEFT_ANTI_JOIN: - if (TRUE.equals(ctx.data(DATA_COLLECT_SEMI_ANTI_JOIN))) { + if (EMUlATE_SEMI_ANTI_JOIN.contains(ctx.dialect()) + && TRUE.equals(ctx.data(DATA_COLLECT_SEMI_ANTI_JOIN)) + ) { @SuppressWarnings("unchecked") List semiAntiJoinPredicates = (List) ctx.data(DATA_COLLECTED_SEMI_ANTI_JOIN); diff --git a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java index 6c6c44d54a..233c7e95f6 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java @@ -12678,6 +12678,9 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { private final AggregateFunction parseCountIf() { if (parseFunctionNameIf("COUNT")) { parse('('); + if (parseIf(')')) + return count(); + boolean distinct = parseSetQuantifier(); if (parseIf('*') && parse(')'))