diff --git a/jOOQ/src/main/java/org/jooq/Field.java b/jOOQ/src/main/java/org/jooq/Field.java index 9e154e963b..a748eaf1de 100644 --- a/jOOQ/src/main/java/org/jooq/Field.java +++ b/jOOQ/src/main/java/org/jooq/Field.java @@ -296,7 +296,7 @@ extends * as {@link DSLContext#createTable(Table)}. */ @NotNull - @Support({ FIREBIRD, H2, HSQLDB, MARIADB, POSTGRES, YUGABYTEDB }) + @Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, YUGABYTEDB }) Field comment(String comment); /** @@ -304,7 +304,7 @@ extends * as {@link DSLContext#createTable(Table)}. */ @NotNull - @Support({ FIREBIRD, H2, HSQLDB, MARIADB, POSTGRES, YUGABYTEDB }) + @Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, YUGABYTEDB }) Field comment(Comment comment); // ------------------------------------------------------------------------ diff --git a/jOOQ/src/main/java/org/jooq/impl/AlterTableImpl.java b/jOOQ/src/main/java/org/jooq/impl/AlterTableImpl.java index 715db2af5d..ef3cfff904 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AlterTableImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/AlterTableImpl.java @@ -1304,6 +1304,7 @@ implements if (part instanceof Field f) { ctx.sql(' '); toSQLDDLTypeDeclarationForAddition(ctx, f.getDataType()); + CreateTableImpl.acceptColumnComment(ctx, f); } } @@ -1331,6 +1332,7 @@ implements ctx.qualify(false, c -> c.visit(Tools.uncollate(addColumn))).sql(' '); toSQLDDLTypeDeclarationForAddition(ctx, addColumnType); + CreateTableImpl.acceptColumnComment(ctx, addColumn); diff --git a/jOOQ/src/main/java/org/jooq/impl/CreateTableImpl.java b/jOOQ/src/main/java/org/jooq/impl/CreateTableImpl.java index 2f9b962df9..3726759e93 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CreateTableImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/CreateTableImpl.java @@ -342,20 +342,20 @@ implements - private static final Set NO_SUPPORT_IF_NOT_EXISTS = SQLDialect.supportedBy(DERBY, FIREBIRD); - private static final Set NO_SUPPORT_WITH_DATA = SQLDialect.supportedBy(H2, MARIADB, MYSQL, SQLITE); - private static final Set NO_SUPPORT_CTAS_COLUMN_NAMES = SQLDialect.supportedBy(H2); - private static final Set EMULATE_INDEXES_IN_BLOCK = SQLDialect.supportedBy(FIREBIRD, POSTGRES, YUGABYTEDB); - private static final Set EMULATE_SOME_ENUM_TYPES_AS_CHECK = SQLDialect.supportedBy(CUBRID, DERBY, FIREBIRD, HSQLDB, POSTGRES, SQLITE, YUGABYTEDB); - private static final Set EMULATE_STORED_ENUM_TYPES_AS_CHECK = SQLDialect.supportedBy(CUBRID, DERBY, FIREBIRD, HSQLDB, SQLITE); - private static final Set REQUIRES_WITH_DATA = SQLDialect.supportedBy(HSQLDB); - private static final Set WRAP_SELECT_IN_PARENS = SQLDialect.supportedBy(HSQLDB); - private static final Set SUPPORT_TEMPORARY = SQLDialect.supportedBy(MARIADB, MYSQL, POSTGRES, YUGABYTEDB); - private static final Set EMULATE_TABLE_COMMENT_IN_BLOCK = SQLDialect.supportedBy(FIREBIRD, POSTGRES, YUGABYTEDB); - private static final Set EMULATE_COLUMN_COMMENT_IN_BLOCK = SQLDialect.supportedBy(FIREBIRD, POSTGRES, YUGABYTEDB); - private static final Set REQUIRE_EXECUTE_IMMEDIATE = SQLDialect.supportedBy(FIREBIRD); - private static final Set NO_SUPPORT_NULLABLE_PRIMARY_KEY = SQLDialect.supportedBy(MARIADB, MYSQL); - private static final Set REQUIRE_NON_PK_COLUMNS = SQLDialect.supportedBy(IGNITE); + static final Set NO_SUPPORT_IF_NOT_EXISTS = SQLDialect.supportedBy(DERBY, FIREBIRD); + static final Set NO_SUPPORT_WITH_DATA = SQLDialect.supportedBy(H2, MARIADB, MYSQL, SQLITE); + static final Set NO_SUPPORT_CTAS_COLUMN_NAMES = SQLDialect.supportedBy(H2); + static final Set EMULATE_INDEXES_IN_BLOCK = SQLDialect.supportedBy(FIREBIRD, POSTGRES, YUGABYTEDB); + static final Set EMULATE_SOME_ENUM_TYPES_AS_CHECK = SQLDialect.supportedBy(CUBRID, DERBY, FIREBIRD, HSQLDB, POSTGRES, SQLITE, YUGABYTEDB); + static final Set EMULATE_STORED_ENUM_TYPES_AS_CHECK = SQLDialect.supportedBy(CUBRID, DERBY, FIREBIRD, HSQLDB, SQLITE); + static final Set REQUIRES_WITH_DATA = SQLDialect.supportedBy(HSQLDB); + static final Set WRAP_SELECT_IN_PARENS = SQLDialect.supportedBy(HSQLDB); + static final Set SUPPORT_TEMPORARY = SQLDialect.supportedBy(MARIADB, MYSQL, POSTGRES, YUGABYTEDB); + static final Set EMULATE_TABLE_COMMENT_IN_BLOCK = SQLDialect.supportedBy(FIREBIRD, POSTGRES, YUGABYTEDB); + static final Set EMULATE_COLUMN_COMMENT_IN_BLOCK = SQLDialect.supportedBy(FIREBIRD, POSTGRES, YUGABYTEDB); + static final Set REQUIRE_EXECUTE_IMMEDIATE = SQLDialect.supportedBy(FIREBIRD); + static final Set NO_SUPPORT_NULLABLE_PRIMARY_KEY = SQLDialect.supportedBy(MARIADB, MYSQL); + static final Set REQUIRE_NON_PK_COLUMNS = SQLDialect.supportedBy(IGNITE); @@ -522,11 +522,9 @@ implements if (select == null) { ctx.sql(' '); Tools.toSQLDDLTypeDeclarationForAddition(ctx, type); + acceptColumnComment(ctx, field); } - if (!field.getComment().isEmpty() && !EMULATE_COLUMN_COMMENT_IN_BLOCK.contains(ctx.dialect())) - ctx.sql(' ').visit(K_COMMENT).sql(' ').visit(inline(field.getComment())); - first = false; } @@ -595,6 +593,11 @@ implements } } + static void acceptColumnComment(Context ctx, Field field) { + if (!field.getComment().isEmpty() && !EMULATE_COLUMN_COMMENT_IN_BLOCK.contains(ctx.dialect())) + ctx.sql(' ').visit(K_COMMENT).sql(' ').visit(inline(field.getComment())); + } + private final void toSQLDummyColumns(Context ctx) { // [#10551] [#11268] TODO: Make this behaviour configurable