[jOOQ/jOOQ#7539] Support for SQLDialect.CLICKHOUSE - WIP
This commit is contained in:
parent
321a6367b5
commit
3d36c257d1
@ -38,6 +38,7 @@
|
||||
package org.jooq;
|
||||
|
||||
// ...
|
||||
import static org.jooq.SQLDialect.CLICKHOUSE;
|
||||
// ...
|
||||
// ...
|
||||
import static org.jooq.SQLDialect.H2;
|
||||
@ -64,20 +65,20 @@ public interface JSONEntryValueStep {
|
||||
* The JSON entry value.
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
|
||||
@Support({ CLICKHOUSE, H2, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
|
||||
<T> JSONEntry<T> value(T value);
|
||||
|
||||
/**
|
||||
* The JSON entry value.
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
|
||||
@Support({ CLICKHOUSE, H2, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
|
||||
<T> JSONEntry<T> value(Field<T> value);
|
||||
|
||||
/**
|
||||
* The JSON entry value.
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
|
||||
@Support({ CLICKHOUSE, H2, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
|
||||
<T> JSONEntry<T> value(Select<? extends Record1<T>> value);
|
||||
}
|
||||
|
||||
@ -70,7 +70,7 @@ public interface JSONValueReturningStep<T> extends Field<T> {
|
||||
/**
|
||||
* Add the <code>RETURNING</code> clause to the <code>JSON VALUE</code> function.
|
||||
*/
|
||||
@Support({ MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTEDB })
|
||||
@Support({ CLICKHOUSE, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTEDB })
|
||||
@NotNull
|
||||
Field<T> returning(DataType<?> returning);
|
||||
}
|
||||
|
||||
@ -28875,7 +28875,7 @@ public class DSL {
|
||||
* The JSON value extractor function.
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTEDB })
|
||||
@Support({ CLICKHOUSE, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTEDB })
|
||||
public static JSONValueOnStep<JSON> jsonValue(Field<JSON> json, String path) {
|
||||
return jsonValue(json, Tools.field(path));
|
||||
}
|
||||
@ -28884,7 +28884,7 @@ public class DSL {
|
||||
* The JSON value extractor function.
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTEDB })
|
||||
@Support({ CLICKHOUSE, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTEDB })
|
||||
public static JSONValueOnStep<JSON> jsonValue(Field<JSON> json, Field<String> path) {
|
||||
return new JSONValue<>(SQLDataType.JSON, json, path, null);
|
||||
}
|
||||
@ -28893,7 +28893,7 @@ public class DSL {
|
||||
* The JSON value extractor function.
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTEDB })
|
||||
@Support({ CLICKHOUSE, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTEDB })
|
||||
public static JSONValueOnStep<JSONB> jsonbValue(Field<JSONB> json, String path) {
|
||||
return jsonbValue(json, Tools.field(path));
|
||||
}
|
||||
@ -28902,7 +28902,7 @@ public class DSL {
|
||||
* The JSON value extractor function.
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTEDB })
|
||||
@Support({ CLICKHOUSE, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTEDB })
|
||||
public static JSONValueOnStep<JSONB> jsonbValue(Field<JSONB> json, Field<String> path) {
|
||||
return new JSONValue<>(SQLDataType.JSONB, json, path, null);
|
||||
}
|
||||
@ -28914,7 +28914,7 @@ public class DSL {
|
||||
* This is the same as calling {@link #jsonEntry(String, Field)}.
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
|
||||
@Support({ CLICKHOUSE, H2, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
|
||||
public static JSONEntryValueStep key(String key) {
|
||||
return key(Tools.field(key));
|
||||
}
|
||||
@ -28926,7 +28926,7 @@ public class DSL {
|
||||
* This is the same as calling {@link #jsonEntry(Field, Field)}.
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
|
||||
@Support({ CLICKHOUSE, H2, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
|
||||
public static JSONEntryValueStep key(Field<String> key) {
|
||||
return new JSONEntryImpl<>(key);
|
||||
}
|
||||
@ -28939,7 +28939,7 @@ public class DSL {
|
||||
* {@link Field#getName()} as a key.
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
|
||||
@Support({ CLICKHOUSE, H2, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
|
||||
public static <T> JSONEntry<T> jsonEntry(Field<T> value) {
|
||||
return jsonEntry(value.getName(), value);
|
||||
}
|
||||
@ -28949,7 +28949,7 @@ public class DSL {
|
||||
* {@link #jsonObject(JSONEntry...)}.
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
|
||||
@Support({ CLICKHOUSE, H2, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
|
||||
public static <T> JSONEntry<T> jsonEntry(String key, T value) {
|
||||
return jsonEntry(Tools.field(key), Tools.field(value));
|
||||
}
|
||||
@ -28959,7 +28959,7 @@ public class DSL {
|
||||
* {@link #jsonObject(JSONEntry...)}.
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
|
||||
@Support({ CLICKHOUSE, H2, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
|
||||
public static <T> JSONEntry<T> jsonEntry(String key, Field<T> value) {
|
||||
return jsonEntry(Tools.field(key), value);
|
||||
}
|
||||
@ -28969,7 +28969,7 @@ public class DSL {
|
||||
* {@link #jsonObject(JSONEntry...)}.
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
|
||||
@Support({ CLICKHOUSE, H2, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
|
||||
public static <T> JSONEntry<T> jsonEntry(String key, Select<? extends Record1<T>> value) {
|
||||
return jsonEntry(Tools.field(key), field(value));
|
||||
}
|
||||
@ -28979,7 +28979,7 @@ public class DSL {
|
||||
* {@link #jsonObject(JSONEntry...)}.
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
|
||||
@Support({ CLICKHOUSE, H2, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
|
||||
public static <T> JSONEntry<T> jsonEntry(Field<String> key, T value) {
|
||||
return jsonEntry(key, Tools.field(value));
|
||||
}
|
||||
@ -28989,7 +28989,7 @@ public class DSL {
|
||||
* {@link #jsonObject(JSONEntry...)}.
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
|
||||
@Support({ CLICKHOUSE, H2, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
|
||||
public static <T> JSONEntry<T> jsonEntry(Field<String> key, Field<T> value) {
|
||||
return new JSONEntryImpl<>(key, value);
|
||||
}
|
||||
@ -28999,7 +28999,7 @@ public class DSL {
|
||||
* {@link #jsonObject(JSONEntry...)}.
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
|
||||
@Support({ CLICKHOUSE, H2, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
|
||||
public static <T> JSONEntry<T> jsonEntry(Field<String> key, Select<? extends Record1<T>> value) {
|
||||
return jsonEntry(key, field(value));
|
||||
}
|
||||
@ -29008,7 +29008,7 @@ public class DSL {
|
||||
* The JSON object constructor.
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
|
||||
@Support({ CLICKHOUSE, H2, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
|
||||
public static JSONObjectNullStep<JSON> jsonObject(String key, Field<?> value) {
|
||||
return jsonObject(jsonEntry(key, value));
|
||||
}
|
||||
@ -29017,7 +29017,7 @@ public class DSL {
|
||||
* The JSON object constructor.
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
|
||||
@Support({ CLICKHOUSE, H2, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
|
||||
public static JSONObjectNullStep<JSON> jsonObject(Field<String> key, Field<?> value) {
|
||||
return jsonObject(jsonEntry(key, value));
|
||||
}
|
||||
@ -29026,7 +29026,7 @@ public class DSL {
|
||||
* The JSON object constructor.
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
|
||||
@Support({ CLICKHOUSE, H2, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
|
||||
public static JSONObjectNullStep<JSON> jsonObject(Field<String> key, Select<? extends Record1<?>> value) {
|
||||
return jsonObject(jsonEntry(key, value));
|
||||
}
|
||||
@ -29042,7 +29042,7 @@ public class DSL {
|
||||
* {@link #jsonObject(JSONEntry...)} instead.
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
|
||||
@Support({ CLICKHOUSE, H2, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
|
||||
@Deprecated(forRemoval = true, since = "3.19")
|
||||
public static JSONObjectNullStep<JSON> jsonObject(Field<?>... entries) {
|
||||
return new JSONObject(SQLDataType.JSON, Tools.jsonEntries(entries));
|
||||
@ -29052,7 +29052,7 @@ public class DSL {
|
||||
* The JSON object constructor.
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
|
||||
@Support({ CLICKHOUSE, H2, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
|
||||
public static JSONObjectNullStep<JSONB> jsonbObject(String key, Field<?> value) {
|
||||
return jsonbObject(jsonEntry(key, value));
|
||||
}
|
||||
@ -29061,7 +29061,7 @@ public class DSL {
|
||||
* The JSON object constructor.
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
|
||||
@Support({ CLICKHOUSE, H2, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
|
||||
public static JSONObjectNullStep<JSONB> jsonbObject(Field<String> key, Field<?> value) {
|
||||
return jsonbObject(jsonEntry(key, value));
|
||||
}
|
||||
@ -29070,7 +29070,7 @@ public class DSL {
|
||||
* The JSON object constructor.
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
|
||||
@Support({ CLICKHOUSE, H2, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
|
||||
public static JSONObjectNullStep<JSONB> jsonbObject(Field<String> key, Select<? extends Record1<?>> value) {
|
||||
return jsonbObject(jsonEntry(key, value));
|
||||
}
|
||||
@ -29086,7 +29086,7 @@ public class DSL {
|
||||
* {@link #jsonObject(JSONEntry...)} instead.
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
|
||||
@Support({ CLICKHOUSE, H2, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
|
||||
@Deprecated(forRemoval = true, since = "3.19")
|
||||
public static JSONObjectNullStep<JSONB> jsonbObject(Field<?>... entries) {
|
||||
return new JSONObject(SQLDataType.JSONB, Tools.jsonEntries(entries));
|
||||
@ -29096,7 +29096,7 @@ public class DSL {
|
||||
* The JSON object constructor.
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
|
||||
@Support({ CLICKHOUSE, H2, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
|
||||
public static JSONObjectNullStep<JSON> jsonObject() {
|
||||
return jsonObject(Tools.EMPTY_JSONENTRY);
|
||||
}
|
||||
@ -29105,7 +29105,7 @@ public class DSL {
|
||||
* The JSON object constructor.
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
|
||||
@Support({ CLICKHOUSE, H2, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
|
||||
public static JSONObjectNullStep<JSONB> jsonbObject() {
|
||||
return jsonbObject(Tools.EMPTY_JSONENTRY);
|
||||
}
|
||||
@ -29228,7 +29228,7 @@ public class DSL {
|
||||
* The JSON exists predicate.
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ MARIADB, MYSQL, POSTGRES, SQLITE })
|
||||
@Support({ CLICKHOUSE, MARIADB, MYSQL, POSTGRES, SQLITE })
|
||||
public static JSONExistsOnStep jsonExists(Field<JSON> field, String path) {
|
||||
return jsonExists(field, Tools.field(path));
|
||||
}
|
||||
@ -29237,7 +29237,7 @@ public class DSL {
|
||||
* The JSON exists predicate.
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTEDB })
|
||||
@Support({ CLICKHOUSE, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTEDB })
|
||||
public static JSONExistsOnStep jsonExists(Field<JSON> field, Field<String> path) {
|
||||
return new JSONExists(field, Tools.nullSafe(path));
|
||||
}
|
||||
@ -29246,7 +29246,7 @@ public class DSL {
|
||||
* The JSONB exists predicate.
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTEDB })
|
||||
@Support({ CLICKHOUSE, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTEDB })
|
||||
public static JSONExistsOnStep jsonbExists(Field<JSONB> field, String path) {
|
||||
return jsonbExists(field, Tools.field(path));
|
||||
}
|
||||
@ -29255,7 +29255,7 @@ public class DSL {
|
||||
* The JSONB exists predicate.
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTEDB })
|
||||
@Support({ CLICKHOUSE, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTEDB })
|
||||
public static JSONExistsOnStep jsonbExists(Field<JSONB> field, Field<String> path) {
|
||||
return new JSONExists(field, Tools.nullSafe(path));
|
||||
}
|
||||
|
||||
@ -116,7 +116,7 @@ implements
|
||||
return false;
|
||||
|
||||
case CLICKHOUSE:
|
||||
return false;
|
||||
return true;
|
||||
|
||||
default:
|
||||
return false;
|
||||
@ -170,7 +170,7 @@ implements
|
||||
break;
|
||||
|
||||
case CLICKHOUSE:
|
||||
ctx.visit(function(N_JSONExtractRaw, JSONB, field, isub(attribute, one())));
|
||||
ctx.visit(function(N_JSONExtractRaw, getDataType(), field, attribute));
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
@ -92,6 +92,38 @@ implements
|
||||
// XXX: QueryPart API
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
@Override
|
||||
final boolean parenthesised(Context<?> ctx) {
|
||||
switch (ctx.family()) {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
case MYSQL:
|
||||
return false;
|
||||
|
||||
case MARIADB:
|
||||
return false;
|
||||
|
||||
case SQLITE:
|
||||
return false;
|
||||
|
||||
case CLICKHOUSE:
|
||||
return true;
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void accept(Context<?> ctx) {
|
||||
switch (ctx.family()) {
|
||||
@ -139,7 +171,7 @@ implements
|
||||
break;
|
||||
|
||||
case CLICKHOUSE:
|
||||
ctx.visit(function(N_JSONExtractString, JSONB, field, isub(attribute, one())));
|
||||
ctx.visit(function(N_JSONExtractString, getDataType(), field, attribute));
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
@ -39,6 +39,7 @@ package org.jooq.impl;
|
||||
|
||||
import static org.jooq.conf.ParamType.INLINED;
|
||||
import static org.jooq.impl.DSL.function;
|
||||
import static org.jooq.impl.DSL.systemName;
|
||||
import static org.jooq.impl.JSONExists.Behaviour.ERROR;
|
||||
import static org.jooq.impl.JSONExists.Behaviour.FALSE;
|
||||
import static org.jooq.impl.JSONExists.Behaviour.TRUE;
|
||||
@ -144,6 +145,10 @@ final class JSONExists extends AbstractCondition implements JSONExistsOnStep, UN
|
||||
ctx.sql(')');
|
||||
break;
|
||||
|
||||
case CLICKHOUSE:
|
||||
ctx.visit(function(systemName("JSON_EXISTS"), getDataType(), json, path));
|
||||
break;
|
||||
|
||||
default:
|
||||
ctx.visit(K_JSON_EXISTS).sql('(').visit(json).sql(", ");
|
||||
|
||||
|
||||
@ -116,7 +116,7 @@ implements
|
||||
return false;
|
||||
|
||||
case CLICKHOUSE:
|
||||
return false;
|
||||
return true;
|
||||
|
||||
default:
|
||||
return false;
|
||||
@ -170,7 +170,7 @@ implements
|
||||
break;
|
||||
|
||||
case CLICKHOUSE:
|
||||
ctx.visit(function(N_JSONExtractRaw, JSON, field, isub(attribute, one())));
|
||||
ctx.visit(function(N_JSONExtractRaw, getDataType(), field, attribute));
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
@ -92,6 +92,38 @@ implements
|
||||
// XXX: QueryPart API
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
@Override
|
||||
final boolean parenthesised(Context<?> ctx) {
|
||||
switch (ctx.family()) {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
case MYSQL:
|
||||
return false;
|
||||
|
||||
case MARIADB:
|
||||
return false;
|
||||
|
||||
case SQLITE:
|
||||
return false;
|
||||
|
||||
case CLICKHOUSE:
|
||||
return true;
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void accept(Context<?> ctx) {
|
||||
switch (ctx.family()) {
|
||||
@ -140,7 +172,7 @@ implements
|
||||
break;
|
||||
|
||||
case CLICKHOUSE:
|
||||
ctx.visit(function(N_JSONExtractString, JSON, field, isub(attribute, one())));
|
||||
ctx.visit(function(N_JSONExtractString, getDataType(), field, attribute));
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
@ -110,7 +110,7 @@ implements
|
||||
return false;
|
||||
|
||||
case CLICKHOUSE:
|
||||
return true;
|
||||
return false;
|
||||
|
||||
case TRINO:
|
||||
return false;
|
||||
@ -153,7 +153,7 @@ implements
|
||||
break;
|
||||
|
||||
case CLICKHOUSE:
|
||||
ctx.visit(function(N_JSONExtractKeys, getDataType(), field));
|
||||
ctx.visit(function(N_toJSONString, getDataType(), function(N_JSONExtractKeys, OTHER, field)));
|
||||
break;
|
||||
|
||||
case TRINO:
|
||||
|
||||
@ -246,8 +246,8 @@ implements
|
||||
}
|
||||
|
||||
case CLICKHOUSE: {
|
||||
ctx.visit(function(N_toJSONString, getDataType(), array((List<Field<?>>)
|
||||
flatMap(entries, e -> Arrays.<Field<?>>asList(e.key(), e.value()))
|
||||
ctx.visit(function(N_toJSONString, getDataType(), function(N_MAP, OTHER,
|
||||
flatMap(entries, e -> Arrays.<Field<?>>asList(e.key(), e.value())).toArray(EMPTY_FIELD)
|
||||
)));
|
||||
break;
|
||||
}
|
||||
|
||||
@ -44,6 +44,7 @@ import static org.jooq.impl.DSL.inline;
|
||||
import static org.jooq.impl.DSL.inlined;
|
||||
import static org.jooq.impl.DSL.jsonTable;
|
||||
import static org.jooq.impl.DSL.select;
|
||||
import static org.jooq.impl.DSL.systemName;
|
||||
import static org.jooq.impl.JSONValue.Behaviour.DEFAULT;
|
||||
import static org.jooq.impl.JSONValue.Behaviour.ERROR;
|
||||
import static org.jooq.impl.JSONValue.Behaviour.NULL;
|
||||
@ -195,6 +196,10 @@ implements
|
||||
ctx.visit(function(N_JSONB_PATH_QUERY_FIRST, json.getDataType(), castIfNeeded(json, JSONB), DSL.field("cast({0} as jsonpath)", path)));
|
||||
break;
|
||||
|
||||
case CLICKHOUSE:
|
||||
ctx.visit(function(systemName("JSON_VALUE"), getDataType(), json, path));
|
||||
break;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user