diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractRow.java b/jOOQ/src/main/java/org/jooq/impl/AbstractRow.java index 10a2ec586a..556477684e 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractRow.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractRow.java @@ -43,6 +43,8 @@ import static org.jooq.Clause.FIELD_ROW; import static org.jooq.impl.Keywords.K_ROW; import static org.jooq.impl.Names.N_ROW; import static org.jooq.impl.QueryPartListView.wrap; +import static org.jooq.impl.Tools.extractVal; +import static org.jooq.impl.Tools.isVal; import static org.jooq.impl.Tools.nullSafe; import java.util.Collection; @@ -214,7 +216,7 @@ abstract class AbstractRow extends AbstractQueryPart implement findConversionCandidates: { for (int i = 0; i < size; i++) - if (fields.field(i) instanceof Val && !(row.field(i) instanceof Val)) + if (isVal(fields.field(i)) && !isVal(row.field(i))) break findConversionCandidates; return this; @@ -223,9 +225,10 @@ abstract class AbstractRow extends AbstractQueryPart implement Field[] result = new Field[size]; for (int i = 0; i < size; i++) { Field f = fields.field(i); + Val v; - if (f instanceof Val) - result[i] = ((Val) f).convertTo(row.field(i).getDataType()); + if ((v = extractVal(f)) != null) + result[i] = v.convertTo(row.field(i).getDataType()); else result[i] = f; }