diff --git a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java index e4009f6550..1f09b8958e 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java @@ -3159,7 +3159,7 @@ final class ParserImpl implements Parser { constraints.add(parseCheckSpecification(ctx, constraint)); continue columnLoop; } - else if (constraint == null && (parseKeywordIf(ctx, "KEY") || parseKeywordIf(ctx, "INDEX"))) { + else if (constraint == null && parseIndexOrKeyIf(ctx)) { int p2 = ctx.position(); // [#7348] [#7651] Look ahead if the next tokens indicate a MySQL index definition @@ -3855,14 +3855,7 @@ final class ParserImpl implements Parser { private static final DDLQuery parseAlterTableAdd(ParserContext ctx, AlterTableStep s1, Table tableName) { List list = new ArrayList<>(); - if (((parseKeywordIf(ctx, "SPATIAL INDEX") - || parseKeywordIf(ctx, "SPATIAL KEY") - || parseKeywordIf(ctx, "FULLTEXT INDEX") - || parseKeywordIf(ctx, "FULLTEXT KEY")) - && ctx.requireUnsupportedSyntax()) - - || parseKeywordIf(ctx, "INDEX") - || parseKeywordIf(ctx, "KEY")) { + if (parseIndexOrKeyIf(ctx)) { Name name = parseIdentifierIf(ctx); parse(ctx, '('); List> sort = parseSortSpecification(ctx); @@ -3898,6 +3891,17 @@ final class ParserImpl implements Parser { return s1.add(list); } + private static final boolean parseIndexOrKeyIf(ParserContext ctx) { + return ((parseKeywordIf(ctx, "SPATIAL INDEX") + || parseKeywordIf(ctx, "SPATIAL KEY") + || parseKeywordIf(ctx, "FULLTEXT INDEX") + || parseKeywordIf(ctx, "FULLTEXT KEY")) + && ctx.requireUnsupportedSyntax()) + + || parseKeywordIf(ctx, "INDEX") + || parseKeywordIf(ctx, "KEY"); + } + private static final FieldOrConstraint parseAlterTableAddFieldOrConstraint(ParserContext ctx) { ConstraintTypeStep constraint = null;