From 4755504dfac5d8b88258478de8d8bfe49b1a84df Mon Sep 17 00:00:00 2001 From: lukaseder Date: Tue, 24 May 2016 16:29:58 +0200 Subject: [PATCH] [#5291] Bad DataType.defaultValue() call generated for MySQL tables --- .../java/org/jooq/util/JavaGenerator.java | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/jOOQ-codegen/src/main/java/org/jooq/util/JavaGenerator.java b/jOOQ-codegen/src/main/java/org/jooq/util/JavaGenerator.java index 66d90366df..d852c06050 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/util/JavaGenerator.java +++ b/jOOQ-codegen/src/main/java/org/jooq/util/JavaGenerator.java @@ -41,6 +41,8 @@ package org.jooq.util; +import static java.util.Arrays.asList; +import static org.jooq.SQLDialect.MYSQL; import static org.jooq.tools.StringUtils.defaultIfBlank; import static org.jooq.tools.StringUtils.defaultString; import static org.jooq.util.AbstractGenerator.Language.JAVA; @@ -5075,12 +5077,24 @@ public class JavaGenerator extends AbstractGenerator { if (!dataType.nullable()) sb.append(".nullable(false)"); - if (dataType.defaulted()) - sb.append(".defaultValue(org.jooq.impl.DSL.field(\"") - .append(escapeString(d)) - .append("\", ") + // [#5291] Some dialects report valid SQL expresions (e.g. PostgreSQL), others + // report actual values (e.g. MySQL). + if (dataType.defaulted()) { + sb.append(".defaultValue("); + + if (asList(MYSQL).contains(db.getDialect().family())) + sb.append("org.jooq.impl.DSL.inline(\"") + .append(escapeString(d)) + .append("\""); + else + sb.append("org.jooq.impl.DSL.field(\"") + .append(escapeString(d)) + .append("\""); + + sb.append(", ") .append(sqlDataTypeRef) .append("))"); + } } // Otherwise, reference the dialect-specific DataType itself.