diff --git a/jOOQ/src/main/java/org/jooq/impl/Substring.java b/jOOQ/src/main/java/org/jooq/impl/Substring.java index cf12c22f59..b23930bb36 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Substring.java +++ b/jOOQ/src/main/java/org/jooq/impl/Substring.java @@ -35,6 +35,7 @@ */ package org.jooq.impl; +import static org.jooq.impl.Factory.field; import static org.jooq.impl.Factory.function; import static org.jooq.impl.Factory.inline; @@ -76,6 +77,20 @@ class Substring extends AbstractFunction { } } + // [#722] For undocumented reasons, Ingres needs explicit casting + case INGRES: { + if (getArguments().length == 2) { + return field("{substring}({0}, {cast}({1} {as integer}))", + SQLDataType.VARCHAR, + getArguments()); + } + else { + return field("{substring}({0}, {cast}({1} {as integer}), {cast}({2} {as integer}))", + SQLDataType.VARCHAR, + getArguments()); + } + } + case DB2: case DERBY: case ORACLE: diff --git a/jOOQ/src/main/java/org/jooq/impl/Val.java b/jOOQ/src/main/java/org/jooq/impl/Val.java index 7a23db4725..de548b843c 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Val.java +++ b/jOOQ/src/main/java/org/jooq/impl/Val.java @@ -158,9 +158,6 @@ class Val extends AbstractField implements Param { case H2: case HSQLDB: - // [#722] TODO This is probably not entirely right. - case INGRES: - // [#1261] There are only a few corner-cases, where this is // really needed. Check back on related CUBRID bugs case CUBRID: