diff --git a/jOOQ/src/main/java/org/jooq/impl/Values.java b/jOOQ/src/main/java/org/jooq/impl/Values.java index 77707d7c6c..f3fd0db7dc 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Values.java +++ b/jOOQ/src/main/java/org/jooq/impl/Values.java @@ -42,6 +42,7 @@ import static org.jooq.Clause.TABLE_VALUES; // ... // ... // ... +import static org.jooq.SQLDialect.DERBY; // ... import static org.jooq.SQLDialect.FIREBIRD; // ... @@ -105,10 +106,10 @@ implements QOM.Values { - static final Set NO_SUPPORT_VALUES = SQLDialect.supportedUntil(FIREBIRD, MARIADB); - static final Set REQUIRE_ROWTYPE_CAST = SQLDialect.supportedBy(FIREBIRD); - static final Set REQUIRE_ROWTYPE_CAST_ON_NULLS = SQLDialect.supportedBy(POSTGRES); - static final Set NO_SUPPORT_PARENTHESES = SQLDialect.supportedBy(); + static final Set NO_SUPPORT_VALUES = SQLDialect.supportedUntil(FIREBIRD, MARIADB); + static final Set REQUIRE_ROWTYPE_CAST = SQLDialect.supportedBy(DERBY, FIREBIRD); + static final Set REQUIRE_ROWTYPE_CAST_FIRST_ROW = SQLDialect.supportedBy(POSTGRES); + static final Set NO_SUPPORT_PARENTHESES = SQLDialect.supportedBy(); private final Row[] rows; private transient DataType[] types; @@ -293,7 +294,11 @@ implements // [#11015] NULL literals of known type should be cast in PostgreSQL in the first row - if (i == 0 && ctx.family() == POSTGRES) + if (i == 0 && REQUIRE_ROWTYPE_CAST_FIRST_ROW.contains(ctx.dialect())) + ctx.visit(castNullLiteralToRowType(ctx, rows[i])); + + // [#11015] Or in Derby in any other row, too + else if (REQUIRE_ROWTYPE_CAST.contains(ctx.dialect())) ctx.visit(castNullLiteralToRowType(ctx, rows[i])); else ctx.visit(rows[i]);