From ea3c4590b312f23f32ab94263d357acbc8914b79 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Wed, 26 Oct 2022 11:00:34 +0200 Subject: [PATCH] [jOOQ/jOOQ#14132] Code generator shouldn't generate precision on non-decimal types --- .../java/org/jooq/codegen/JavaGenerator.java | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java b/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java index ef68410d9c..8595fc7f95 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java +++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java @@ -8087,14 +8087,16 @@ public class JavaGenerator extends AbstractGenerator { String precision = ""; String scale = ""; - if (column.getType(resolver(out)).getLength() > 0) { - length = ", length = " + column.getType(resolver(out)).getLength(); + DataTypeDefinition type = column.getType(resolver(out)); + DataType t = getRuntimeDataType(type); + if (t.hasLength() && type.getLength() > 0) { + length = ", length = " + type.getLength(); } - else if (column.getType(resolver(out)).getPrecision() > 0) { - precision = ", precision = " + column.getType(resolver(out)).getPrecision(); + else if (t.hasPrecision() && type.getPrecision() > 0) { + precision = ", precision = " + type.getPrecision(); - if (column.getType(resolver(out)).getScale() > 0) { - scale = ", scale = " + column.getType(resolver(out)).getScale(); + if (t.hasScale() && type.getScale() > 0) { + scale = ", scale = " + type.getScale(); } } @@ -9468,6 +9470,15 @@ public class JavaGenerator extends AbstractGenerator { ); } + private DataType getRuntimeDataType(DataTypeDefinition type) { + try { + return mapTypes(getDataType(type.getDatabase(), type.getType(), type.getPrecision(), type.getScale())); + } + catch (SQLDialectNotSupportedException ignore) { + return SQLDataType.OTHER; + } + } + /** * @deprecated - 3.9.0 - [#330] - Use {@link #getType(Database, SchemaDefinition, String, int, int, Name, String, String)} instead. */