[jOOQ/jOOQ#7539] Support for SQLDialect.CLICKHOUSE - WIP
This commit is contained in:
parent
7ec251ec87
commit
38a8a7d4cb
@ -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 <code>GROUP BY</code> 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 <code>GROUP BY</code> 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 <code>GROUP BY</code> clause
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ DUCKDB, POSTGRES, TRINO })
|
||||
@Support({ CLICKHOUSE, DUCKDB, POSTGRES, TRINO })
|
||||
public static GroupField groupingSets(Field<?>... fields) {
|
||||
List<Field<?>>[] 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 <code>GROUP BY</code> clause
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ DUCKDB, POSTGRES, TRINO })
|
||||
@Support({ CLICKHOUSE, DUCKDB, POSTGRES, TRINO })
|
||||
public static GroupField groupingSets(Field<?>[]... fieldSets) {
|
||||
List<Field<?>>[] 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 <code>GROUP BY</code> 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<Integer> grouping(Field<?> field) {
|
||||
return function("grouping", INTEGER, field);
|
||||
}
|
||||
|
||||
@ -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<J extends JoinTable<J>> extends AbstractJoinTable<J> {
|
||||
static final Set<SQLDialect> EMULATE_NATURAL_OUTER_JOIN = SQLDialect.supportedBy(CLICKHOUSE, CUBRID, H2, IGNITE, TRINO);
|
||||
static final Set<SQLDialect> EMULATE_JOIN_USING = SQLDialect.supportedBy(CUBRID, IGNITE);
|
||||
static final Set<SQLDialect> EMULATE_APPLY = SQLDialect.supportedBy(FIREBIRD, POSTGRES, TRINO, YUGABYTEDB);
|
||||
static final Set<SQLDialect> 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<J extends JoinTable<J>> extends AbstractJoinTable<J> {
|
||||
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<Condition> semiAntiJoinPredicates = (List<Condition>) ctx.data(DATA_COLLECTED_SEMI_ANTI_JOIN);
|
||||
|
||||
@ -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(')'))
|
||||
|
||||
Loading…
Reference in New Issue
Block a user