diff --git a/jOOQ/src/main/java/org/jooq/impl/CompareCondition.java b/jOOQ/src/main/java/org/jooq/impl/CompareCondition.java index 950d11834b..d0040d7260 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CompareCondition.java +++ b/jOOQ/src/main/java/org/jooq/impl/CompareCondition.java @@ -102,8 +102,12 @@ final class CompareCondition extends AbstractCondition implements LikeEscapeStep @Override public final void accept(Context ctx) { - if (isEmbeddable(field1) && isEmbeddable(field2)) + boolean field1Embeddable = isEmbeddable(field1); + + if (field1Embeddable && isEmbeddable(field2)) ctx.visit(row(embeddedFields(field1)).compare(comparator, embeddedFields(field2))); + else if (field1Embeddable && field2 instanceof ScalarSubquery) + ctx.visit(row(embeddedFields(field1)).compare(comparator, ((ScalarSubquery) field2).query)); else accept0(ctx); } diff --git a/jOOQ/src/main/java/org/jooq/impl/QuantifiedComparisonCondition.java b/jOOQ/src/main/java/org/jooq/impl/QuantifiedComparisonCondition.java index d297136997..33f7b01aa4 100644 --- a/jOOQ/src/main/java/org/jooq/impl/QuantifiedComparisonCondition.java +++ b/jOOQ/src/main/java/org/jooq/impl/QuantifiedComparisonCondition.java @@ -41,6 +41,9 @@ package org.jooq.impl; import static org.jooq.Clause.CONDITION; import static org.jooq.Clause.CONDITION_BETWEEN; +import static org.jooq.impl.DSL.row; +import static org.jooq.impl.Tools.embeddedFields; +import static org.jooq.impl.Tools.isEmbeddable; import org.jooq.Clause; import org.jooq.Comparator; @@ -68,6 +71,13 @@ final class QuantifiedComparisonCondition extends AbstractCondition { @Override public final void accept(Context ctx) { + if (isEmbeddable(field)) + ctx.visit(row(embeddedFields(field)).compare(comparator, query)); + else + accept0(ctx); + } + + private final void accept0(Context ctx) { ctx.visit(field) .sql(' ') .visit(comparator.toKeyword())