From 796da54e34d1e26d4925d87120d33f5bb302fd40 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Fri, 18 Aug 2023 15:26:49 +0200 Subject: [PATCH] [jOOQ/jOOQ#11485] Some RDBMS seem to prepend + to large years, e.g. +10000-01-01 --- jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java | 8 +++++++- jOOQ/src/main/java/org/jooq/impl/Like.java | 2 +- 2 files changed, 8 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 9c346732e8..dac07fca96 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java @@ -3319,7 +3319,13 @@ public class DefaultBinding implements Binding { int length; for (length = 0; length < maxLength && (pos + length) < string.length(); length++) { - int digit = string.charAt(pos + length) - '0'; + char c = string.charAt(pos + length); + + // [#11485] Some RDBMS seem to prepend + to large years, e.g. +10000-01-01 + if (c == '+' && length == 0) + continue; + + int digit = c - '0'; if (digit >= 0 && digit < 10) result = result * 10 + digit; diff --git a/jOOQ/src/main/java/org/jooq/impl/Like.java b/jOOQ/src/main/java/org/jooq/impl/Like.java index af416942b1..7c234351ad 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Like.java +++ b/jOOQ/src/main/java/org/jooq/impl/Like.java @@ -115,7 +115,7 @@ implements private static final Set REQUIRES_CAST_ON_LIKE = SQLDialect.supportedBy(DERBY, POSTGRES, YUGABYTEDB); - private static final Set NO_SUPPORT_ILIKE = SQLDialect.supportedBy(CUBRID, DERBY, FIREBIRD, HSQLDB, MARIADB, MYSQL, SQLITE); + private static final Set NO_SUPPORT_ILIKE = SQLDialect.supportedBy(CUBRID, DERBY, FIREBIRD, HSQLDB, MARIADB, MYSQL, SQLITE, TRINO); @Override public final void accept(Context ctx) {