From f55fa8a770c12bc12909167d1164c4b783cef178 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Thu, 13 Oct 2022 11:22:31 +0200 Subject: [PATCH] [jOOQ/jOOQ#9085] [jOOQ/jOOQ#13375] [jOOQ/jOOQ#14074] Update ArrayTable The SQLDialect.DEFAULT behaviour should be that of the standard SQL for array tables --- .../java/org/jooq/impl/ArrayOfValues.java | 28 ++++++++-------- .../main/java/org/jooq/impl/ArrayTable.java | 32 ++++++++++++++----- 2 files changed, 38 insertions(+), 22 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/ArrayOfValues.java b/jOOQ/src/main/java/org/jooq/impl/ArrayOfValues.java index 120e104d3d..89d3fcb8d1 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ArrayOfValues.java +++ b/jOOQ/src/main/java/org/jooq/impl/ArrayOfValues.java @@ -112,27 +112,27 @@ final class ArrayOfValues extends AbstractTable implements UNotYetImplem + + + + + + + + + + + + + + case CUBRID: - case DERBY: - case FIREBIRD: - case IGNITE: - - case MARIADB: - case MYSQL: - - - - case SQLITE: - - - - ctx.visit(new ArrayTableEmulation(array).as(alias, fieldAliases)); break; diff --git a/jOOQ/src/main/java/org/jooq/impl/ArrayTable.java b/jOOQ/src/main/java/org/jooq/impl/ArrayTable.java index 5edc425659..4f5f1c32ee 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ArrayTable.java +++ b/jOOQ/src/main/java/org/jooq/impl/ArrayTable.java @@ -176,18 +176,30 @@ final class ArrayTable extends AbstractTable implements UNotYetImplement case H2: return new H2ArrayTable().as(alias); - // [#756] These dialects need special care when aliasing unnested - // arrays + // Most dialects can simulate unnested arrays using UNION ALL - case HSQLDB: - case POSTGRES: - case YUGABYTEDB: - return new PostgresHSQLDBTable().as(alias, fieldAliases); - // Other dialects can simulate unnested arrays using UNION ALL - default: + + + + + + + + + + + + + case CUBRID: + case DERBY: + case FIREBIRD: + case IGNITE: + case MARIADB: + case MYSQL: + case SQLITE: if (array.getDataType().getType().isArray() && array instanceof Param) return emulate(); @@ -200,6 +212,10 @@ final class ArrayTable extends AbstractTable implements UNotYetImplement else return DSL.table("{0}", array).as(alias); + + // [#756] The standard SQL behaviour + default: + return new PostgresHSQLDBTable().as(alias, fieldAliases); } }