From a00a9da77d55ed53a3ff03d0538ba5183754f30c Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Wed, 7 Sep 2022 15:38:19 +0200 Subject: [PATCH] [jOOQ/jOOQ#11679] Cannot fetch inline NULL value as array type in HSQLDB --- .../main/java/org/jooq/impl/DefaultBinding.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java b/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java index c4dd8fe19b..fe4f94830b 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java @@ -1314,9 +1314,20 @@ public class DefaultBinding implements Binding { case YUGABYTEDB: return pgGetArray(ctx, ctx.resultSet(), dataType, ctx.index()); + case HSQLDB: { + + // [#13965] Some HSQLDB versions have trouble reading NULL values as arrays + // See also: https://sourceforge.net/p/hsqldb/bugs/1662/ + if (ctx.resultSet().getObject(ctx.index()) == null) + return null; + + // However, due to a historic HSQLDB bug, we better not rely on rs.getObject() here: + // See https://sourceforge.net/p/hsqldb/bugs/1102/ + else + return convertArray(ctx.resultSet().getArray(ctx.index()), dataType.getType()); + } + default: - // Note: due to a HSQLDB bug, it is not recommended to call rs.getObject() here: - // See https://sourceforge.net/tracker/?func=detail&aid=3181365&group_id=23316&atid=378131 return convertArray(ctx.resultSet().getArray(ctx.index()), dataType.getType()); } }