From cfc5221ad3f6b2d8d3c8aa96be5e2a7539b1237d Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Mon, 11 Mar 2024 13:06:10 +0100 Subject: [PATCH] [jOOQ/jOOQ#16090] Handle DSL.val(T) and DSL.inline(T) --- jOOQ/src/main/java/org/jooq/impl/DSL.java | 3 ++- jOOQ/src/main/java/org/jooq/impl/DefaultDataType.java | 2 +- .../src/main/java/org/jooq/impl/LegacyConvertedDataType.java | 5 +++++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/DSL.java b/jOOQ/src/main/java/org/jooq/impl/DSL.java index ffed92d41e..f6c829e0bb 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DSL.java +++ b/jOOQ/src/main/java/org/jooq/impl/DSL.java @@ -33932,7 +33932,8 @@ public class DSL { static Param val0(T value, boolean inferredDataType) { Class type = value == null ? Object.class : value.getClass(); - return val0(value, getDataType0(type), inferredDataType); + DataType dataType = getDataType0(type); + return val0(value, dataType, inferredDataType || !(dataType instanceof BuiltInDataType)); } /** diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultDataType.java b/jOOQ/src/main/java/org/jooq/impl/DefaultDataType.java index 3ac2d66f19..6ece66efc0 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultDataType.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultDataType.java @@ -849,7 +849,7 @@ public class DefaultDataType extends AbstractDataTypeX { static final DataType check(DataType result) { // [#5713] [#15286] TODO: Move this to a dynamic type registry and make warning configurable - if (result instanceof LegacyConvertedDataType) { + if (LegacyConvertedDataType.isInstance(result)) { DiscouragedStaticTypeRegistryUsage e = new DiscouragedStaticTypeRegistryUsage(); getDataType.warn("Static type registry", """ diff --git a/jOOQ/src/main/java/org/jooq/impl/LegacyConvertedDataType.java b/jOOQ/src/main/java/org/jooq/impl/LegacyConvertedDataType.java index 03f9112eb9..6799c06deb 100644 --- a/jOOQ/src/main/java/org/jooq/impl/LegacyConvertedDataType.java +++ b/jOOQ/src/main/java/org/jooq/impl/LegacyConvertedDataType.java @@ -150,4 +150,9 @@ final class LegacyConvertedDataType extends DefaultDataType { public DataType asConvertedDataType(Converter converter) { return super.asConvertedDataType(new ChainedConverterBinding(getBinding(), converter)); } + + static final boolean isInstance(DataType t) { + return t instanceof LegacyConvertedDataType + || t instanceof DataTypeProxy && isInstance(((DataTypeProxy) t).type()); + } }