From 2b259a3e67e2a6198768636bbf5b393de23038e1 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Thu, 15 Feb 2024 10:44:31 +0100 Subject: [PATCH] [jOOQ/jOOQ#16287] Work around duckdb/duckdb#10682 --- .../java/org/jooq/impl/DefaultBinding.java | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java b/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java index f506b9dc52..4a6d8ce35b 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java @@ -4797,14 +4797,22 @@ public class DefaultBinding implements Binding { @Override final Time get0(BindingGetResultSetContext ctx) throws SQLException { - // SQLite's type affinity needs special care... - if (ctx.family() == SQLDialect.SQLITE) { - String time = ctx.resultSet().getString(ctx.index()); - return time == null ? null : new Time(parse(Time.class, time)); - } + switch (ctx.family()) { - else { - return ctx.resultSet().getTime(ctx.index()); + // ResultSet.getTime() isn't implemented correctly, see: https://github.com/duckdb/duckdb/issues/10682 + case DUCKDB: { + String time = ctx.resultSet().getString(ctx.index()); + return time == null ? null : Convert.convert(time, Time.class); + } + + // SQLite's type affinity needs special care... + case SQLITE: { + String time = ctx.resultSet().getString(ctx.index()); + return time == null ? null : new Time(parse(Time.class, time)); + } + + default: + return ctx.resultSet().getTime(ctx.index()); } }