[jOOQ/jOOQ#16405] Parser doesn't support GROUPING SETS with <ordinary

grouping set> specification
This commit is contained in:
Lukas Eder 2024-03-04 12:29:13 +01:00
parent f7fe2b866a
commit d7c0fac926

View File

@ -1986,7 +1986,7 @@ final class DefaultParseContext extends AbstractScope implements ParseContext {
}
else if (parseKeywordIf("GROUPING SETS")) {
parse('(');
List<List<Field<?>>> fieldSets = parseList(',', c -> parseFieldsOrEmptyParenthesised());
List<List<Field<?>>> fieldSets = parseList(',', c -> parseFieldsOrEmptyOptionallyParenthesised(false));
parse(')');
result.addGroupBy(groupingSets(fieldSets.toArray((Collection[]) EMPTY_COLLECTION)));
}
@ -4198,16 +4198,6 @@ final class DefaultParseContext extends AbstractScope implements ParseContext {
@ -7968,6 +7958,17 @@ final class DefaultParseContext extends AbstractScope implements ParseContext {
}
}
private final List<Field<?>> parseFieldsOrEmptyOptionallyParenthesised(boolean allowUnparenthesisedLists) {
if (peek('('))
return parseFieldsOrEmptyParenthesised();
else if (peekEndOfStatement())
return emptyList();
else if (allowUnparenthesisedLists)
return parseList(',', c -> c.parseField());
else
return asList(parseField());
}
private final SelectField<?> parseSelectField() {
return (SelectField<?>) parseFieldOrRow();
}