diff --git a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java index 2bcc090bee..5215818b49 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java @@ -11754,19 +11754,26 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { // Avoid .. token in indexed for loops: // FOR i IN identifier1 .. identifier2 LOOP <...> END LOOP; - if (peek('.') && !peek("..")) { - List result = new ArrayList<>(); - result.add(identifier); + if (peek('.') && !peek("..")) + return parseNameQualified('.', identifier); + + - while (parseIf('.')) - result.add(parseIdentifier()); - return DSL.name(result.toArray(EMPTY_NAME)); - } else return identifier; } + private final Name parseNameQualified(char separator, Name firstPart) { + List result = new ArrayList<>(); + result.add(firstPart); + + while (parseIf(separator)) + result.add(parseIdentifier()); + + return DSL.name(result.toArray(EMPTY_NAME)); + } + private final QualifiedAsterisk parseQualifiedAsteriskIf() { int positionBeforeName = position(); Name i1 = parseIdentifierIf();