diff --git a/jOOQ/src/main/java/org/jooq/DSLContext.java b/jOOQ/src/main/java/org/jooq/DSLContext.java index 66886b0401..03fde8754e 100644 --- a/jOOQ/src/main/java/org/jooq/DSLContext.java +++ b/jOOQ/src/main/java/org/jooq/DSLContext.java @@ -9428,7 +9428,7 @@ public interface DSLContext extends Scope { * @see DSL#alterIndexIfExists(String) */ @NotNull @CheckReturnValue - @Support({ H2, POSTGRES }) + @Support({ H2, MARIADB, MYSQL, POSTGRES }) AlterIndexOnStep alterIndexIfExists(@Stringly.Name String index); /** @@ -9437,7 +9437,7 @@ public interface DSLContext extends Scope { * @see DSL#alterIndexIfExists(Name) */ @NotNull @CheckReturnValue - @Support({ H2, POSTGRES }) + @Support({ H2, MARIADB, MYSQL, POSTGRES }) AlterIndexOnStep alterIndexIfExists(Name index); /** @@ -9446,7 +9446,7 @@ public interface DSLContext extends Scope { * @see DSL#alterIndexIfExists(Index) */ @NotNull @CheckReturnValue - @Support({ H2, POSTGRES }) + @Support({ H2, MARIADB, MYSQL, POSTGRES }) AlterIndexOnStep alterIndexIfExists(Index index); /** @@ -9626,7 +9626,7 @@ public interface DSLContext extends Scope { * @see DSL#alterViewIfExists(String) */ @NotNull @CheckReturnValue - @Support({ DUCKDB, H2, POSTGRES, YUGABYTEDB }) + @Support({ DUCKDB, H2, MARIADB, MYSQL, POSTGRES, YUGABYTEDB }) AlterViewStep alterViewIfExists(@Stringly.Name String view); /** @@ -9635,7 +9635,7 @@ public interface DSLContext extends Scope { * @see DSL#alterViewIfExists(Name) */ @NotNull @CheckReturnValue - @Support({ DUCKDB, H2, POSTGRES, YUGABYTEDB }) + @Support({ DUCKDB, H2, MARIADB, MYSQL, POSTGRES, YUGABYTEDB }) AlterViewStep alterViewIfExists(Name view); /** @@ -9644,7 +9644,7 @@ public interface DSLContext extends Scope { * @see DSL#alterViewIfExists(Table) */ @NotNull @CheckReturnValue - @Support({ DUCKDB, H2, POSTGRES, YUGABYTEDB }) + @Support({ DUCKDB, H2, MARIADB, MYSQL, POSTGRES, YUGABYTEDB }) AlterViewStep alterViewIfExists(Table view); /** @@ -10021,7 +10021,7 @@ public interface DSLContext extends Scope { * @see DSL#createIndexIfNotExists(String) */ @NotNull @CheckReturnValue - @Support({ DUCKDB, FIREBIRD, H2, HSQLDB, IGNITE, MARIADB, POSTGRES, SQLITE, YUGABYTEDB }) + @Support({ DUCKDB, FIREBIRD, H2, HSQLDB, IGNITE, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTEDB }) CreateIndexStep createIndexIfNotExists(@Stringly.Name String index); /** @@ -10030,7 +10030,7 @@ public interface DSLContext extends Scope { * @see DSL#createIndexIfNotExists(Name) */ @NotNull @CheckReturnValue - @Support({ DUCKDB, FIREBIRD, H2, HSQLDB, IGNITE, MARIADB, POSTGRES, SQLITE, YUGABYTEDB }) + @Support({ DUCKDB, FIREBIRD, H2, HSQLDB, IGNITE, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTEDB }) CreateIndexStep createIndexIfNotExists(Name index); /** @@ -10039,7 +10039,7 @@ public interface DSLContext extends Scope { * @see DSL#createIndexIfNotExists(Index) */ @NotNull @CheckReturnValue - @Support({ DUCKDB, FIREBIRD, H2, HSQLDB, IGNITE, MARIADB, POSTGRES, SQLITE, YUGABYTEDB }) + @Support({ DUCKDB, FIREBIRD, H2, HSQLDB, IGNITE, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTEDB }) CreateIndexStep createIndexIfNotExists(Index index); /** @@ -10048,7 +10048,7 @@ public interface DSLContext extends Scope { * @see DSL#createIndexIfNotExists() */ @NotNull @CheckReturnValue - @Support({ DUCKDB, FIREBIRD, H2, HSQLDB, IGNITE, MARIADB, POSTGRES, SQLITE, YUGABYTEDB }) + @Support({ DUCKDB, FIREBIRD, H2, HSQLDB, IGNITE, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTEDB }) CreateIndexStep createIndexIfNotExists(); /** @@ -10093,7 +10093,7 @@ public interface DSLContext extends Scope { * @see DSL#createUniqueIndexIfNotExists(String) */ @NotNull @CheckReturnValue - @Support({ DUCKDB, FIREBIRD, H2, HSQLDB, POSTGRES, SQLITE, YUGABYTEDB }) + @Support({ DUCKDB, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTEDB }) CreateIndexStep createUniqueIndexIfNotExists(@Stringly.Name String index); /** @@ -10102,7 +10102,7 @@ public interface DSLContext extends Scope { * @see DSL#createUniqueIndexIfNotExists(Name) */ @NotNull @CheckReturnValue - @Support({ DUCKDB, FIREBIRD, H2, HSQLDB, POSTGRES, SQLITE, YUGABYTEDB }) + @Support({ DUCKDB, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTEDB }) CreateIndexStep createUniqueIndexIfNotExists(Name index); /** @@ -10111,7 +10111,7 @@ public interface DSLContext extends Scope { * @see DSL#createUniqueIndexIfNotExists(Index) */ @NotNull @CheckReturnValue - @Support({ DUCKDB, FIREBIRD, H2, HSQLDB, POSTGRES, SQLITE, YUGABYTEDB }) + @Support({ DUCKDB, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTEDB }) CreateIndexStep createUniqueIndexIfNotExists(Index index); /** @@ -10120,7 +10120,7 @@ public interface DSLContext extends Scope { * @see DSL#createUniqueIndexIfNotExists() */ @NotNull @CheckReturnValue - @Support({ DUCKDB, FIREBIRD, H2, HSQLDB, POSTGRES, SQLITE, YUGABYTEDB }) + @Support({ DUCKDB, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTEDB }) CreateIndexStep createUniqueIndexIfNotExists(); @@ -11044,7 +11044,7 @@ public interface DSLContext extends Scope { * @see DSL#dropIndexIfExists(String) */ @NotNull @CheckReturnValue - @Support({ CUBRID, DUCKDB, FIREBIRD, H2, HSQLDB, IGNITE, MARIADB, POSTGRES, SQLITE, YUGABYTEDB }) + @Support({ CUBRID, DUCKDB, FIREBIRD, H2, HSQLDB, IGNITE, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTEDB }) DropIndexOnStep dropIndexIfExists(@Stringly.Name String index); /** @@ -11053,7 +11053,7 @@ public interface DSLContext extends Scope { * @see DSL#dropIndexIfExists(Name) */ @NotNull @CheckReturnValue - @Support({ CUBRID, DUCKDB, FIREBIRD, H2, HSQLDB, IGNITE, MARIADB, POSTGRES, SQLITE, YUGABYTEDB }) + @Support({ CUBRID, DUCKDB, FIREBIRD, H2, HSQLDB, IGNITE, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTEDB }) DropIndexOnStep dropIndexIfExists(Name index); /** @@ -11062,7 +11062,7 @@ public interface DSLContext extends Scope { * @see DSL#dropIndexIfExists(Index) */ @NotNull @CheckReturnValue - @Support({ CUBRID, DUCKDB, FIREBIRD, H2, HSQLDB, IGNITE, MARIADB, POSTGRES, SQLITE, YUGABYTEDB }) + @Support({ CUBRID, DUCKDB, FIREBIRD, H2, HSQLDB, IGNITE, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTEDB }) DropIndexOnStep dropIndexIfExists(Index index); diff --git a/jOOQ/src/main/java/org/jooq/impl/AlterIndexImpl.java b/jOOQ/src/main/java/org/jooq/impl/AlterIndexImpl.java index 9efdf12006..5a3ef15a8a 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AlterIndexImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/AlterIndexImpl.java @@ -152,7 +152,7 @@ implements private static final Clause[] CLAUSES = { Clause.ALTER_INDEX }; - private static final Set NO_SUPPORT_IF_EXISTS = SQLDialect.supportedUntil(CUBRID, DERBY, FIREBIRD); + private static final Set NO_SUPPORT_IF_EXISTS = SQLDialect.supportedUntil(CUBRID, DERBY, FIREBIRD, MARIADB, MYSQL); private static final Set SUPPORT_RENAME_INDEX = SQLDialect.supportedBy(DERBY); private final boolean supportsIfExists(Context ctx) { diff --git a/jOOQ/src/main/java/org/jooq/impl/CreateIndexImpl.java b/jOOQ/src/main/java/org/jooq/impl/CreateIndexImpl.java index 9beeb2eb1a..94087a7e65 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CreateIndexImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/CreateIndexImpl.java @@ -251,7 +251,7 @@ implements private static final Clause[] CLAUSES = { Clause.CREATE_INDEX }; - private static final Set NO_SUPPORT_IF_NOT_EXISTS = SQLDialect.supportedUntil(DERBY, FIREBIRD); + private static final Set NO_SUPPORT_IF_NOT_EXISTS = SQLDialect.supportedUntil(DERBY, FIREBIRD, MYSQL); private static final Set NO_SUPPORT_SORT_SPEC = SQLDialect.supportedBy(FIREBIRD); private static final Set SUPPORT_UNNAMED_INDEX = SQLDialect.supportedBy(POSTGRES, YUGABYTEDB); private static final Set SUPPORT_INCLUDE = SQLDialect.supportedBy(POSTGRES, YUGABYTEDB); diff --git a/jOOQ/src/main/java/org/jooq/impl/DSL.java b/jOOQ/src/main/java/org/jooq/impl/DSL.java index 407a89a50f..6932e9bfdb 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DSL.java +++ b/jOOQ/src/main/java/org/jooq/impl/DSL.java @@ -7375,7 +7375,7 @@ public class DSL { * @see DSLContext#alterIndexIfExists(String) */ @NotNull @CheckReturnValue - @Support({ H2, POSTGRES }) + @Support({ H2, MARIADB, MYSQL, POSTGRES }) public static org.jooq.AlterIndexOnStep alterIndexIfExists(@Stringly.Name String index) { return dsl().alterIndexIfExists(index); } @@ -7390,7 +7390,7 @@ public class DSL { * @see DSLContext#alterIndexIfExists(Name) */ @NotNull @CheckReturnValue - @Support({ H2, POSTGRES }) + @Support({ H2, MARIADB, MYSQL, POSTGRES }) public static org.jooq.AlterIndexOnStep alterIndexIfExists(Name index) { return dsl().alterIndexIfExists(index); } @@ -7405,7 +7405,7 @@ public class DSL { * @see DSLContext#alterIndexIfExists(Index) */ @NotNull @CheckReturnValue - @Support({ H2, POSTGRES }) + @Support({ H2, MARIADB, MYSQL, POSTGRES }) public static org.jooq.AlterIndexOnStep alterIndexIfExists(Index index) { return dsl().alterIndexIfExists(index); } @@ -7705,7 +7705,7 @@ public class DSL { * @see DSLContext#alterViewIfExists(String) */ @NotNull @CheckReturnValue - @Support({ DUCKDB, H2, POSTGRES, YUGABYTEDB }) + @Support({ DUCKDB, H2, MARIADB, MYSQL, POSTGRES, YUGABYTEDB }) public static org.jooq.AlterViewStep alterViewIfExists(@Stringly.Name String view) { return dsl().alterViewIfExists(view); } @@ -7720,7 +7720,7 @@ public class DSL { * @see DSLContext#alterViewIfExists(Name) */ @NotNull @CheckReturnValue - @Support({ DUCKDB, H2, POSTGRES, YUGABYTEDB }) + @Support({ DUCKDB, H2, MARIADB, MYSQL, POSTGRES, YUGABYTEDB }) public static org.jooq.AlterViewStep alterViewIfExists(Name view) { return dsl().alterViewIfExists(view); } @@ -7735,7 +7735,7 @@ public class DSL { * @see DSLContext#alterViewIfExists(Table) */ @NotNull @CheckReturnValue - @Support({ DUCKDB, H2, POSTGRES, YUGABYTEDB }) + @Support({ DUCKDB, H2, MARIADB, MYSQL, POSTGRES, YUGABYTEDB }) public static org.jooq.AlterViewStep alterViewIfExists(Table view) { return dsl().alterViewIfExists(view); } @@ -8358,7 +8358,7 @@ public class DSL { * @see DSLContext#createIndexIfNotExists(String) */ @NotNull @CheckReturnValue - @Support({ DUCKDB, FIREBIRD, H2, HSQLDB, IGNITE, MARIADB, POSTGRES, SQLITE, YUGABYTEDB }) + @Support({ DUCKDB, FIREBIRD, H2, HSQLDB, IGNITE, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTEDB }) public static org.jooq.CreateIndexStep createIndexIfNotExists(@Stringly.Name String index) { return dsl().createIndexIfNotExists(index); } @@ -8373,7 +8373,7 @@ public class DSL { * @see DSLContext#createIndexIfNotExists(Name) */ @NotNull @CheckReturnValue - @Support({ DUCKDB, FIREBIRD, H2, HSQLDB, IGNITE, MARIADB, POSTGRES, SQLITE, YUGABYTEDB }) + @Support({ DUCKDB, FIREBIRD, H2, HSQLDB, IGNITE, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTEDB }) public static org.jooq.CreateIndexStep createIndexIfNotExists(Name index) { return dsl().createIndexIfNotExists(index); } @@ -8388,7 +8388,7 @@ public class DSL { * @see DSLContext#createIndexIfNotExists(Index) */ @NotNull @CheckReturnValue - @Support({ DUCKDB, FIREBIRD, H2, HSQLDB, IGNITE, MARIADB, POSTGRES, SQLITE, YUGABYTEDB }) + @Support({ DUCKDB, FIREBIRD, H2, HSQLDB, IGNITE, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTEDB }) public static org.jooq.CreateIndexStep createIndexIfNotExists(Index index) { return dsl().createIndexIfNotExists(index); } @@ -8403,7 +8403,7 @@ public class DSL { * @see DSLContext#createIndexIfNotExists() */ @NotNull @CheckReturnValue - @Support({ DUCKDB, FIREBIRD, H2, HSQLDB, IGNITE, MARIADB, POSTGRES, SQLITE, YUGABYTEDB }) + @Support({ DUCKDB, FIREBIRD, H2, HSQLDB, IGNITE, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTEDB }) public static org.jooq.CreateIndexStep createIndexIfNotExists() { return dsl().createIndexIfNotExists(); } @@ -8478,7 +8478,7 @@ public class DSL { * @see DSLContext#createUniqueIndexIfNotExists(String) */ @NotNull @CheckReturnValue - @Support({ DUCKDB, FIREBIRD, H2, HSQLDB, POSTGRES, SQLITE, YUGABYTEDB }) + @Support({ DUCKDB, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTEDB }) public static org.jooq.CreateIndexStep createUniqueIndexIfNotExists(@Stringly.Name String index) { return dsl().createUniqueIndexIfNotExists(index); } @@ -8493,7 +8493,7 @@ public class DSL { * @see DSLContext#createUniqueIndexIfNotExists(Name) */ @NotNull @CheckReturnValue - @Support({ DUCKDB, FIREBIRD, H2, HSQLDB, POSTGRES, SQLITE, YUGABYTEDB }) + @Support({ DUCKDB, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTEDB }) public static org.jooq.CreateIndexStep createUniqueIndexIfNotExists(Name index) { return dsl().createUniqueIndexIfNotExists(index); } @@ -8508,7 +8508,7 @@ public class DSL { * @see DSLContext#createUniqueIndexIfNotExists(Index) */ @NotNull @CheckReturnValue - @Support({ DUCKDB, FIREBIRD, H2, HSQLDB, POSTGRES, SQLITE, YUGABYTEDB }) + @Support({ DUCKDB, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTEDB }) public static org.jooq.CreateIndexStep createUniqueIndexIfNotExists(Index index) { return dsl().createUniqueIndexIfNotExists(index); } @@ -8523,7 +8523,7 @@ public class DSL { * @see DSLContext#createUniqueIndexIfNotExists() */ @NotNull @CheckReturnValue - @Support({ DUCKDB, FIREBIRD, H2, HSQLDB, POSTGRES, SQLITE, YUGABYTEDB }) + @Support({ DUCKDB, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTEDB }) public static org.jooq.CreateIndexStep createUniqueIndexIfNotExists() { return dsl().createUniqueIndexIfNotExists(); } @@ -10047,7 +10047,7 @@ public class DSL { * @see DSLContext#dropIndexIfExists(String) */ @NotNull @CheckReturnValue - @Support({ CUBRID, DUCKDB, FIREBIRD, H2, HSQLDB, IGNITE, MARIADB, POSTGRES, SQLITE, YUGABYTEDB }) + @Support({ CUBRID, DUCKDB, FIREBIRD, H2, HSQLDB, IGNITE, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTEDB }) public static org.jooq.DropIndexOnStep dropIndexIfExists(@Stringly.Name String index) { return dsl().dropIndexIfExists(index); } @@ -10062,7 +10062,7 @@ public class DSL { * @see DSLContext#dropIndexIfExists(Name) */ @NotNull @CheckReturnValue - @Support({ CUBRID, DUCKDB, FIREBIRD, H2, HSQLDB, IGNITE, MARIADB, POSTGRES, SQLITE, YUGABYTEDB }) + @Support({ CUBRID, DUCKDB, FIREBIRD, H2, HSQLDB, IGNITE, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTEDB }) public static org.jooq.DropIndexOnStep dropIndexIfExists(Name index) { return dsl().dropIndexIfExists(index); } @@ -10077,7 +10077,7 @@ public class DSL { * @see DSLContext#dropIndexIfExists(Index) */ @NotNull @CheckReturnValue - @Support({ CUBRID, DUCKDB, FIREBIRD, H2, HSQLDB, IGNITE, MARIADB, POSTGRES, SQLITE, YUGABYTEDB }) + @Support({ CUBRID, DUCKDB, FIREBIRD, H2, HSQLDB, IGNITE, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTEDB }) public static org.jooq.DropIndexOnStep dropIndexIfExists(Index index) { return dsl().dropIndexIfExists(index); } diff --git a/jOOQ/src/main/java/org/jooq/impl/DropIndexImpl.java b/jOOQ/src/main/java/org/jooq/impl/DropIndexImpl.java index 4f66d14f03..f79244dd29 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DropIndexImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/DropIndexImpl.java @@ -148,7 +148,7 @@ implements private static final Clause[] CLAUSES = { Clause.DROP_INDEX }; - private static final Set NO_SUPPORT_IF_EXISTS = SQLDialect.supportedUntil(CUBRID, DERBY, FIREBIRD); + private static final Set NO_SUPPORT_IF_EXISTS = SQLDialect.supportedUntil(CUBRID, DERBY, FIREBIRD, MYSQL); private static final Set REQUIRES_ON = SQLDialect.supportedBy(MARIADB, MYSQL); private final boolean supportsIfExists(Context ctx) { diff --git a/jOOQ/src/main/java/org/jooq/impl/Tools.java b/jOOQ/src/main/java/org/jooq/impl/Tools.java index 7ef9aa9620..030a210178 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Tools.java +++ b/jOOQ/src/main/java/org/jooq/impl/Tools.java @@ -5534,37 +5534,17 @@ final class Tools { .visit(K_BEGIN).sql(' ').visit(K_END).formatIndentEnd(); }); break; + } + + case MYSQL: { + + + + } case MARIADB: { - List sqlstates = new ArrayList<>(); - -// if (type == CREATE_SCHEMA) -// sqlstates.add("42710"); -// else if (type == CREATE_SEQUENCE) -// sqlstates.add("42710"); -// else if (type == CREATE_VIEW) -// sqlstates.add("42710"); -// else -// if (type == ALTER_TABLE) { -// if (TRUE.equals(container)) -// sqlstates.add("42704"); -// -// if (TRUE.equals(element)) -// sqlstates.add("42703"); -// else if (FALSE.equals(element)) -// sqlstates.add("42711"); -// } -// else - sqlstates.add("42S02"); - - begin(ctx, c -> { - for (String sqlstate : sqlstates) - c.visit(keyword("declare continue handler for sqlstate")).sql(' ').visit(DSL.inline(sqlstate)).sql(' ').visit(K_BEGIN).sql(' ').visit(K_END).sql(';').formatSeparator(); - - runnable.accept(c); - c.sql(';'); - }); + tryCatchMySQL(ctx, type, runnable); break; } @@ -5598,6 +5578,49 @@ final class Tools { } } + private static final void tryCatchMySQL(Context ctx, DDLStatementType type, Consumer> runnable) { + List sqlstates = new ArrayList<>(); + + switch (ctx.family()) { + case MARIADB: + switch (type) { + case ALTER_INDEX: + case CREATE_INDEX: + case DROP_INDEX: + sqlstates.add("42000"); + break; + } + + sqlstates.add("42S02"); + break; + + case MYSQL: + switch (type) { + case ALTER_INDEX: + case CREATE_INDEX: + case DROP_INDEX: + sqlstates.add("42000"); + break; + + case ALTER_VIEW: + case CREATE_VIEW: + case DROP_VIEW: + sqlstates.add("42S01"); + break; + } + + break; + } + + begin(ctx, c -> { + for (String sqlstate : sqlstates) + c.visit(keyword("declare continue handler for sqlstate")).sql(' ').visit(DSL.inline(sqlstate)).sql(' ').visit(K_BEGIN).sql(' ').visit(K_END).sql(';').formatSeparator(); + + runnable.accept(c); + c.sql(';'); + }); + } + static final void toSQLDDLTypeDeclarationForAddition(Context ctx, DataType type) { boolean qualify = ctx.qualify(); toSQLDDLTypeDeclaration(ctx, type);