From b6b28b1e6a69cd32fc2f3bb67e66fe995fc1e7d9 Mon Sep 17 00:00:00 2001 From: lukaseder Date: Fri, 1 Feb 2019 15:19:13 +0100 Subject: [PATCH] [#8279] Emulate inline window specifications based on other window definitions in SQLite --- jOOQ/src/main/java/org/jooq/Name.java | 3 ++- jOOQ/src/main/java/org/jooq/SelectWindowStep.java | 10 ++++++++-- jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java | 2 +- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/Name.java b/jOOQ/src/main/java/org/jooq/Name.java index 2ca78291ef..0ef081e33f 100644 --- a/jOOQ/src/main/java/org/jooq/Name.java +++ b/jOOQ/src/main/java/org/jooq/Name.java @@ -51,6 +51,7 @@ import static org.jooq.SQLDialect.MYSQL_8_0; // ... import static org.jooq.SQLDialect.POSTGRES; // ... +import static org.jooq.SQLDialect.SQLITE; // ... // ... // ... @@ -207,7 +208,7 @@ public interface Name extends QueryPart { * {@link AggregateFunction#over(WindowDefinition)} * */ - @Support({ CUBRID, FIREBIRD_3_0, H2, MARIADB, MYSQL_8_0, POSTGRES }) + @Support({ CUBRID, FIREBIRD_3_0, H2, MARIADB, MYSQL_8_0, POSTGRES, SQLITE }) WindowDefinition as(WindowSpecification window); /** diff --git a/jOOQ/src/main/java/org/jooq/SelectWindowStep.java b/jOOQ/src/main/java/org/jooq/SelectWindowStep.java index b93adf02c9..d4d40d24ee 100644 --- a/jOOQ/src/main/java/org/jooq/SelectWindowStep.java +++ b/jOOQ/src/main/java/org/jooq/SelectWindowStep.java @@ -131,7 +131,10 @@ public interface SelectWindowStep extends SelectOrderByStep *
  • {@link SQLDialect#H2}
  • *
  • {@link SQLDialect#MYSQL}
  • *
  • {@link SQLDialect#POSTGRES}
  • - *
  • {@link SQLDialect#SQLITE}
  • + *
  • {@link SQLDialect#SQLITE} (however, with some limitations. See + * https://github.com/jOOQ/jOOQ/issues/8279. + * Hence, jOOQ emulates the WINDOW clause for SQLite
  • *
  • {@link SQLDialect#SYBASE}
  • * *

    @@ -153,7 +156,10 @@ public interface SelectWindowStep extends SelectOrderByStep *

  • {@link SQLDialect#H2}
  • *
  • {@link SQLDialect#MYSQL}
  • *
  • {@link SQLDialect#POSTGRES}
  • - *
  • {@link SQLDialect#SQLITE}
  • + *
  • {@link SQLDialect#SQLITE} (however, with some limitations. See + * https://github.com/jOOQ/jOOQ/issues/8279. + * Hence, jOOQ emulates the WINDOW clause for SQLite
  • *
  • {@link SQLDialect#SYBASE}
  • * *

    diff --git a/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java b/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java index 602552018e..374168666b 100644 --- a/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java @@ -204,7 +204,7 @@ final class SelectQueryImpl extends AbstractResultQuery imp private static final EnumSet NO_SUPPORT_FOR_UPDATE = EnumSet.of(CUBRID); private static final EnumSet NO_SUPPORT_FOR_UPDATE_QUALIFIED = EnumSet.of(DERBY, FIREBIRD, H2, HSQLDB); private static final EnumSet SUPPORT_SELECT_INTO_TABLE = EnumSet.of(HSQLDB, POSTGRES); - static final EnumSet SUPPORT_WINDOW_CLAUSE = EnumSet.of(H2, MYSQL, POSTGRES, SQLITE); + static final EnumSet SUPPORT_WINDOW_CLAUSE = EnumSet.of(H2, MYSQL, POSTGRES /*, SQLITE -- See [#8279] */); private static final EnumSet REQUIRES_FROM_CLAUSE = EnumSet.of(CUBRID, DERBY, FIREBIRD, HSQLDB, MARIADB, MYSQL); private static final EnumSet EMULATE_EMPTY_GROUP_BY_OTHER = EnumSet.of(FIREBIRD, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE);