[jOOQ/jOOQ#11015] Fix for Derby as well

This commit is contained in:
Lukas Eder 2023-03-06 11:40:39 +01:00
parent c13e781b8a
commit 50458ba9b1

View File

@ -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<R>
{
static final Set<SQLDialect> NO_SUPPORT_VALUES = SQLDialect.supportedUntil(FIREBIRD, MARIADB);
static final Set<SQLDialect> REQUIRE_ROWTYPE_CAST = SQLDialect.supportedBy(FIREBIRD);
static final Set<SQLDialect> REQUIRE_ROWTYPE_CAST_ON_NULLS = SQLDialect.supportedBy(POSTGRES);
static final Set<SQLDialect> NO_SUPPORT_PARENTHESES = SQLDialect.supportedBy();
static final Set<SQLDialect> NO_SUPPORT_VALUES = SQLDialect.supportedUntil(FIREBIRD, MARIADB);
static final Set<SQLDialect> REQUIRE_ROWTYPE_CAST = SQLDialect.supportedBy(DERBY, FIREBIRD);
static final Set<SQLDialect> REQUIRE_ROWTYPE_CAST_FIRST_ROW = SQLDialect.supportedBy(POSTGRES);
static final Set<SQLDialect> 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]);