diff --git a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java index f6e6c3abd0..2c77492a58 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java @@ -8476,19 +8476,28 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { private final Field parseArrayValueConstructorIf() { if (parseKeywordIf("ARRAY")) { - parse('['); + if (parseIf('[')) { + List> fields; - List> fields; - if (parseIf(']')) { - fields = emptyList(); - } - else { - fields = parseList(',', ParseContext::parseField); - parse(']'); - } + if (parseIf(']')) { + fields = emptyList(); + } + else { + fields = parseList(',', ParseContext::parseField); + parse(']'); + } - // Prevent "wrong" javac method bind - return DSL.array((Collection) fields); + // Prevent "wrong" javac method bind + return DSL.array((Collection) fields); + } + else if (parseIf('(')) { + SelectQueryImpl select = parseWithOrSelect(1); + parse(')'); + + return DSL.array(select); + } + else + throw expected("[", "("); } return null; diff --git a/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java b/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java index f448cd23b4..b4e9615a21 100644 --- a/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java @@ -283,6 +283,8 @@ import org.jooq.tools.Convert; import org.jooq.tools.JooqLogger; import org.jooq.tools.StringUtils; +import org.jetbrains.annotations.Nullable; + /** * A sub-select is a SELECT statement that can be combined with * other SELECT statement in UNIONs and similar