diff --git a/jOOQ/src/main/java/org/jooq/impl/Limit.java b/jOOQ/src/main/java/org/jooq/impl/Limit.java index a48b72da8f..5925a8071d 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Limit.java +++ b/jOOQ/src/main/java/org/jooq/impl/Limit.java @@ -167,9 +167,11 @@ final class Limit extends AbstractQueryPart { + + case DERBY: case FIREBIRD: case H2: - case DERBY: { + case POSTGRES: { // [#8415] For backwards compatibility reasons, we generate standard // OFFSET .. FETCH syntax on H2 only when strictly needed @@ -317,9 +319,7 @@ final class Limit extends AbstractQueryPart { - case HSQLDB: - case POSTGRES: // No break // A default implementation is necessary for hashCode() and toString() diff --git a/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java b/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java index 937de38377..2092c7c299 100644 --- a/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java @@ -77,16 +77,20 @@ import static org.jooq.SQLDialect.HSQLDB; // ... import static org.jooq.SQLDialect.MARIADB; // ... +// ... +// ... import static org.jooq.SQLDialect.MYSQL; // ... // ... // ... // ... +// ... import static org.jooq.SQLDialect.POSTGRES; // ... // ... // ... // ... +// ... import static org.jooq.SQLDialect.SQLITE; // ... // ... @@ -265,9 +269,7 @@ final class SelectQueryImpl extends AbstractResultQuery imp static final Set SUPPORT_WINDOW_CLAUSE = SQLDialect.supportedBy(H2, MYSQL, POSTGRES, SQLITE); - - // [#7421] [#9832] We can eventually stop generating the FROM clause in newer versions of MariaDB and MySQL - private static final Set REQUIRES_FROM_CLAUSE = SQLDialect.supportedBy(CUBRID, DERBY, FIREBIRD, HSQLDB, MARIADB, MYSQL); + private static final Set OPTIONAL_FROM_CLAUSE = SQLDialect.supportedBy(H2, MARIADB, MYSQL, POSTGRES, SQLITE); private static final Set REQUIRES_DERIVED_TABLE_DML = SQLDialect.supportedBy(MARIADB, MYSQL); private static final Set EMULATE_EMPTY_GROUP_BY_CONSTANT = SQLDialect.supportedUntil(DERBY, HSQLDB); private static final Set EMULATE_EMPTY_GROUP_BY_OTHER = SQLDialect.supportedUntil(FIREBIRD, MARIADB, MYSQL, SQLITE); @@ -275,7 +277,7 @@ final class SelectQueryImpl extends AbstractResultQuery imp - private static final Set SUPPORT_FULL_WITH_TIES = SQLDialect.supportedBy(H2); + private static final Set SUPPORT_FULL_WITH_TIES = SQLDialect.supportedBy(H2, POSTGRES); private static final Set EMULATE_DISTINCT_ON = SQLDialect.supportedBy(DERBY, FIREBIRD, HSQLDB, MARIADB, MYSQL, SQLITE); @@ -1472,14 +1474,12 @@ final class SelectQueryImpl extends AbstractResultQuery imp - case CUBRID: case FIREBIRD: case MARIADB: - case MYSQL: - case POSTGRES: { + case MYSQL: { if (getLimit().isApplicable() && getLimit().withTies()) toSQLReferenceLimitWithWindowFunctions(context); else @@ -2005,7 +2005,7 @@ final class SelectQueryImpl extends AbstractResultQuery imp // [#....] Some SQL dialects do not require a FROM clause. Others do and // jOOQ generates a "DUAL" table or something equivalent. // See also org.jooq.impl.Dual for details. - boolean hasFrom = !getFrom().isEmpty() || REQUIRES_FROM_CLAUSE.contains(context.dialect()); + boolean hasFrom = !getFrom().isEmpty() || !OPTIONAL_FROM_CLAUSE.contains(context.dialect()); List semiAntiJoinPredicates = null; ConditionProviderImpl where = getWhere();