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 extends Field>>... 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(')'))