diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java b/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java index ba58022231..1c84a4fa1e 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java @@ -965,9 +965,12 @@ public class DefaultBinding implements Binding { } else if ( ctx.family() == POSTGRES) { + + // [#8933] In some cases, we cannot derive the cast type from + // array type directly Class arrayType = type == Object[].class - ? componentType(value) + ? deriveArrayTypeFromComponentType(value) : type; ctx.render().visit(cast(inline(PostgresUtils.toPGArrayString(value)), arrayType)); @@ -992,7 +995,7 @@ public class DefaultBinding implements Binding { } } - private final Class componentType(Object[] value) { + private final Class deriveArrayTypeFromComponentType(Object[] value) { for (Object o : value) if (o != null) return java.lang.reflect.Array.newInstance(o.getClass(), 0).getClass();