From 605dc4c94ec5e7bdd55456c36e7105784a2687ef Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Wed, 24 Jun 2020 17:26:41 +0200 Subject: [PATCH] [jOOQ/jOOQ#9246] ALTER TABLE .. ADD UNIQUE INDEX syntax cannot be parsed --- jOOQ/src/main/java/org/jooq/impl/ParserImpl.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java index 3dbb80af68..a8699c1075 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java @@ -4222,6 +4222,13 @@ final class ParserImpl implements Parser { private static final Constraint parseUniqueSpecification(ParserContext ctx, ConstraintTypeStep constraint) { parseUsingBtreeOrHashIf(ctx); + + // [#9246] In MySQL, there's a syntax where the unique constraint looks like an index: + // ALTER TABLE t ADD UNIQUE INDEX i (c) + Name constraintName; + if (constraint == null && (constraintName = parseIdentifierIf(ctx)) != null) + constraint = constraint(constraintName); + Field[] fieldNames = parseKeyColumnList(ctx); ConstraintEnforcementStep e = constraint == null