diff --git a/jOOQ/src/main/java/org/jooq/Decfloat.java b/jOOQ/src/main/java/org/jooq/Decfloat.java index 89e0f4493a..8065c883f8 100644 --- a/jOOQ/src/main/java/org/jooq/Decfloat.java +++ b/jOOQ/src/main/java/org/jooq/Decfloat.java @@ -219,6 +219,7 @@ public final class Decfloat extends Number implements Data { switch (lc = data.toLowerCase()) { case "+nan": case "nan": + case "-nan": special = Special.NAN; break; diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java b/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java index b89f3c189c..3ffdced8c7 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java @@ -2946,7 +2946,10 @@ public class DefaultBinding implements Binding { static final Field nan(BindingSQLContext ctx, DataType type) { switch (ctx.family()) { case FIREBIRD: - return log(inline(1), inline(1)); + if (type.isDecimal()) + return inline("NaN").cast(type); + else + return log(inline(1), inline(1)); case HSQLDB: return inline(0.0).div(field("0.0e0", (DataType) type)); default: @@ -2958,7 +2961,10 @@ public class DefaultBinding implements Binding { static final Field infinity(BindingSQLContext ctx, DataType type, boolean negative) { switch (ctx.family()) { case FIREBIRD: - return log(negative ? inline(0.5) : inline(1.5), inline(1)); + if (type.isDecimal()) + return inline(negative ? "-Infinity" : "Infinity").cast(type); + else + return log(negative ? inline(0.5) : inline(1.5), inline(1)); case HSQLDB: return inline(negative ? -1.0 : 1.0).div(field("0.0e0", (DataType) type)); default: