From fc42afea15a6fb21915b5b486ed782c55976faa3 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Thu, 25 Feb 2021 22:13:56 +0100 Subject: [PATCH] [jOOQ/jOOQ#10572] [jOOQ/jOOQ#11474] Parse PG JSON[B]_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 939a1bff9f..8320c2ee45 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java @@ -174,9 +174,11 @@ import static org.jooq.impl.DSL.inline; import static org.jooq.impl.DSL.insert; import static org.jooq.impl.DSL.isnull; import static org.jooq.impl.DSL.isoDayOfWeek; +import static org.jooq.impl.DSL.jsonArrayAgg; import static org.jooq.impl.DSL.jsonExists; import static org.jooq.impl.DSL.jsonTable; import static org.jooq.impl.DSL.jsonValue; +import static org.jooq.impl.DSL.jsonbArrayAgg; import static org.jooq.impl.DSL.key; import static org.jooq.impl.DSL.keyword; import static org.jooq.impl.DSL.lag; @@ -8527,7 +8529,9 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { } private final AggregateFilterStep parseJSONArrayAggFunctionIf() { - if (parseFunctionNameIf("JSON_ARRAYAGG")) { + boolean jsonb = false; + + if (parseFunctionNameIf("JSON_ARRAYAGG", "JSON_AGG") || (jsonb = parseFunctionNameIf("JSONB_AGG"))) { AggregateFilterStep result; JSONArrayAggOrderByStep s1; JSONArrayAggNullStep s2; @@ -8536,7 +8540,7 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { DataType returning; parse('('); - result = s3 = s2 = s1 = DSL.jsonArrayAgg(parseField()); + result = s3 = s2 = s1 = jsonb ? jsonbArrayAgg(parseField()) : jsonArrayAgg(parseField()); if (parseKeywordIf("ORDER BY")) result = s3 = s2 = s1.orderBy(parseList(',', ParseContext::parseSortField));