From 55dcef15ceac9f96843566bdb8a8e15614d05ffe Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Tue, 10 Jan 2023 09:25:04 +0100 Subject: [PATCH] [jOOQ/jOOQ#14466] Wrong result column type for requested conversion when reading JSONB_ARRAYAGG in DB2 --- .../main/java/org/jooq/impl/JSONArrayAgg.java | 1 + .../java/org/jooq/impl/JSONObjectAgg.java | 21 ++++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/JSONArrayAgg.java b/jOOQ/src/main/java/org/jooq/impl/JSONArrayAgg.java index 8bf48850a5..a5e0642590 100644 --- a/jOOQ/src/main/java/org/jooq/impl/JSONArrayAgg.java +++ b/jOOQ/src/main/java/org/jooq/impl/JSONArrayAgg.java @@ -57,6 +57,7 @@ import static org.jooq.impl.Names.N_JSON_GROUP_ARRAY; import static org.jooq.impl.Names.N_JSON_QUOTE; 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.SQLDataType.BLOB; import static org.jooq.impl.SQLDataType.JSON; import static org.jooq.impl.SQLDataType.VARCHAR; import static org.jooq.impl.Tools.BooleanDataKey.DATA_FORCE_CASE_ELSE_NULL; diff --git a/jOOQ/src/main/java/org/jooq/impl/JSONObjectAgg.java b/jOOQ/src/main/java/org/jooq/impl/JSONObjectAgg.java index 0ca5803939..56399701fb 100644 --- a/jOOQ/src/main/java/org/jooq/impl/JSONObjectAgg.java +++ b/jOOQ/src/main/java/org/jooq/impl/JSONObjectAgg.java @@ -50,6 +50,7 @@ import static org.jooq.impl.Names.N_JSON_OBJECTAGG; import static org.jooq.impl.Names.N_JSON_OBJECT_AGG; 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.SQLDataType.BLOB; import static org.jooq.impl.SQLDataType.JSON; import static org.jooq.impl.SQLDataType.VARCHAR; @@ -64,6 +65,8 @@ import org.jooq.JSONObjectAggNullStep; // ... import org.jooq.impl.QOM.JSONOnNull; +import org.jetbrains.annotations.NotNull; + /** * The JSON object constructor. @@ -160,6 +163,10 @@ implements } private final void acceptGroupConcat(Context ctx) { + ctx.sql('(').visit(groupConcatEmulation(ctx)).sql(')'); + } + + private final Field groupConcatEmulation(Context ctx) { final Field listagg = CustomField.of(Names.N_GROUP_CONCAT, VARCHAR, c1 -> { Field o1 = jsonObject(entry.key(), entry.value()); @@ -177,7 +184,19 @@ implements acceptOverClause(c1); }); - ctx.sql('(').visit(DSL.concat(inline('{'), listagg, inline('}'))).sql(')'); + Field result = DSL.concat(inline('{'), listagg, inline('}')); + + switch (ctx.family()) { + + + + + + + + default: + return result; + } }