diff --git a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java index 7fa4b8c5ee..22cde9e8d5 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java @@ -7553,6 +7553,10 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { else if (parseFunctionNameIf("MD5")) return md5((Field) parseFieldParenthesised(S)); + if (A.is(type)) + if ((field = parseMultisetValueConstructorIf()) != null) + return field; + if ((field = parseFieldGreatestIf()) != null) return field; else if ((field = parseFieldLeastIf()) != null) @@ -8651,6 +8655,21 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { return null; } + private final Field parseMultisetValueConstructorIf() { + if (parseKeywordIf("MULTISET")) { + if (parseIf('(')) { + SelectQueryImpl select = parseWithOrSelect(); + parse(')'); + + return DSL.multiset(select); + } + else + throw expected("("); + } + + return null; + } + private final Field parseFieldArrayGetIf() { if (parseFunctionNameIf("ARRAY_GET")) { parse('(');