From e01cb4d1b697194453011a14e29e7b4a75e5983a Mon Sep 17 00:00:00 2001 From: lukaseder Date: Wed, 28 Jun 2017 10:48:35 +0200 Subject: [PATCH] [#6362] Auto-wrap Select as Field in overloaded API like DSL.least() --- jOOQ/src/main/java/org/jooq/impl/Tools.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/Tools.java b/jOOQ/src/main/java/org/jooq/impl/Tools.java index 822fd36084..2e837db863 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Tools.java +++ b/jOOQ/src/main/java/org/jooq/impl/Tools.java @@ -189,6 +189,7 @@ import org.jooq.Param; import org.jooq.Query; import org.jooq.QueryPart; import org.jooq.Record; +import org.jooq.Record1; import org.jooq.RecordType; import org.jooq.RenderContext; import org.jooq.RenderContext.CastMode; @@ -1010,17 +1011,19 @@ final class Tools { static final Field field(T value) { // Fields can be mixed with constant values - if (value instanceof Field) { + if (value instanceof Field) return (Field) value; - } + + // [#6362] Single-column selects can be considered fields, too + else if (value instanceof Select && ((Select) value).getSelect().size() == 1) + return DSL.field((Select>) value); // [#4771] Any other QueryPart type is not supported here - else if (value instanceof QueryPart) { + else if (value instanceof QueryPart) throw fieldExpected(value); - } - else { + + else return val(value); - } } // The following overloads help performance by avoiding runtime data type lookups