diff --git a/jOOQ-test/src/org/jooq/test/_/testcases/AggregateWindowFunctionTests.java b/jOOQ-test/src/org/jooq/test/_/testcases/AggregateWindowFunctionTests.java index 35cde1855e..640b4d2b9e 100644 --- a/jOOQ-test/src/org/jooq/test/_/testcases/AggregateWindowFunctionTests.java +++ b/jOOQ-test/src/org/jooq/test/_/testcases/AggregateWindowFunctionTests.java @@ -360,7 +360,6 @@ extends BaseTest extends Field, WindowOverStep { * Sybase. */ @Override - @Support({ DB2, POSTGRES, ORACLE, SQLSERVER, SYBASE }) + @Support({ CUBRID, DB2, POSTGRES, ORACLE, SQLSERVER, SYBASE }) WindowPartitionByStep over(); /** diff --git a/jOOQ/src/main/java/org/jooq/Field.java b/jOOQ/src/main/java/org/jooq/Field.java index 96540c2366..62a67d4b40 100644 --- a/jOOQ/src/main/java/org/jooq/Field.java +++ b/jOOQ/src/main/java/org/jooq/Field.java @@ -2129,7 +2129,7 @@ public interface Field extends GroupField { * @see Factory#count(Field) * @see AggregateFunction#over() */ - @Support({ DB2, POSTGRES, ORACLE, SQLSERVER, SYBASE }) + @Support({ CUBRID, DB2, POSTGRES, ORACLE, SQLSERVER, SYBASE }) WindowPartitionByStep countOver(); /** @@ -2140,7 +2140,7 @@ public interface Field extends GroupField { * @see Factory#max(Field) * @see AggregateFunction#over() */ - @Support({ DB2, POSTGRES, ORACLE, SQLSERVER, SYBASE }) + @Support({ CUBRID, DB2, POSTGRES, ORACLE, SQLSERVER, SYBASE }) WindowPartitionByStep maxOver(); /** @@ -2151,7 +2151,7 @@ public interface Field extends GroupField { * @see Factory#min(Field) * @see AggregateFunction#over() */ - @Support({ DB2, POSTGRES, ORACLE, SQLSERVER, SYBASE }) + @Support({ CUBRID, DB2, POSTGRES, ORACLE, SQLSERVER, SYBASE }) WindowPartitionByStep minOver(); /** @@ -2162,7 +2162,7 @@ public interface Field extends GroupField { * @see Factory#sum(Field) * @see AggregateFunction#over() */ - @Support({ DB2, POSTGRES, ORACLE, SQLSERVER, SYBASE }) + @Support({ CUBRID, DB2, POSTGRES, ORACLE, SQLSERVER, SYBASE }) WindowPartitionByStep sumOver(); /** @@ -2173,7 +2173,7 @@ public interface Field extends GroupField { * @see Factory#avg(Field) * @see AggregateFunction#over() */ - @Support({ DB2, POSTGRES, ORACLE, SQLSERVER, SYBASE }) + @Support({ CUBRID, DB2, POSTGRES, ORACLE, SQLSERVER, SYBASE }) WindowPartitionByStep avgOver(); /** @@ -2294,7 +2294,7 @@ public interface Field extends GroupField { * @see Factory#stddevPop(Field) * @see AggregateFunction#over() */ - @Support({ DB2, POSTGRES, ORACLE, SQLSERVER, SYBASE }) + @Support({ CUBRID, DB2, POSTGRES, ORACLE, SQLSERVER, SYBASE }) WindowPartitionByStep stddevPopOver(); /** @@ -2305,7 +2305,7 @@ public interface Field extends GroupField { * @see Factory#stddevSamp(Field) * @see AggregateFunction#over() */ - @Support({ DB2, POSTGRES, ORACLE, SQLSERVER, SYBASE }) + @Support({ CUBRID, DB2, POSTGRES, ORACLE, SQLSERVER, SYBASE }) WindowPartitionByStep stddevSampOver(); /** @@ -2316,7 +2316,7 @@ public interface Field extends GroupField { * @see Factory#varPop(Field) * @see AggregateFunction#over() */ - @Support({ DB2, POSTGRES, ORACLE, SQLSERVER, SYBASE }) + @Support({ CUBRID, DB2, POSTGRES, ORACLE, SQLSERVER, SYBASE }) WindowPartitionByStep varPopOver(); /** @@ -2327,7 +2327,7 @@ public interface Field extends GroupField { * @see Factory#varSamp(Field) * @see AggregateFunction#over() */ - @Support({ DB2, POSTGRES, ORACLE, SQLSERVER, SYBASE }) + @Support({ CUBRID, DB2, POSTGRES, ORACLE, SQLSERVER, SYBASE }) WindowPartitionByStep varSampOver(); /** diff --git a/jOOQ/src/main/java/org/jooq/WindowBeforeOverStep.java b/jOOQ/src/main/java/org/jooq/WindowBeforeOverStep.java index 0e18ce8d3c..8b64f84243 100644 --- a/jOOQ/src/main/java/org/jooq/WindowBeforeOverStep.java +++ b/jOOQ/src/main/java/org/jooq/WindowBeforeOverStep.java @@ -35,7 +35,11 @@ */ package org.jooq; +import static org.jooq.SQLDialect.CUBRID; import static org.jooq.SQLDialect.DB2; +import static org.jooq.SQLDialect.DERBY; +import static org.jooq.SQLDialect.H2; +import static org.jooq.SQLDialect.HSQLDB; import static org.jooq.SQLDialect.ORACLE; import static org.jooq.SQLDialect.POSTGRES; import static org.jooq.SQLDialect.SQLSERVER; @@ -67,7 +71,7 @@ public interface WindowBeforeOverStep extends WindowOverStep, Field { * Add an OVER clause */ @Override - @Support({ DB2, POSTGRES, ORACLE, SQLSERVER, SYBASE }) + @Support({ CUBRID, DB2, DERBY, H2, HSQLDB, POSTGRES, ORACLE, SQLSERVER, SYBASE }) WindowPartitionByStep over(); } diff --git a/jOOQ/src/main/java/org/jooq/WindowOrderByStep.java b/jOOQ/src/main/java/org/jooq/WindowOrderByStep.java index 3538b25bc7..ee694b5835 100644 --- a/jOOQ/src/main/java/org/jooq/WindowOrderByStep.java +++ b/jOOQ/src/main/java/org/jooq/WindowOrderByStep.java @@ -35,6 +35,7 @@ */ package org.jooq; +import static org.jooq.SQLDialect.CUBRID; import static org.jooq.SQLDialect.DB2; import static org.jooq.SQLDialect.ORACLE; import static org.jooq.SQLDialect.POSTGRES; @@ -64,18 +65,18 @@ public interface WindowOrderByStep extends WindowFinalStep { /** * Add an ORDER BY clause to the window function. */ - @Support({ DB2, POSTGRES, ORACLE, SQLSERVER, SYBASE }) + @Support({ CUBRID, DB2, POSTGRES, ORACLE, SQLSERVER, SYBASE }) WindowRowsStep orderBy(Field... fields); /** * Add an ORDER BY clause to the window function. */ - @Support({ DB2, POSTGRES, ORACLE, SQLSERVER, SYBASE }) + @Support({ CUBRID, DB2, POSTGRES, ORACLE, SQLSERVER, SYBASE }) WindowRowsStep orderBy(SortField... fields); /** * Add an ORDER BY clause to the window function. */ - @Support({ DB2, POSTGRES, ORACLE, SQLSERVER, SYBASE }) + @Support({ CUBRID, DB2, POSTGRES, ORACLE, SQLSERVER, SYBASE }) WindowRowsStep orderBy(Collection> fields); } diff --git a/jOOQ/src/main/java/org/jooq/WindowOverStep.java b/jOOQ/src/main/java/org/jooq/WindowOverStep.java index 7c7b190824..20475c811b 100644 --- a/jOOQ/src/main/java/org/jooq/WindowOverStep.java +++ b/jOOQ/src/main/java/org/jooq/WindowOverStep.java @@ -35,6 +35,7 @@ */ package org.jooq; +import static org.jooq.SQLDialect.CUBRID; import static org.jooq.SQLDialect.DB2; import static org.jooq.SQLDialect.DERBY; import static org.jooq.SQLDialect.H2; @@ -68,7 +69,7 @@ public interface WindowOverStep { /** * Add an OVER clause */ - @Support({ DB2, DERBY, H2, HSQLDB, POSTGRES, ORACLE, SQLSERVER, SYBASE }) + @Support({ CUBRID, DB2, DERBY, H2, HSQLDB, POSTGRES, ORACLE, SQLSERVER, SYBASE }) WindowPartitionByStep over(); } diff --git a/jOOQ/src/main/java/org/jooq/WindowPartitionByStep.java b/jOOQ/src/main/java/org/jooq/WindowPartitionByStep.java index 9d2cd96678..e8fcc9ff05 100644 --- a/jOOQ/src/main/java/org/jooq/WindowPartitionByStep.java +++ b/jOOQ/src/main/java/org/jooq/WindowPartitionByStep.java @@ -35,13 +35,13 @@ */ package org.jooq; +import static org.jooq.SQLDialect.CUBRID; import static org.jooq.SQLDialect.DB2; import static org.jooq.SQLDialect.ORACLE; import static org.jooq.SQLDialect.POSTGRES; import static org.jooq.SQLDialect.SQLSERVER; import static org.jooq.SQLDialect.SYBASE; - /** * This type is used for the window function DSL API. *

@@ -63,17 +63,17 @@ public interface WindowPartitionByStep extends WindowOrderByStep { /** * Add a PARTITION BY clause to the window functions. */ - @Support({ DB2, POSTGRES, ORACLE, SQLSERVER, SYBASE }) + @Support({ CUBRID, DB2, POSTGRES, ORACLE, SQLSERVER, SYBASE }) WindowOrderByStep partitionBy(Field... fields); /** * Add a PARTITION BY 1 clause to the window functions, where * such a clause is required by the syntax of an RDBMS. *

- * This clause is not supported in the Sybase dialect. If you use it, jOOQ - * will simply ignore it. + * This clause is not supported as such in the CUBRID and Sybase dialects. + * If you use it, jOOQ will simply ignore it. */ - @Support({ DB2, POSTGRES, ORACLE, SQLSERVER, SYBASE }) + @Support({ CUBRID, DB2, POSTGRES, ORACLE, SQLSERVER, SYBASE }) WindowOrderByStep partitionByOne(); } diff --git a/jOOQ/src/main/java/org/jooq/impl/Factory.java b/jOOQ/src/main/java/org/jooq/impl/Factory.java index f7e2d8384c..e810e5a037 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Factory.java +++ b/jOOQ/src/main/java/org/jooq/impl/Factory.java @@ -5086,7 +5086,7 @@ public class Factory { * {@link SQLDialect#HSQLDB} can simulate this function using * ROWNUM() */ - @Support({ DB2, DERBY, H2, HSQLDB, POSTGRES, ORACLE, SQLSERVER, SYBASE }) + @Support({ CUBRID, DB2, DERBY, H2, HSQLDB, POSTGRES, ORACLE, SQLSERVER, SYBASE }) public static WindowOverStep rowNumber() { return new Function(ROW_NUMBER, SQLDataType.INTEGER); } @@ -5097,7 +5097,7 @@ public class Factory { * Window functions are supported in DB2, Postgres, Oracle, SQL Server and * Sybase. */ - @Support({ DB2, POSTGRES, ORACLE, SQLSERVER, SYBASE }) + @Support({ CUBRID, DB2, POSTGRES, ORACLE, SQLSERVER, SYBASE }) public static WindowOverStep rank() { return new Function("rank", SQLDataType.INTEGER); } @@ -5108,7 +5108,7 @@ public class Factory { * Window functions are supported in DB2, Postgres, Oracle, SQL Server and * Sybase. */ - @Support({ DB2, POSTGRES, ORACLE, SQLSERVER, SYBASE }) + @Support({ CUBRID, DB2, POSTGRES, ORACLE, SQLSERVER, SYBASE }) public static WindowOverStep denseRank() { return new Function("dense_rank", SQLDataType.INTEGER); } diff --git a/jOOQ/src/main/java/org/jooq/impl/Function.java b/jOOQ/src/main/java/org/jooq/impl/Function.java index 64975d2274..57943d511b 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Function.java +++ b/jOOQ/src/main/java/org/jooq/impl/Function.java @@ -307,8 +307,10 @@ class Function extends AbstractField implements String glue = ""; context.keyword(" over ("); if (!partitionBy.isEmpty()) { - if (partitionByOne && context.getDialect() == SQLDialect.SYBASE) { - // Ignore partition clause. Sybase does not support this construct + + // Ignore PARTITION BY 1 clause. These databases erroneously map the + // 1 literal onto the column index + if (partitionByOne && asList(CUBRID, SYBASE).contains(context.getDialect())) { } else { context.sql(glue)