diff --git a/jOOQ/src/main/java/org/jooq/impl/JSONArrayAgg.java b/jOOQ/src/main/java/org/jooq/impl/JSONArrayAgg.java index 67da581b8c..66004f97ef 100644 --- a/jOOQ/src/main/java/org/jooq/impl/JSONArrayAgg.java +++ b/jOOQ/src/main/java/org/jooq/impl/JSONArrayAgg.java @@ -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, ? extends Field> mapper, JSONOnNull onNull0) { ctx.visit(N_JSON_ARRAYAGG).sql('('); acceptDistinct(ctx); + QueryPartListView> 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); diff --git a/jOOQ/src/main/java/org/jooq/impl/Keywords.java b/jOOQ/src/main/java/org/jooq/impl/Keywords.java index 3fc18a71d9..80d46a5cb7 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Keywords.java +++ b/jOOQ/src/main/java/org/jooq/impl/Keywords.java @@ -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");