From 8fdbbcc50012bda5563343cbaccf873b7f049a02 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Fri, 16 Oct 2020 16:48:20 +0200 Subject: [PATCH] [jOOQ/jOOQ#10064] trueCondition() and falseCondition() should generate TRUE and FALSE, where BOOLEAN types are supported --- .../java/org/jooq/impl/FalseCondition.java | 8 ++++- .../java/org/jooq/impl/TrueCondition.java | 33 ++++++++++++++++--- 2 files changed, 36 insertions(+), 5 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/FalseCondition.java b/jOOQ/src/main/java/org/jooq/impl/FalseCondition.java index 4bf848ae7b..21c532e67b 100644 --- a/jOOQ/src/main/java/org/jooq/impl/FalseCondition.java +++ b/jOOQ/src/main/java/org/jooq/impl/FalseCondition.java @@ -39,6 +39,9 @@ package org.jooq.impl; import static org.jooq.Clause.CONDITION; import static org.jooq.Clause.CONDITION_COMPARISON; +import static org.jooq.impl.Keywords.K_FALSE; +import static org.jooq.impl.Keywords.K_TRUE; +import static org.jooq.impl.TrueCondition.NO_SUPPORT_BOOLEAN; import org.jooq.Clause; import org.jooq.Context; @@ -60,7 +63,10 @@ final class FalseCondition extends AbstractCondition implements False { @Override public final void accept(Context ctx) { - ctx.sql("1 = 0"); + if (NO_SUPPORT_BOOLEAN.contains(ctx.dialect())) + ctx.sql("1 = 0"); + else + ctx.visit(K_FALSE); } @Override diff --git a/jOOQ/src/main/java/org/jooq/impl/TrueCondition.java b/jOOQ/src/main/java/org/jooq/impl/TrueCondition.java index cf8a92f3cc..0bb4cf7450 100644 --- a/jOOQ/src/main/java/org/jooq/impl/TrueCondition.java +++ b/jOOQ/src/main/java/org/jooq/impl/TrueCondition.java @@ -40,9 +40,30 @@ package org.jooq.impl; import static org.jooq.Clause.CONDITION; import static org.jooq.Clause.CONDITION_COMPARISON; +// ... +// ... +// ... +// ... +import static org.jooq.SQLDialect.FIREBIRD; +// ... +// ... +// ... +// ... +// ... +// ... +// ... +import static org.jooq.SQLDialect.SQLITE; +// ... +// ... +// ... +// ... +import static org.jooq.impl.Keywords.K_TRUE; + +import java.util.Set; import org.jooq.Clause; import org.jooq.Context; +import org.jooq.SQLDialect; import org.jooq.True; /** @@ -50,9 +71,10 @@ import org.jooq.True; */ final class TrueCondition extends AbstractCondition implements True { - private static final long serialVersionUID = 775364624704563687L; - private static final Clause[] CLAUSES = { CONDITION, CONDITION_COMPARISON }; - static final TrueCondition INSTANCE = new TrueCondition(); + private static final long serialVersionUID = 775364624704563687L; + private static final Clause[] CLAUSES = { CONDITION, CONDITION_COMPARISON }; + static final TrueCondition INSTANCE = new TrueCondition(); + static final Set NO_SUPPORT_BOOLEAN = SQLDialect.supportedBy(FIREBIRD, SQLITE); @Override final boolean isNullable() { @@ -61,7 +83,10 @@ final class TrueCondition extends AbstractCondition implements True { @Override public final void accept(Context ctx) { - ctx.sql("1 = 1"); + if (NO_SUPPORT_BOOLEAN.contains(ctx.dialect())) + ctx.sql("1 = 1"); + else + ctx.visit(K_TRUE); } @Override