diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractDataType.java b/jOOQ/src/main/java/org/jooq/impl/AbstractDataType.java index 469f2f2021..29baa454d7 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractDataType.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractDataType.java @@ -676,8 +676,21 @@ implements private final String getCastTypeName1(Configuration configuration) { SQLDialect dialect = configuration.dialect(); + if (isMultiset()) { + switch (Tools.emulateMultiset(configuration)) { + case JSON: + return SQLDataType.JSON.getCastTypeName(configuration); + case JSONB: + return SQLDataType.JSONB.getCastTypeName(configuration); + case XML: + return SQLDataType.XML.getCastTypeName(configuration); + default: + return castTypeName0(); + } + } + // [#10277] Various qualified, user defined types - if (isEnum() || isUDT()) { + else if (isEnum() || isUDT()) { return renderedTypeName0(configuration); } diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java b/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java index da273fb82b..77510049e1 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java @@ -4874,6 +4874,26 @@ public class DefaultBinding implements Binding { } } + @Override + final void sqlBind0(BindingSQLContext ctx, Result value) throws SQLException { + switch (emulateMultiset(ctx.configuration())) { + case JSON: + jsonBinding.sqlBind0((BindingSQLContext) ctx, json(value.formatJSON(jsonFormat(ctx)))); + break; + + case JSONB: + jsonbBinding.sqlBind0((BindingSQLContext) ctx, jsonb(value.formatJSON(jsonFormat(ctx)))); + break; + + case XML: + xmlBinding.sqlBind0((BindingSQLContext) ctx, xml(value.formatXML(XML_FORMAT))); + break; + + default: + throw new UnsupportedOperationException("Cannot inline a value of type Result using " + emulateMultiset(ctx.configuration()) + " MULTISET emulation."); + } + } + @Override final void set0(BindingSetStatementContext ctx, Result value) throws SQLException { switch (emulateMultiset(ctx.configuration())) {