From aa0bbc2641530d39602aebf2d82bba2877cfb361 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Fri, 12 Mar 2021 16:05:42 +0100 Subject: [PATCH] [jOOQ/jOOQ#11631] Only Field can be a Condition --- .../src/main/java/org/jooq/impl/ParserImpl.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java index 8d7e140c41..698d7fc050 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java @@ -322,6 +322,8 @@ import org.jooq.types.Interval; import org.jooq.types.YearToMonth; import org.jooq.types.YearToSecond; +import org.jetbrains.annotations.NotNull; + /** * @author Lukas Eder */ @@ -6777,20 +6779,25 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { } private final Condition toCondition(QueryPart part) { - if (part == null) + if (part == null) { return null; - else if (part instanceof Condition) + } + else if (part instanceof Condition) { return (Condition) part; - else if (part instanceof Field) - if (((Field) part).getDataType().getType() == Boolean.class) + } + else if (part instanceof Field) { + Class type = ((Field) part).getDataType().getType(); + + if (type == Boolean.class) return condition((Field) part); // [#7266] Support parsing column references as predicates // [#11631] Or bind values too - else if (part instanceof TableFieldImpl || part instanceof Val) + else if (type == Object.class && (part instanceof TableFieldImpl || part instanceof Val)) return condition((Field) part); else throw expected("Boolean field"); + } else throw expected("Condition"); }