diff --git a/jOOQ/src/main/java/org/jooq/impl/JSONArray.java b/jOOQ/src/main/java/org/jooq/impl/JSONArray.java index 879da26648..a52dd814e7 100644 --- a/jOOQ/src/main/java/org/jooq/impl/JSONArray.java +++ b/jOOQ/src/main/java/org/jooq/impl/JSONArray.java @@ -39,16 +39,19 @@ package org.jooq.impl; import static org.jooq.SQLDialect.H2; import static org.jooq.impl.DSL.jsonArrayAgg; +import static org.jooq.impl.DSL.jsonbArrayAgg; import static org.jooq.impl.DSL.row; import static org.jooq.impl.DSL.select; -import static org.jooq.impl.DSL.unquotedName; import static org.jooq.impl.DSL.values; import static org.jooq.impl.JSONEntryImpl.jsonCastMapper; import static org.jooq.impl.JSONNull.JSONNullType.ABSENT_ON_NULL; import static org.jooq.impl.JSONNull.JSONNullType.NULL_ON_NULL; import static org.jooq.impl.Keywords.K_JSON_ARRAY; +import static org.jooq.impl.Names.N_JSONB_BUILD_ARRAY; import static org.jooq.impl.Names.N_JSON_ARRAY; +import static org.jooq.impl.Names.N_JSON_BUILD_ARRAY; import static org.jooq.impl.QueryPartListView.wrap; +import static org.jooq.impl.SQLDataType.JSON; import java.util.Collection; @@ -122,10 +125,14 @@ final class JSONArray extends AbstractField implements JSONArrayNullStep t = values(rows).as("t", "a"); Field a = t.field("a"); - ctx.visit(DSL.field(select(jsonArrayAgg(a)).from(t).where(a.isNotNull()))); + ctx.visit(DSL.field( + select((Field) (getDataType() == JSON ? jsonArrayAgg(a) : jsonbArrayAgg(a))) + .from(t) + .where(a.isNotNull()) + )); } else { - ctx.visit(unquotedName("json_build_array")).sql('(').visit(args).sql(')'); + ctx.visit(getDataType() == JSON ? N_JSON_BUILD_ARRAY : N_JSONB_BUILD_ARRAY).sql('(').visit(args).sql(')'); } break; diff --git a/jOOQ/src/main/java/org/jooq/impl/Names.java b/jOOQ/src/main/java/org/jooq/impl/Names.java index 3b064dbc88..9d05de1995 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Names.java +++ b/jOOQ/src/main/java/org/jooq/impl/Names.java @@ -132,6 +132,7 @@ final class Names { static final Name N_JSON_AGG = unquotedName("json_agg"); static final Name N_JSON_ARRAY = unquotedName("json_array"); static final Name N_JSON_ARRAYAGG = unquotedName("json_arrayagg"); + static final Name N_JSON_BUILD_ARRAY = unquotedName("json_build_array"); static final Name N_JSON_CONTAINS_PATH = unquotedName("json_contains_path"); static final Name N_JSON_EXTRACT = unquotedName("json_extract"); static final Name N_JSON_MERGE = unquotedName("json_merge"); @@ -142,6 +143,7 @@ final class Names { static final Name N_JSON_TABLE = unquotedName("json_table"); static final Name N_JSON_VALUE = unquotedName("json_value"); static final Name N_JSONB_AGG = unquotedName("jsonb_agg"); + static final Name N_JSONB_BUILD_ARRAY = unquotedName("jsonb_build_array"); static final Name N_JSONB_OBJECT = unquotedName("jsonb_object"); static final Name N_JSONB_OBJECT_AGG = unquotedName("jsonb_object_agg"); static final Name N_JSONB_OBJECTAGG = unquotedName("jsonb_objectagg");