From 2fb28a8956936384b2af365862e46d33176fbddb Mon Sep 17 00:00:00 2001 From: Knut Wannheden Date: Fri, 30 Aug 2019 08:26:44 +0200 Subject: [PATCH] [jOOQ/jOOQ#9104] Fix missing parenthesis regression in OSS edition In commit jOOQ/jOOQ@a55a362fd876093a50195e96d7692da0868cfea7 the SQL rendering logic for parenthesis pairs in `QuantifiedSelectImpl` and `RowSubqueryCondition` was inadvertently broken. --- .../java/org/jooq/impl/QuantifiedSelectImpl.java | 12 +++--------- .../java/org/jooq/impl/RowSubqueryCondition.java | 8 ++++---- 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/QuantifiedSelectImpl.java b/jOOQ/src/main/java/org/jooq/impl/QuantifiedSelectImpl.java index 47982a95f1..f25ee95c8a 100644 --- a/jOOQ/src/main/java/org/jooq/impl/QuantifiedSelectImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/QuantifiedSelectImpl.java @@ -95,13 +95,9 @@ final class QuantifiedSelectImpl extends AbstractQueryPart imp ctx.visit(quantifier.toKeyword()); + boolean extraParentheses = false; - - - - - - + ctx.sql(extraParentheses ? " ((" : " ("); ctx.subquery(true) .formatIndentStart() @@ -111,9 +107,7 @@ final class QuantifiedSelectImpl extends AbstractQueryPart imp .formatNewLine() .subquery(false); - - - + ctx.sql(extraParentheses ? "))" : ")"); } @SuppressWarnings({ "rawtypes", "unchecked" }) diff --git a/jOOQ/src/main/java/org/jooq/impl/RowSubqueryCondition.java b/jOOQ/src/main/java/org/jooq/impl/RowSubqueryCondition.java index d895afed0a..1f6f2d6811 100644 --- a/jOOQ/src/main/java/org/jooq/impl/RowSubqueryCondition.java +++ b/jOOQ/src/main/java/org/jooq/impl/RowSubqueryCondition.java @@ -220,10 +220,10 @@ final class RowSubqueryCondition extends AbstractCondition { if (rightQuantified == null) { + // Some databases need extra parentheses around the RHS + boolean extraParentheses = false; - - - + ctx.sql(extraParentheses ? "((" : "("); @@ -239,7 +239,7 @@ final class RowSubqueryCondition extends AbstractCondition { - + ctx.sql(extraParentheses ? "))" : ")"); } // [#2054] Quantified row value expression comparison predicates shouldn't have parentheses before ANY or ALL