[#860] SQLite CEIL function is incorrectly simulated. CEIL(2.0) returns 3.0 instead of 2.0
This commit is contained in:
parent
362e31e019
commit
d4c01f8397
@ -4832,12 +4832,23 @@ public abstract class jOOQAbstractTest<
|
||||
Field<Double> f3b = val(-1.111).floor();
|
||||
Field<Double> f4b = val(-1.111).ceil();
|
||||
|
||||
Field<Float> f1c = val(2.0f).round();
|
||||
Field<Float> f2c = val(2.0f).round(2);
|
||||
Field<Float> f3c = val(2.0f).floor();
|
||||
Field<Float> f4c = val(2.0f).ceil();
|
||||
Field<Double> f1d = val(-2.0).round();
|
||||
Field<Double> f2d = val(-2.0).round(2);
|
||||
Field<Double> f3d = val(-2.0).floor();
|
||||
Field<Double> 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),
|
||||
|
||||
@ -60,9 +60,9 @@ class Ceil<T> extends AbstractFunction<T> {
|
||||
final Field<T> 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:
|
||||
|
||||
@ -62,7 +62,7 @@ class Floor<T> extends AbstractFunction<T> {
|
||||
|
||||
// evaluate "floor" if unavailable
|
||||
case SQLITE:
|
||||
return argument.sub(0.5).round();
|
||||
return argument.sub(0.499999999999999).round();
|
||||
|
||||
default:
|
||||
return new Function<T>("floor", getDataType(), argument);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user