diff --git a/jOOQ-manual/src/main/resources/org/jooq/web/grammar-3.12.txt b/jOOQ-manual/src/main/resources/org/jooq/web/grammar-3.12.txt index 654bb79cf5..0886fcbd2f 100644 --- a/jOOQ-manual/src/main/resources/org/jooq/web/grammar-3.12.txt +++ b/jOOQ-manual/src/main/resources/org/jooq/web/grammar-3.12.txt @@ -307,7 +307,7 @@ index = ( 'KEY' | 'INDEX' ) [ identifier ] '(' sortFields ')' constraint = ( 'PRIMARY KEY' '(' fieldNames ')' -| 'UNIQUE' [ 'KEY' | 'INDEX' ] '(' fieldNames ')' +| 'UNIQUE' [ 'KEY' | 'INDEX' ] [ identifier ] '(' sortFields ')' | 'FOREIGN KEY' '(' fieldNames ')' 'REFERENCES' constraintReferenceSpecification | 'CHECK' '(' condition ')' ) [ 'ENABLE' ] diff --git a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java index c6d2eb9fb1..f59532987f 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java @@ -2452,6 +2452,12 @@ final class ParserImpl implements Parser { if (!parseKeywordIf(ctx, "KEY")) parseKeywordIf(ctx, "INDEX"); + // [#7268] MySQL has some legacy syntax where an index name + // can override a constraint name + Name index = parseIdentifierIf(ctx); + if (index != null) + constraint = constraint(index); + constraints.add(parseUniqueSpecification(ctx, constraint)); continue columnLoop; }