[jOOQ/jOOQ#9926] Added support for MySQL and MariaDB
This commit is contained in:
parent
b6c83b1efe
commit
c5bb31338d
@ -40,6 +40,8 @@ package org.jooq;
|
||||
// ...
|
||||
// ...
|
||||
import static org.jooq.SQLDialect.H2;
|
||||
import static org.jooq.SQLDialect.MARIADB;
|
||||
import static org.jooq.SQLDialect.MYSQL;
|
||||
// ...
|
||||
import static org.jooq.SQLDialect.POSTGRES;
|
||||
// ...
|
||||
@ -58,7 +60,7 @@ public interface JSONObjectNullStep<T> extends Field<T> {
|
||||
/**
|
||||
* Include <code>NULL</code> values in output JSON.
|
||||
*/
|
||||
@Support({ H2, POSTGRES })
|
||||
@Support({ AURORA_POSTGRES, COCKROACHDB, MARIADB, MYSQL, H2, ORACLE12C, POSTGRES, SQLSERVER })
|
||||
Field<T> nullOnNull();
|
||||
|
||||
/**
|
||||
|
||||
@ -136,6 +136,8 @@ package org.jooq;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -40,6 +40,8 @@ package org.jooq;
|
||||
// ...
|
||||
// ...
|
||||
import static org.jooq.SQLDialect.H2;
|
||||
import static org.jooq.SQLDialect.MARIADB;
|
||||
import static org.jooq.SQLDialect.MYSQL;
|
||||
// ...
|
||||
import static org.jooq.SQLDialect.POSTGRES;
|
||||
|
||||
|
||||
@ -40,6 +40,8 @@ package org.jooq;
|
||||
// ...
|
||||
// ...
|
||||
import static org.jooq.SQLDialect.H2;
|
||||
import static org.jooq.SQLDialect.MARIADB;
|
||||
import static org.jooq.SQLDialect.MYSQL;
|
||||
// ...
|
||||
import static org.jooq.SQLDialect.POSTGRES;
|
||||
// ...
|
||||
|
||||
@ -59,6 +59,7 @@ import static org.jooq.SQLDialect.MYSQL;
|
||||
// ...
|
||||
// ...
|
||||
// ...
|
||||
// ...
|
||||
import static org.jooq.SQLDialect.POSTGRES;
|
||||
// ...
|
||||
// ...
|
||||
|
||||
@ -38,6 +38,8 @@
|
||||
package org.jooq.impl;
|
||||
|
||||
import static org.jooq.SQLDialect.H2;
|
||||
import static org.jooq.SQLDialect.MARIADB;
|
||||
import static org.jooq.SQLDialect.MYSQL;
|
||||
import static org.jooq.impl.DSL.asterisk;
|
||||
import static org.jooq.impl.DSL.inline;
|
||||
import static org.jooq.impl.DSL.row;
|
||||
@ -54,6 +56,7 @@ import static org.jooq.impl.Names.N_JSON_OBJECT;
|
||||
import static org.jooq.impl.Names.N_T;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Set;
|
||||
|
||||
import org.jooq.Context;
|
||||
import org.jooq.DataType;
|
||||
@ -61,6 +64,7 @@ import org.jooq.Field;
|
||||
import org.jooq.JSONEntry;
|
||||
import org.jooq.JSONObjectNullStep;
|
||||
import org.jooq.Name;
|
||||
import org.jooq.SQLDialect;
|
||||
// ...
|
||||
|
||||
|
||||
@ -74,7 +78,9 @@ final class JSONObject<J> extends AbstractField<J> implements JSONObjectNullStep
|
||||
/**
|
||||
* Generated UID
|
||||
*/
|
||||
private static final long serialVersionUID = 1772007627336725780L;
|
||||
private static final long serialVersionUID = 1772007627336725780L;
|
||||
static final Set<SQLDialect> NO_SUPPORT_ABSENT_ON_NULL = SQLDialect.supportedBy(MARIADB, MYSQL);
|
||||
|
||||
private final QueryPartList<JSONEntry<?>> args;
|
||||
private final NullClause nullClause;
|
||||
|
||||
@ -173,14 +179,15 @@ final class JSONObject<J> extends AbstractField<J> implements JSONObjectNullStep
|
||||
default:
|
||||
ctx.visit(K_JSON_OBJECT).sql('(').visit(args);
|
||||
|
||||
if (nullClause == NULL_ON_NULL)
|
||||
ctx.sql(' ').visit(K_NULL).sql(' ').visit(K_ON).sql(' ').visit(K_NULL);
|
||||
else if (nullClause == ABSENT_ON_NULL)
|
||||
ctx.sql(' ').visit(K_ABSENT).sql(' ').visit(K_ON).sql(' ').visit(K_NULL);
|
||||
if (!NO_SUPPORT_ABSENT_ON_NULL.contains(ctx.dialect()))
|
||||
if (nullClause == NULL_ON_NULL)
|
||||
ctx.sql(' ').visit(K_NULL).sql(' ').visit(K_ON).sql(' ').visit(K_NULL);
|
||||
else if (nullClause == ABSENT_ON_NULL)
|
||||
ctx.sql(' ').visit(K_ABSENT).sql(' ').visit(K_ON).sql(' ').visit(K_NULL);
|
||||
|
||||
// Workaround for https://github.com/h2database/h2database/issues/2496
|
||||
else if (ctx.family() == H2 && args.isEmpty())
|
||||
ctx.visit(K_NULL).sql(' ').visit(K_ON).sql(' ').visit(K_NULL);
|
||||
// Workaround for https://github.com/h2database/h2database/issues/2496
|
||||
else if (ctx.family() == H2 && args.isEmpty())
|
||||
ctx.visit(K_NULL).sql(' ').visit(K_ON).sql(' ').visit(K_NULL);
|
||||
|
||||
ctx.sql(')');
|
||||
break;
|
||||
|
||||
@ -101,6 +101,7 @@ import static org.jooq.impl.DSL.name;
|
||||
import static org.jooq.impl.DSL.one;
|
||||
import static org.jooq.impl.DSL.orderBy;
|
||||
import static org.jooq.impl.DSL.row;
|
||||
import static org.jooq.impl.JSONObject.NO_SUPPORT_ABSENT_ON_NULL;
|
||||
import static org.jooq.impl.Keywords.K_AND;
|
||||
import static org.jooq.impl.Keywords.K_BY;
|
||||
import static org.jooq.impl.Keywords.K_CONNECT_BY;
|
||||
@ -576,6 +577,8 @@ final class SelectQueryImpl<R extends Record> extends AbstractResultQuery<R> imp
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user