From 7c72fe155b42ef77a2837543853ccead4e95885f Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Thu, 8 Jun 2023 17:38:19 +0200 Subject: [PATCH] [jOOQ/jOOQ#8439] PostgreSQL: array() causes exception --- .../java/org/jooq/impl/DefaultBinding.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java b/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java index c9b8bae66e..8d013219f6 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java @@ -4908,15 +4908,23 @@ public class DefaultBinding implements Binding { final UUID get0(BindingGetResultSetContext ctx) throws SQLException { switch (ctx.family()) { - // [#1624] Some JDBC drivers natively support the - // java.util.UUID data type - + // [#1624] Some JDBC drivers natively support the java.util.UUID data type + // [#8439] In edge cases (e.g. arrays over domains) the type info may have + // been lost between server and JDBC driver, so let's expect PGobject case H2: case POSTGRES: - case YUGABYTEDB: - return Convert.convert(ctx.resultSet().getObject(ctx.index()), UUID.class); + case YUGABYTEDB: { + Object o = ctx.resultSet().getObject(ctx.index()); + + if (o == null) + return null; + else if (o instanceof UUID u) + return u; + else + return Convert.convert(o.toString(), UUID.class); + }