diff --git a/jOOQ/src/main/java/org/jooq/impl/JSONObjectAgg.java b/jOOQ/src/main/java/org/jooq/impl/JSONObjectAgg.java index 72d5ae213a..2be2b53bea 100644 --- a/jOOQ/src/main/java/org/jooq/impl/JSONObjectAgg.java +++ b/jOOQ/src/main/java/org/jooq/impl/JSONObjectAgg.java @@ -53,6 +53,7 @@ import static org.jooq.impl.SQLDataType.JSON; import org.jooq.Context; import org.jooq.DataType; import org.jooq.Field; +import org.jooq.JSON; import org.jooq.JSONEntry; import org.jooq.JSONObjectAggNullStep; @@ -132,7 +133,19 @@ implements JSONObjectAggNullStep { value = entry.value(); } else { - value = jsonValue(jsonObject(inline("x"), entry.value()), inline("$.x")); + Field x = jsonObject(inline("x"), entry.value()); + + switch (ctx.family()) { + + + + + + + default: + value = jsonValue(x, inline("$.x")); + break; + } if (nullClause == ABSENT_ON_NULL) value = when(entry.value().isNull(), inline((String) null)).else_((Field) value); diff --git a/jOOQ/src/main/java/org/jooq/impl/JSONValue.java b/jOOQ/src/main/java/org/jooq/impl/JSONValue.java index 7096c1bd42..df06cfa8b2 100644 --- a/jOOQ/src/main/java/org/jooq/impl/JSONValue.java +++ b/jOOQ/src/main/java/org/jooq/impl/JSONValue.java @@ -182,6 +182,9 @@ implements ctx.visit(N_JSON_EXTRACT).sql('(').visit(json).sql(", ").visit(path).sql(')'); break; + + + case POSTGRES: ctx.visit(N_JSONB_PATH_QUERY_FIRST).sql('(').visit(castIfNeeded(json, JSONB)).sql(", ").visit(path).sql("::jsonpath)"); break;