From a471e023d12425308e841cce8600a34df5a98a92 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Wed, 11 Dec 2019 13:33:50 +0100 Subject: [PATCH] [jOOQ/jOOQ#9661] Support parsing MySQL's unnamed constraint syntax --- .../main/java/org/jooq/impl/ParserImpl.java | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java index ccfef21961..0f3afab515 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java @@ -3194,11 +3194,9 @@ final class ParserImpl implements Parser { columnLoop: do { - ConstraintTypeStep constraint = null; int position = ctx.position(); - if (parseKeywordIf(ctx, "CONSTRAINT")) - constraint = constraint(parseIdentifier(ctx)); + ConstraintTypeStep constraint = parseConstraintNameSpecification(ctx); if (parsePrimaryKeyClusteredNonClusteredKeywordIf(ctx)) { if (primary) @@ -3605,9 +3603,7 @@ final class ParserImpl implements Parser { } } - ConstraintTypeStep inlineConstraint = null; - if (parseKeywordIf(ctx, "CONSTRAINT")) - inlineConstraint = constraint(parseIdentifier(ctx)); + ConstraintTypeStep inlineConstraint = parseConstraintNameSpecification(ctx); if (!unique) { if (!primary && parsePrimaryKeyClusteredNonClusteredKeywordIf(ctx)) { @@ -4069,11 +4065,7 @@ final class ParserImpl implements Parser { } private static final void parseAlterTableAddFieldsOrConstraints(ParserContext ctx, List list) { - ConstraintTypeStep constraint = null; - - if (parseKeywordIf(ctx, "CONSTRAINT")) - if (!peekKeyword(ctx, "PRIMARY KEY", "UNIQUE", "FOREIGN KEY", "CHECK")) - constraint = constraint(parseIdentifier(ctx)); + ConstraintTypeStep constraint = parseConstraintNameSpecification(ctx); if (parsePrimaryKeyClusteredNonClusteredKeywordIf(ctx)) list.add(parsePrimaryKeySpecification(ctx, constraint)); @@ -4089,6 +4081,13 @@ final class ParserImpl implements Parser { parseAlterTableAddField(ctx, list); } + private static final ConstraintTypeStep parseConstraintNameSpecification(ParserContext ctx) { + if (parseKeywordIf(ctx, "CONSTRAINT") && !peekKeyword(ctx, "PRIMARY KEY", "UNIQUE", "FOREIGN KEY", "CHECK")) + return constraint(parseIdentifier(ctx)); + + return null; + } + private static final Field parseAlterTableAddField(ParserContext ctx, List list) { // The below code is taken from CREATE TABLE, with minor modifications as