diff --git a/jOOQ/src/main/java/org/jooq/impl/Ceil.java b/jOOQ/src/main/java/org/jooq/impl/Ceil.java index 9c939b1bdb..586b7e849b 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Ceil.java +++ b/jOOQ/src/main/java/org/jooq/impl/Ceil.java @@ -67,9 +67,9 @@ final class Ceil extends AbstractFunction { - // evaluate "ceil" if unavailable + // [#8275] Improved emulation for SQLite case SQLITE: - return DSL.round(argument.add(0.499999999999999)); + return DSL.field("({cast}({0} {as} {bigint}) + ({0} > {cast}({0} {as} {bigint})))", getDataType(), argument); diff --git a/jOOQ/src/main/java/org/jooq/impl/Floor.java b/jOOQ/src/main/java/org/jooq/impl/Floor.java index e8efc3fbe2..c4e164bd6c 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Floor.java +++ b/jOOQ/src/main/java/org/jooq/impl/Floor.java @@ -66,8 +66,9 @@ final class Floor extends AbstractFunction { + // [#8275] Improved emulation for SQLite case SQLITE: - return DSL.round(argument.sub(0.499999999999999)); + return DSL.field("({cast}({0} {as} {bigint}) - ({0} < {cast}({0} {as} {bigint})))", getDataType(), argument); default: return DSL.field("{floor}({0})", getDataType(), argument);