From 577ddd4a608e140438a927cdc54bbd770f53603f Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Sun, 1 Jul 2012 10:49:38 +0200 Subject: [PATCH] [#1523] Support ROW_NUMBER() OVER() for the latest version of Derby and H2, which support it --- .../testcases/AggregateWindowFunctionTests.java | 17 +++++++++++++++-- jOOQ/src/main/java/org/jooq/WindowOverStep.java | 4 +++- jOOQ/src/main/java/org/jooq/impl/Factory.java | 6 +++++- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/jOOQ-test/src/org/jooq/test/_/testcases/AggregateWindowFunctionTests.java b/jOOQ-test/src/org/jooq/test/_/testcases/AggregateWindowFunctionTests.java index bb3ab325f7..74f6703d1e 100644 --- a/jOOQ-test/src/org/jooq/test/_/testcases/AggregateWindowFunctionTests.java +++ b/jOOQ-test/src/org/jooq/test/_/testcases/AggregateWindowFunctionTests.java @@ -70,6 +70,7 @@ import static org.jooq.impl.Factory.varPop; import static org.jooq.impl.Factory.varSamp; import java.math.BigDecimal; +import java.util.List; import org.jooq.Field; import org.jooq.Record; @@ -255,8 +256,6 @@ extends BaseTest rows = + create().select(rowNumber().over()).from(TBook()).fetch(0, Integer.class); + assertEquals(asList(1, 2, 3, 4), rows); + + switch (getDialect()) { + case DERBY: + case H2: + log.info("SKIPPING", "Advanced window function tests"); + return; + } + + int column = 0; // ROW_NUMBER() diff --git a/jOOQ/src/main/java/org/jooq/WindowOverStep.java b/jOOQ/src/main/java/org/jooq/WindowOverStep.java index 4058bfc894..3acbcb013f 100644 --- a/jOOQ/src/main/java/org/jooq/WindowOverStep.java +++ b/jOOQ/src/main/java/org/jooq/WindowOverStep.java @@ -36,6 +36,8 @@ package org.jooq; import static org.jooq.SQLDialect.DB2; +import static org.jooq.SQLDialect.DERBY; +import static org.jooq.SQLDialect.H2; import static org.jooq.SQLDialect.ORACLE; import static org.jooq.SQLDialect.POSTGRES; import static org.jooq.SQLDialect.SQLSERVER; @@ -65,7 +67,7 @@ public interface WindowOverStep { /** * Add an OVER clause */ - @Support({ DB2, POSTGRES, ORACLE, SQLSERVER, SYBASE }) + @Support({ DB2, DERBY, H2, POSTGRES, ORACLE, SQLSERVER, SYBASE }) WindowPartitionByStep over(); } diff --git a/jOOQ/src/main/java/org/jooq/impl/Factory.java b/jOOQ/src/main/java/org/jooq/impl/Factory.java index 9777c1c117..f671788200 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Factory.java +++ b/jOOQ/src/main/java/org/jooq/impl/Factory.java @@ -5098,8 +5098,12 @@ public class Factory implements FactoryOperations { *

* Window functions are supported in DB2, Postgres, Oracle, SQL Server and * Sybase. + *

+ * Newer versions of {@link SQLDialect#DERBY} and {@link SQLDialect#H2} also + * support the ROW_NUMBER() OVER() window function without any + * window clause. See the respective docs for details */ - @Support({ DB2, POSTGRES, ORACLE, SQLSERVER, SYBASE }) + @Support({ DB2, DERBY, H2, POSTGRES, ORACLE, SQLSERVER, SYBASE }) public static WindowOverStep rowNumber() { return new Function("row_number", SQLDataType.INTEGER); }