[jOOQ/jOOQ#12073] Emulate combination of JSON_ARRAYAGG() FILTER clause and NULL ON NULL
This commit is contained in:
parent
3d171612d8
commit
dc343ce47e
@ -49,13 +49,16 @@ import static org.jooq.impl.DSL.function;
|
||||
import static org.jooq.impl.DSL.groupConcat;
|
||||
import static org.jooq.impl.DSL.groupConcatDistinct;
|
||||
import static org.jooq.impl.DSL.inline;
|
||||
import static org.jooq.impl.DSL.orderBy;
|
||||
import static org.jooq.impl.DSL.jsonArray;
|
||||
import static org.jooq.impl.JSONEntryImpl.jsonCast;
|
||||
import static org.jooq.impl.JSONEntryImpl.jsonCastMapper;
|
||||
import static org.jooq.impl.JSONEntryImpl.jsonMerge;
|
||||
import static org.jooq.impl.Keywords.K_AS;
|
||||
import static org.jooq.impl.Keywords.K_DISTINCT;
|
||||
import static org.jooq.impl.Keywords.K_IS_NOT_NULL;
|
||||
import static org.jooq.impl.Keywords.K_NESTED;
|
||||
import static org.jooq.impl.Keywords.K_PATH;
|
||||
import static org.jooq.impl.Keywords.K_REPLACE;
|
||||
import static org.jooq.impl.Names.N_ARRAY_AGG;
|
||||
import static org.jooq.impl.Names.N_CAST;
|
||||
import static org.jooq.impl.Names.N_FILTER;
|
||||
@ -65,19 +68,21 @@ import static org.jooq.impl.Names.N_JSON_AGG;
|
||||
import static org.jooq.impl.Names.N_JSON_ARRAYAGG;
|
||||
import static org.jooq.impl.Names.N_JSON_GROUP_ARRAY;
|
||||
import static org.jooq.impl.Names.N_JSON_QUOTE;
|
||||
import static org.jooq.impl.Names.N_JSON_TRANSFORM;
|
||||
import static org.jooq.impl.Names.N_toJSONString;
|
||||
import static org.jooq.impl.QOM.JSONOnNull.ABSENT_ON_NULL;
|
||||
import static org.jooq.impl.QOM.JSONOnNull.NULL_ON_NULL;
|
||||
import static org.jooq.impl.QueryPartListView.wrap;
|
||||
import static org.jooq.impl.SQLDataType.BLOB;
|
||||
import static org.jooq.impl.SQLDataType.INTEGER;
|
||||
import static org.jooq.impl.SQLDataType.JSON;
|
||||
import static org.jooq.impl.SQLDataType.JSONB;
|
||||
import static org.jooq.impl.SQLDataType.VARCHAR;
|
||||
import static org.jooq.impl.Tools.apply;
|
||||
import static org.jooq.impl.Tools.BooleanDataKey.DATA_FORCE_CASE_ELSE_NULL;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Set;
|
||||
import java.util.function.Function;
|
||||
|
||||
import org.jooq.AggregateFilterStep;
|
||||
import org.jooq.Context;
|
||||
@ -153,6 +158,21 @@ implements
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -321,18 +341,24 @@ implements
|
||||
|
||||
|
||||
private final void acceptStandard(Context<?> ctx) {
|
||||
acceptStandard(ctx, null, onNull);
|
||||
}
|
||||
|
||||
private final void acceptStandard(Context<?> ctx, Function<? super Field<?>, ? extends Field<?>> mapper, JSONOnNull onNull0) {
|
||||
ctx.visit(N_JSON_ARRAYAGG).sql('(');
|
||||
acceptDistinct(ctx);
|
||||
|
||||
QueryPartListView<Field<?>> arguments0 = mapper == null ? arguments : wrap(arguments).map(mapper);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
acceptArguments3(ctx, arguments, jsonCastMapper(ctx));
|
||||
|
||||
acceptArguments3(ctx, arguments0, jsonCastMapper(ctx));
|
||||
acceptOrderBy(ctx);
|
||||
|
||||
JSONNull jsonNull = new JSONNull(onNull);
|
||||
JSONNull jsonNull = new JSONNull(onNull0);
|
||||
if (jsonNull.rendersContent(ctx))
|
||||
ctx.sql(' ').visit(jsonNull);
|
||||
|
||||
|
||||
@ -275,6 +275,7 @@ final class Keywords {
|
||||
static final Keyword K_MONTH = keyword("month");
|
||||
static final Keyword K_MULTISET = keyword("multiset");
|
||||
static final Keyword K_NAME = keyword("name");
|
||||
static final Keyword K_NESTED = keyword("nested");
|
||||
static final Keyword K_NEW = keyword("new");
|
||||
static final Keyword K_NEXT = keyword("next");
|
||||
static final Keyword K_NEXTVAL = keyword("nextval");
|
||||
|
||||
Loading…
Reference in New Issue
Block a user