+ * This applies to any of these types: + *
@@ -1408,6 +1423,7 @@ public interface DataTypedata() == null. This is consistent with jOOQ's general way of
* returning NULL from {@link Result} and {@link Record} methods.
*/
-public class Decfloat implements Data {
+public final class Decfloat extends Number implements Data {
private final String data;
private transient BigDecimal coefficient;
@@ -97,6 +97,34 @@ public class Decfloat implements Data {
return data == null ? null : decfloat(data);
}
+ // ------------------------------------------------------------------------
+ // The Number API
+ // ------------------------------------------------------------------------
+
+ @Override
+ public final double doubleValue() {
+ return Double.valueOf(data);
+ }
+
+ @Override
+ public final float floatValue() {
+ return Float.valueOf(data);
+ }
+
+ @Override
+ public final int intValue() {
+ return (int) doubleValue();
+ }
+
+ @Override
+ public final long longValue() {
+ return (long) doubleValue();
+ }
+
+ // ------------------------------------------------------------------------
+ // The Object API
+ // ------------------------------------------------------------------------
+
@Override
public int hashCode() {
parse();
@@ -156,7 +184,7 @@ public class Decfloat implements Data {
return String.valueOf(data);
}
- private void parse() {
+ private final void parse() {
if (coefficient != null || special != null)
return;
diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractDataType.java b/jOOQ/src/main/java/org/jooq/impl/AbstractDataType.java
index 944756386c..0f7f83940e 100644
--- a/jOOQ/src/main/java/org/jooq/impl/AbstractDataType.java
+++ b/jOOQ/src/main/java/org/jooq/impl/AbstractDataType.java
@@ -73,6 +73,7 @@ import static org.jooq.impl.QOM.GenerationOption.VIRTUAL;
import static org.jooq.impl.SQLDataType.BLOB;
import static org.jooq.impl.SQLDataType.CHAR;
import static org.jooq.impl.SQLDataType.CLOB;
+import static org.jooq.impl.SQLDataType.LONGNVARCHAR;
import static org.jooq.impl.SQLDataType.NCHAR;
import static org.jooq.impl.SQLDataType.NCLOB;
import static org.jooq.impl.SQLDataType.NVARCHAR;
@@ -114,6 +115,7 @@ import org.jooq.ContextConverter;
import org.jooq.Converter;
import org.jooq.ConverterContext;
import org.jooq.DataType;
+import org.jooq.Decfloat;
import org.jooq.Domain;
import org.jooq.EmbeddableRecord;
import org.jooq.EnumType;
@@ -863,6 +865,14 @@ implements
return Number.class.isAssignableFrom(tType0()) && !isInterval();
}
+ @Override
+ public final boolean isDecimal() {
+ Class> tType = tType0();
+ return BigInteger.class == tType
+ || BigDecimal.class == tType
+ || Decfloat.class == tType;
+ }
+
@Override
public final boolean isInteger() {
Class> tType = tType0();
@@ -879,6 +889,7 @@ implements
Class> tType = tType0();
return Float.class == tType
|| Double.class == tType
+ || Decfloat.class == tType
;
}
@@ -898,11 +909,14 @@ implements
return t == NCHAR
|| t == NCLOB
|| t == NVARCHAR
+ || t == LONGNVARCHAR
// [#9540] [#10368] In case the constant literals haven't been initialised yet
|| NCHAR == null && "nchar".equals(t.typeName0())
|| NCLOB == null && "nclob".equals(t.typeName0())
- || NVARCHAR == null && "nvarchar".equals(t.typeName0());
+ || NVARCHAR == null && "nvarchar".equals(t.typeName0())
+ || LONGNVARCHAR == null && "longnvarchar".equals(t.typeName0())
+ ;
}
@Override