From 90a52d9d17b4d765eb6f9cd077ddb5f5d2a922ba Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Thu, 25 Feb 2021 22:52:11 +0100 Subject: [PATCH] [jOOQ/jOOQ#10572] Parse PG JSON[B]_OBJECT_AGG --- jOOQ/src/main/java/org/jooq/impl/ParserImpl.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java index 5a82d35e46..b4675f49a6 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java @@ -178,11 +178,13 @@ import static org.jooq.impl.DSL.jsonArray; import static org.jooq.impl.DSL.jsonArrayAgg; import static org.jooq.impl.DSL.jsonExists; import static org.jooq.impl.DSL.jsonObject; +import static org.jooq.impl.DSL.jsonObjectAgg; import static org.jooq.impl.DSL.jsonTable; import static org.jooq.impl.DSL.jsonValue; import static org.jooq.impl.DSL.jsonbArray; import static org.jooq.impl.DSL.jsonbArrayAgg; import static org.jooq.impl.DSL.jsonbObject; +import static org.jooq.impl.DSL.jsonbObjectAgg; import static org.jooq.impl.DSL.key; import static org.jooq.impl.DSL.keyword; import static org.jooq.impl.DSL.lag; @@ -8601,7 +8603,9 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { } private final AggregateFilterStep parseJSONObjectAggFunctionIf() { - if (parseFunctionNameIf("JSON_OBJECTAGG")) { + boolean jsonb = false; + + if (parseFunctionNameIf("JSON_OBJECTAGG", "JSON_OBJECT_AGG") || (jsonb = parseFunctionNameIf("JSONB_OBJECT_AGG"))) { AggregateFilterStep result; JSONObjectAggNullStep s1; JSONObjectAggReturningStep s2; @@ -8609,7 +8613,7 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { DataType returning; parse('('); - result = s2 = s1 = DSL.jsonObjectAgg(parseJSONEntry()); + result = s2 = s1 = jsonb ? jsonbObjectAgg(parseJSONEntry()) : jsonObjectAgg(parseJSONEntry()); if ((onNull = parseJSONNullTypeIf()) != null) result = s2 = onNull == ABSENT_ON_NULL ? s1.absentOnNull() : s1.nullOnNull();