From 6f7c73301466867cf02e8ea6a7eda11d05ed25bf Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Tue, 13 Jul 2021 17:45:26 +0200 Subject: [PATCH] [jOOQ/jOOQ#12168] Make JSON utils available to OSS edition --- .../java/org/jooq/impl/JSONEntryImpl.java | 45 ++++++++----------- 1 file changed, 19 insertions(+), 26 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/JSONEntryImpl.java b/jOOQ/src/main/java/org/jooq/impl/JSONEntryImpl.java index 7c4ccbd83a..2f20dbbf49 100644 --- a/jOOQ/src/main/java/org/jooq/impl/JSONEntryImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/JSONEntryImpl.java @@ -231,36 +231,29 @@ final class JSONEntryImpl extends AbstractQueryPart implements JSONEntry, return field; } + static final Field unescapeNestedJSON(Context ctx, Field value) { + // [#12086] Avoid escaping nested JSON + return + JSONEntryImpl.isJSON(ctx, value.getDataType()) + ? DSL.function(N_JSON_QUERY, value.getDataType(), value) + : value; + } + static final boolean isJSON(Scope scope, DataType t) { + return t.isJSON() + || t.isRecord() && (TRUE.equals(scope.data(DATA_MULTISET_CONTENT)) && emulateMultisetWithJSON(scope)) + || t.isMultiset() && emulateMultisetWithJSON(scope); + } + private static final boolean emulateMultisetWithJSON(Scope scope) { + return emulateMultiset(scope.configuration()) == NestedCollectionEmulation.JSON + || emulateMultiset(scope.configuration()) == NestedCollectionEmulation.JSONB; + } - - - - - - - - - - - - - - - - - - - - - - - - - - + static final Field booleanValAsVarchar(Field field) { + return field instanceof Val ? ((Val) field).convertTo0(VARCHAR) : field; + } static final Field jsonMerge(Scope scope, String empty, Field... fields) { return function(