diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractDataType.java b/jOOQ/src/main/java/org/jooq/impl/AbstractDataType.java index f9f7584633..c80583f963 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractDataType.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractDataType.java @@ -39,6 +39,7 @@ package org.jooq.impl; import static org.jooq.Nullability.NOT_NULL; import static org.jooq.SQLDialect.DERBY; +// ... import static org.jooq.impl.DSL.unquotedName; import static org.jooq.impl.SQLDataType.BLOB; import static org.jooq.impl.SQLDataType.CLOB; @@ -447,6 +448,12 @@ abstract class AbstractDataType extends AbstractNamed implements DataType // precision support in DDL. if (isTimestamp() && NO_SUPPORT_TIMESTAMP_PRECISION.contains(dialect)) return castTypePrefix0() + castTypeSuffix0(); + + + + + + else if (scaleDefined() && scale() > 0) return castTypePrefix0() + "(" + precision() + ", " + scale() + ")" + castTypeSuffix0(); else diff --git a/jOOQ/src/main/java/org/jooq/impl/Cast.java b/jOOQ/src/main/java/org/jooq/impl/Cast.java index 18f74091a6..8f0714bcee 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Cast.java +++ b/jOOQ/src/main/java/org/jooq/impl/Cast.java @@ -97,6 +97,10 @@ final class Cast extends AbstractField { + + + + case DERBY: ctx.visit(new CastDerby()); break; @@ -258,6 +262,33 @@ final class Cast extends AbstractField { + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java b/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java index ded0794b3e..56c3486c3e 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java @@ -103,8 +103,10 @@ import static org.jooq.impl.Keywords.K_TRUE; import static org.jooq.impl.Keywords.K_YEAR_TO_DAY; import static org.jooq.impl.Keywords.K_YEAR_TO_FRACTION; import static org.jooq.impl.SQLDataType.BLOB; +import static org.jooq.impl.SQLDataType.CHAR; import static org.jooq.impl.SQLDataType.DATE; import static org.jooq.impl.SQLDataType.DOUBLE; +import static org.jooq.impl.SQLDataType.LONGVARCHAR; import static org.jooq.impl.SQLDataType.OTHER; import static org.jooq.impl.SQLDataType.ROWID; import static org.jooq.impl.SQLDataType.TIME; @@ -709,7 +711,7 @@ public class DefaultBinding implements Binding { // [#1727] VARCHAR types should be cast to their actual lengths in some // dialects - else if (FIREBIRD == family && (sqlDataType == SQLDataType.VARCHAR || sqlDataType == SQLDataType.CHAR)) + else if (FIREBIRD == family && (sqlDataType == VARCHAR || sqlDataType == CHAR)) if (dataType.lengthDefined()) sqlCast(ctx, converted, dataType, dataType.length(), null, null); else