diff --git a/jOOQ-test/src/org/jooq/test/jOOQAbstractTest.java b/jOOQ-test/src/org/jooq/test/jOOQAbstractTest.java index 75ac308470..2cb55d6999 100644 --- a/jOOQ-test/src/org/jooq/test/jOOQAbstractTest.java +++ b/jOOQ-test/src/org/jooq/test/jOOQAbstractTest.java @@ -4832,12 +4832,23 @@ public abstract class jOOQAbstractTest< Field f3b = val(-1.111).floor(); Field f4b = val(-1.111).ceil(); + Field f1c = val(2.0f).round(); + Field f2c = val(2.0f).round(2); + Field f3c = val(2.0f).floor(); + Field f4c = val(2.0f).ceil(); + Field f1d = val(-2.0).round(); + Field f2d = val(-2.0).round(2); + Field f3d = val(-2.0).floor(); + Field f4d = val(-2.0).ceil(); + // Some arbitrary checks on having multiple select clauses Record record = create().select(f1a) .select(f2a, f3a) .select(f4a) - .select(f1b, f2b, f3b, f4b).fetchOne(); + .select(f1b, f2b, f3b, f4b) + .select(f1c, f2c, f3c, f4c) + .select(f1d, f2d, f3d, f4d).fetchOne(); assertNotNull(record); assertEquals("1.0", record.getValueAsString(f1a)); @@ -4850,6 +4861,16 @@ public abstract class jOOQAbstractTest< assertEquals("-2.0", record.getValueAsString(f3b)); assertEquals("-1.0", record.getValueAsString(f4b)); + assertEquals("2.0", record.getValueAsString(f1c)); + assertEquals("2.0", record.getValueAsString(f2c)); + assertEquals("2.0", record.getValueAsString(f3c)); + assertEquals("2.0", record.getValueAsString(f4c)); + + assertEquals("-2.0", record.getValueAsString(f1d)); + assertEquals("-2.0", record.getValueAsString(f2d)); + assertEquals("-2.0", record.getValueAsString(f3d)); + assertEquals("-2.0", record.getValueAsString(f4d)); + // Greatest and least record = create().select( val(1).greatest(2, 3, 4), diff --git a/jOOQ/src/main/java/org/jooq/impl/Ceil.java b/jOOQ/src/main/java/org/jooq/impl/Ceil.java index 1346395300..185697e800 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Ceil.java +++ b/jOOQ/src/main/java/org/jooq/impl/Ceil.java @@ -60,9 +60,9 @@ class Ceil extends AbstractFunction { final Field getFunction0(Configuration configuration) { switch (configuration.getDialect()) { - // evaluate "floor" if unavailable + // evaluate "ceil" if unavailable case SQLITE: - return argument.add(0.5).round(); + return argument.add(0.499999999999999).round(); case ASE: case H2: diff --git a/jOOQ/src/main/java/org/jooq/impl/Floor.java b/jOOQ/src/main/java/org/jooq/impl/Floor.java index 8cd1d39d60..29bdf8eab0 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Floor.java +++ b/jOOQ/src/main/java/org/jooq/impl/Floor.java @@ -62,7 +62,7 @@ class Floor extends AbstractFunction { // evaluate "floor" if unavailable case SQLITE: - return argument.sub(0.5).round(); + return argument.sub(0.499999999999999).round(); default: return new Function("floor", getDataType(), argument);