From f7a86f1cddd56069aa010a353eef86ee396483fa Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Fri, 22 Oct 2021 17:59:17 +0200 Subject: [PATCH] [jOOQ/jOOQ#12549] Wrong JSON_MERGE_PRESERVE function generated when embedding JSON in MULTISET in MariaDB and MySQL --- jOOQ/src/main/java/org/jooq/impl/Multiset.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/Multiset.java b/jOOQ/src/main/java/org/jooq/impl/Multiset.java index ddbdb90e9c..ca0976dd88 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Multiset.java +++ b/jOOQ/src/main/java/org/jooq/impl/Multiset.java @@ -64,6 +64,7 @@ import static org.jooq.impl.JSONEntryImpl.isJSON; import static org.jooq.impl.Keywords.K_MULTISET; import static org.jooq.impl.Names.N_JSON_MERGE; import static org.jooq.impl.Names.N_JSON_MERGE_PRESERVE; +import static org.jooq.impl.Names.N_JSON_QUERY; import static org.jooq.impl.Names.N_MULTISET; import static org.jooq.impl.Names.N_RECORD; import static org.jooq.impl.Names.N_RESULT; @@ -391,12 +392,13 @@ final class Multiset extends AbstractField> implemen private static final Field jsonMerge(Scope scope, String empty, Field field) { // [#12168] Yet another MariaDB JSON un-escaping workaround https://jira.mariadb.org/browse/MDEV-26134 + // [#12549] Using JSON_MERGE_PRESERVE doesn't work here, as we might not know the user content return REQUIRE_JSON_MERGE.contains(scope.dialect()) && isJSON(scope, field.getDataType()) ? function( - SUPPORT_JSON_MERGE_PRESERVE.contains(scope.dialect()) ? N_JSON_MERGE_PRESERVE : N_JSON_MERGE, + N_JSON_QUERY, field.getDataType(), - inline(empty), - field + field, + inline("$") ) : field; }