[#2530] Further predicate support

This commit is contained in:
lukaseder 2019-02-28 12:37:25 +01:00
parent dd340e74be
commit 4e95b3fab1
2 changed files with 15 additions and 1 deletions

View File

@ -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);
}

View File

@ -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())