[#4874] Add Firebird 3.0 support for window functions

This commit is contained in:
lukaseder 2015-12-31 14:34:04 +01:00
parent 602a200420
commit fffebf6186
10 changed files with 66 additions and 56 deletions

View File

@ -47,6 +47,7 @@ import static org.jooq.SQLDialect.CUBRID;
// ...
import static org.jooq.SQLDialect.DERBY;
import static org.jooq.SQLDialect.FIREBIRD;
import static org.jooq.SQLDialect.FIREBIRD_3_0;
import static org.jooq.SQLDialect.H2;
// ...
import static org.jooq.SQLDialect.HSQLDB;
@ -2601,7 +2602,7 @@ public interface Field<T> extends SelectField<T>, GroupField, FieldOrRow {
* @see DSL#count(Field)
* @see AggregateFunction#over()
*/
@Support({ CUBRID, POSTGRES })
@Support({ CUBRID, FIREBIRD_3_0, POSTGRES })
WindowPartitionByStep<Integer> countOver();
/**
@ -2612,7 +2613,7 @@ public interface Field<T> extends SelectField<T>, GroupField, FieldOrRow {
* @see DSL#max(Field)
* @see AggregateFunction#over()
*/
@Support({ CUBRID, POSTGRES })
@Support({ CUBRID, FIREBIRD_3_0, POSTGRES })
WindowPartitionByStep<T> maxOver();
/**
@ -2623,7 +2624,7 @@ public interface Field<T> extends SelectField<T>, GroupField, FieldOrRow {
* @see DSL#min(Field)
* @see AggregateFunction#over()
*/
@Support({ CUBRID, POSTGRES })
@Support({ CUBRID, FIREBIRD_3_0, POSTGRES })
WindowPartitionByStep<T> minOver();
/**
@ -2634,7 +2635,7 @@ public interface Field<T> extends SelectField<T>, GroupField, FieldOrRow {
* @see DSL#sum(Field)
* @see AggregateFunction#over()
*/
@Support({ CUBRID, POSTGRES })
@Support({ CUBRID, FIREBIRD_3_0, POSTGRES })
WindowPartitionByStep<BigDecimal> sumOver();
/**
@ -2645,7 +2646,7 @@ public interface Field<T> extends SelectField<T>, GroupField, FieldOrRow {
* @see DSL#avg(Field)
* @see AggregateFunction#over()
*/
@Support({ CUBRID, POSTGRES })
@Support({ CUBRID, FIREBIRD_3_0, POSTGRES })
WindowPartitionByStep<BigDecimal> avgOver();
/**
@ -2656,7 +2657,7 @@ public interface Field<T> extends SelectField<T>, GroupField, FieldOrRow {
* @see DSL#firstValue(Field)
* @see AggregateFunction#over()
*/
@Support({ CUBRID, POSTGRES })
@Support({ CUBRID, FIREBIRD_3_0, POSTGRES })
WindowIgnoreNullsStep<T> firstValue();
/**
@ -2667,7 +2668,7 @@ public interface Field<T> extends SelectField<T>, GroupField, FieldOrRow {
* @see DSL#lastValue(Field)
* @see AggregateFunction#over()
*/
@Support({ CUBRID, POSTGRES })
@Support({ CUBRID, FIREBIRD_3_0, POSTGRES })
WindowIgnoreNullsStep<T> lastValue();
/**
@ -2678,7 +2679,7 @@ public interface Field<T> extends SelectField<T>, GroupField, FieldOrRow {
* @see DSL#lead(Field)
* @see AggregateFunction#over()
*/
@Support({ POSTGRES })
@Support({ FIREBIRD_3_0, POSTGRES })
WindowIgnoreNullsStep<T> lead();
/**
@ -2689,7 +2690,7 @@ public interface Field<T> extends SelectField<T>, GroupField, FieldOrRow {
* @see DSL#lead(Field, int)
* @see AggregateFunction#over()
*/
@Support({ POSTGRES })
@Support({ FIREBIRD_3_0, POSTGRES })
WindowIgnoreNullsStep<T> lead(int offset);
/**
@ -2700,7 +2701,7 @@ public interface Field<T> extends SelectField<T>, GroupField, FieldOrRow {
* @see DSL#lead(Field, int, Object)
* @see AggregateFunction#over()
*/
@Support({ POSTGRES })
@Support({ FIREBIRD_3_0, POSTGRES })
WindowIgnoreNullsStep<T> lead(int offset, T defaultValue);
/**
@ -2711,7 +2712,7 @@ public interface Field<T> extends SelectField<T>, GroupField, FieldOrRow {
* @see DSL#lead(Field, int, Field)
* @see AggregateFunction#over()
*/
@Support({ POSTGRES })
@Support({ FIREBIRD_3_0, POSTGRES })
WindowIgnoreNullsStep<T> lead(int offset, Field<T> defaultValue);
/**
@ -2722,7 +2723,7 @@ public interface Field<T> extends SelectField<T>, GroupField, FieldOrRow {
* @see DSL#lag(Field)
* @see AggregateFunction#over()
*/
@Support({ POSTGRES })
@Support({ FIREBIRD_3_0, POSTGRES })
WindowIgnoreNullsStep<T> lag();
/**
@ -2733,7 +2734,7 @@ public interface Field<T> extends SelectField<T>, GroupField, FieldOrRow {
* @see DSL#lag(Field, int)
* @see AggregateFunction#over()
*/
@Support({ POSTGRES })
@Support({ FIREBIRD_3_0, POSTGRES })
WindowIgnoreNullsStep<T> lag(int offset);
/**
@ -2744,7 +2745,7 @@ public interface Field<T> extends SelectField<T>, GroupField, FieldOrRow {
* @see DSL#lag(Field, int, Object)
* @see AggregateFunction#over()
*/
@Support({ POSTGRES })
@Support({ FIREBIRD_3_0, POSTGRES })
WindowIgnoreNullsStep<T> lag(int offset, T defaultValue);
/**
@ -2755,7 +2756,7 @@ public interface Field<T> extends SelectField<T>, GroupField, FieldOrRow {
* @see DSL#lag(Field, int, Field)
* @see AggregateFunction#over()
*/
@Support({ POSTGRES })
@Support({ FIREBIRD_3_0, POSTGRES })
WindowIgnoreNullsStep<T> lag(int offset, Field<T> defaultValue);
/**

View File

@ -43,6 +43,7 @@ package org.jooq;
import static org.jooq.SQLDialect.CUBRID;
// ...
import static org.jooq.SQLDialect.FIREBIRD;
import static org.jooq.SQLDialect.FIREBIRD_3_0;
import static org.jooq.SQLDialect.H2;
// ...
import static org.jooq.SQLDialect.HSQLDB;
@ -83,7 +84,7 @@ public interface Name extends QueryPart {
* {@link AggregateFunction#over(WindowDefinition)}</li>
* </ul>
*/
@Support({ CUBRID, POSTGRES })
@Support({ CUBRID, FIREBIRD_3_0, POSTGRES })
WindowDefinition as(WindowSpecification window);
/**

View File

@ -46,6 +46,7 @@ import static org.jooq.SQLDialect.CUBRID;
// ...
import static org.jooq.SQLDialect.DERBY;
import static org.jooq.SQLDialect.FIREBIRD;
import static org.jooq.SQLDialect.FIREBIRD_3_0;
import static org.jooq.SQLDialect.H2;
// ...
import static org.jooq.SQLDialect.HSQLDB;
@ -313,7 +314,7 @@ public interface SelectQuery<R extends Record> extends Select<R>, ConditionProvi
*
* @param definitions The definitions
*/
@Support({ CUBRID, POSTGRES })
@Support({ CUBRID, FIREBIRD_3_0, POSTGRES })
void addWindow(WindowDefinition... definitions);
/**
@ -321,7 +322,7 @@ public interface SelectQuery<R extends Record> extends Select<R>, ConditionProvi
*
* @param definitions The definitions
*/
@Support({ CUBRID, POSTGRES })
@Support({ CUBRID, FIREBIRD_3_0, POSTGRES })
void addWindow(Collection<? extends WindowDefinition> definitions);
/**

View File

@ -42,6 +42,7 @@ package org.jooq;
import static org.jooq.SQLDialect.CUBRID;
// ...
import static org.jooq.SQLDialect.FIREBIRD_3_0;
// ...
// ...
// ...
@ -107,7 +108,7 @@ public interface SelectWindowStep<R extends Record> extends SelectOrderByStep<R>
* use this clause in all other databases supporting window functions. jOOQ
* will inline window definitions where they are referenced.
*/
@Support({ CUBRID, POSTGRES })
@Support({ CUBRID, FIREBIRD_3_0, POSTGRES })
SelectOrderByStep<R> window(WindowDefinition... definitions);
/**
@ -121,6 +122,6 @@ public interface SelectWindowStep<R extends Record> extends SelectOrderByStep<R>
* use this clause in all other databases supporting window functions. jOOQ
* will inline window definitions where they are referenced.
*/
@Support({ CUBRID, POSTGRES })
@Support({ CUBRID, FIREBIRD_3_0, POSTGRES })
SelectOrderByStep<R> window(Collection<? extends WindowDefinition> definitions);
}

View File

@ -42,6 +42,7 @@ package org.jooq;
import static org.jooq.SQLDialect.CUBRID;
// ...
import static org.jooq.SQLDialect.FIREBIRD_3_0;
// ...
// ...
// ...
@ -74,18 +75,18 @@ public interface WindowOrderByStep<T> extends WindowFinalStep<T> {
/**
* Add an <code>ORDER BY</code> clause to the window function.
*/
@Support({ CUBRID, POSTGRES })
@Support({ CUBRID, FIREBIRD_3_0, POSTGRES })
WindowRowsStep<T> orderBy(Field<?>... fields);
/**
* Add an <code>ORDER BY</code> clause to the window function.
*/
@Support({ CUBRID, POSTGRES })
@Support({ CUBRID, FIREBIRD_3_0, POSTGRES })
WindowRowsStep<T> orderBy(SortField<?>... fields);
/**
* Add an <code>ORDER BY</code> clause to the window function.
*/
@Support({ CUBRID, POSTGRES })
@Support({ CUBRID, FIREBIRD_3_0, POSTGRES })
WindowRowsStep<T> orderBy(Collection<? extends SortField<?>> fields);
}

View File

@ -43,6 +43,7 @@ package org.jooq;
import static org.jooq.SQLDialect.CUBRID;
// ...
import static org.jooq.SQLDialect.DERBY;
import static org.jooq.SQLDialect.FIREBIRD_3_0;
import static org.jooq.SQLDialect.H2;
// ...
import static org.jooq.SQLDialect.HSQLDB;
@ -83,7 +84,7 @@ public interface WindowOverStep<T> {
* </code>
* </pre>
*/
@Support({ CUBRID, DERBY, H2, HSQLDB, POSTGRES })
@Support({ CUBRID, DERBY, FIREBIRD_3_0, H2, HSQLDB, POSTGRES })
WindowPartitionByStep<T> over();
/**
@ -99,7 +100,7 @@ public interface WindowOverStep<T> {
* {@link SelectWindowStep#window(WindowDefinition...)}, then referenced
* windows will be inlined.
*/
@Support({ CUBRID, POSTGRES })
@Support({ CUBRID, FIREBIRD_3_0, POSTGRES })
WindowFinalStep<T> over(Name name);
/**
@ -115,7 +116,7 @@ public interface WindowOverStep<T> {
* {@link SelectWindowStep#window(WindowDefinition...)}, then referenced
* windows will be inlined.
*/
@Support({ CUBRID, POSTGRES })
@Support({ CUBRID, FIREBIRD_3_0, POSTGRES })
WindowFinalStep<T> over(String name);
/**
@ -126,7 +127,7 @@ public interface WindowOverStep<T> {
* </code>
* </pre>
*/
@Support({ CUBRID, POSTGRES })
@Support({ CUBRID, FIREBIRD_3_0, POSTGRES })
WindowFinalStep<T> over(WindowSpecification specification);
/**
@ -142,7 +143,7 @@ public interface WindowOverStep<T> {
* {@link SelectWindowStep#window(WindowDefinition...)}, then referenced
* windows will be inlined.
*/
@Support({ CUBRID, POSTGRES })
@Support({ CUBRID, FIREBIRD_3_0, POSTGRES })
WindowFinalStep<T> over(WindowDefinition definition);
}

View File

@ -42,6 +42,7 @@ package org.jooq;
import static org.jooq.SQLDialect.CUBRID;
// ...
import static org.jooq.SQLDialect.FIREBIRD_3_0;
// ...
// ...
// ...
@ -72,7 +73,7 @@ public interface WindowPartitionByStep<T> extends WindowOrderByStep<T> {
/**
* Add a <code>PARTITION BY</code> clause to the window functions.
*/
@Support({ CUBRID, POSTGRES })
@Support({ CUBRID, FIREBIRD_3_0, POSTGRES })
WindowOrderByStep<T> partitionBy(Field<?>... fields);
/**
@ -82,7 +83,7 @@ public interface WindowPartitionByStep<T> extends WindowOrderByStep<T> {
* This clause is not supported as such in the CUBRID and Sybase dialects.
* If you use it, jOOQ will simply ignore it.
*/
@Support({ CUBRID, POSTGRES })
@Support({ CUBRID, FIREBIRD_3_0, POSTGRES })
WindowOrderByStep<T> partitionByOne();
}

View File

@ -42,6 +42,7 @@ package org.jooq;
import static org.jooq.SQLDialect.CUBRID;
// ...
import static org.jooq.SQLDialect.FIREBIRD_3_0;
// ...
// ...
// ...
@ -71,18 +72,18 @@ public interface WindowSpecificationOrderByStep extends WindowSpecificationRowsS
/**
* Add an <code>ORDER BY</code> clause to the window specification.
*/
@Support({ CUBRID, POSTGRES })
@Support({ CUBRID, FIREBIRD_3_0, POSTGRES })
WindowSpecificationRowsStep orderBy(Field<?>... fields);
/**
* Add an <code>ORDER BY</code> clause to the window specification.
*/
@Support({ CUBRID, POSTGRES })
@Support({ CUBRID, FIREBIRD_3_0, POSTGRES })
WindowSpecificationRowsStep orderBy(SortField<?>... fields);
/**
* Add an <code>ORDER BY</code> clause to the window specification.
*/
@Support({ CUBRID, POSTGRES })
@Support({ CUBRID, FIREBIRD_3_0, POSTGRES })
WindowSpecificationRowsStep orderBy(Collection<? extends SortField<?>> fields);
}

View File

@ -42,6 +42,7 @@ package org.jooq;
import static org.jooq.SQLDialect.CUBRID;
// ...
import static org.jooq.SQLDialect.FIREBIRD_3_0;
// ...
// ...
// ...
@ -71,13 +72,13 @@ public interface WindowSpecificationPartitionByStep extends WindowSpecificationO
/**
* Add a <code>PARTITION BY</code> clause to the window specification.
*/
@Support({ CUBRID, POSTGRES })
@Support({ CUBRID, FIREBIRD_3_0, POSTGRES })
WindowSpecificationOrderByStep partitionBy(Field<?>... fields);
/**
* Add a <code>PARTITION BY</code> clause to the window specification.
*/
@Support({ CUBRID, POSTGRES })
@Support({ CUBRID, FIREBIRD_3_0, POSTGRES })
WindowSpecificationOrderByStep partitionBy(Collection<? extends Field<?>> fields);
/**
@ -87,6 +88,6 @@ public interface WindowSpecificationPartitionByStep extends WindowSpecificationO
* This clause is not supported as such in the CUBRID and Sybase dialects.
* If you use it, jOOQ will simply ignore it.
*/
@Support({ CUBRID, POSTGRES })
@Support({ CUBRID, FIREBIRD_3_0, POSTGRES })
WindowSpecificationOrderByStep partitionByOne();
}

View File

@ -49,6 +49,7 @@ import static org.jooq.SQLDialect.CUBRID;
// ...
import static org.jooq.SQLDialect.DERBY;
import static org.jooq.SQLDialect.FIREBIRD;
import static org.jooq.SQLDialect.FIREBIRD_3_0;
import static org.jooq.SQLDialect.H2;
// ...
import static org.jooq.SQLDialect.HSQLDB;
@ -13275,7 +13276,7 @@ public class DSL {
/**
* Create a {@link WindowSpecification} with a <code>PARTITION BY</code> clause.
*/
@Support({ CUBRID, POSTGRES })
@Support({ CUBRID, FIREBIRD_3_0, POSTGRES })
public static WindowSpecificationOrderByStep partitionBy(Field<?>... fields) {
return new WindowSpecificationImpl().partitionBy(fields);
}
@ -13283,7 +13284,7 @@ public class DSL {
/**
* Create a {@link WindowSpecification} with a <code>PARTITION BY</code> clause.
*/
@Support({ CUBRID, POSTGRES })
@Support({ CUBRID, FIREBIRD_3_0, POSTGRES })
public static WindowSpecificationOrderByStep partitionBy(Collection<? extends Field<?>> fields) {
return new WindowSpecificationImpl().partitionBy(fields);
}
@ -13291,7 +13292,7 @@ public class DSL {
/**
* Create a {@link WindowSpecification} with an <code>ORDER BY</code> clause.
*/
@Support({ CUBRID, POSTGRES })
@Support({ CUBRID, FIREBIRD_3_0, POSTGRES })
public static WindowSpecificationOrderByStep orderBy(Field<?>... fields) {
return new WindowSpecificationImpl().orderBy(fields);
}
@ -13299,7 +13300,7 @@ public class DSL {
/**
* Create a {@link WindowSpecification} with an <code>ORDER BY</code> clause.
*/
@Support({ CUBRID, POSTGRES })
@Support({ CUBRID, FIREBIRD_3_0, POSTGRES })
public static WindowSpecificationRowsStep orderBy(SortField<?>... fields) {
return new WindowSpecificationImpl().orderBy(fields);
}
@ -13307,7 +13308,7 @@ public class DSL {
/**
* Create a {@link WindowSpecification} with an <code>ORDER BY</code> clause.
*/
@Support({ CUBRID, POSTGRES })
@Support({ CUBRID, FIREBIRD_3_0, POSTGRES })
public static WindowSpecificationRowsStep orderBy(Collection<? extends SortField<?>> fields) {
return new WindowSpecificationImpl().orderBy(fields);
}
@ -13485,7 +13486,7 @@ public class DSL {
* {@link SQLDialect#HSQLDB} can emulate this function using
* <code>ROWNUM()</code>
*/
@Support({ CUBRID, DERBY, H2, HSQLDB, POSTGRES })
@Support({ CUBRID, DERBY, FIREBIRD_3_0, H2, HSQLDB, POSTGRES })
public static WindowOverStep<Integer> rowNumber() {
return new Function<Integer>(ROW_NUMBER, SQLDataType.INTEGER);
}
@ -13493,7 +13494,7 @@ public class DSL {
/**
* The <code>rank() over ([analytic clause])</code> function.
*/
@Support({ CUBRID, POSTGRES })
@Support({ CUBRID, FIREBIRD_3_0, POSTGRES })
public static WindowOverStep<Integer> rank() {
return new Function<Integer>("rank", SQLDataType.INTEGER);
}
@ -13501,7 +13502,7 @@ public class DSL {
/**
* The <code>dense_rank() over ([analytic clause])</code> function.
*/
@Support({ CUBRID, POSTGRES })
@Support({ CUBRID, FIREBIRD_3_0, POSTGRES })
public static WindowOverStep<Integer> denseRank() {
return new Function<Integer>("dense_rank", SQLDataType.INTEGER);
}
@ -13533,7 +13534,7 @@ public class DSL {
/**
* The <code>first_value(field) over ([analytic clause])</code> function.
*/
@Support({ CUBRID, POSTGRES })
@Support({ CUBRID, FIREBIRD_3_0, POSTGRES })
public static <T> WindowIgnoreNullsStep<T> firstValue(Field<T> field) {
return new Function<T>("first_value", nullSafeDataType(field), nullSafe(field));
}
@ -13541,7 +13542,7 @@ public class DSL {
/**
* The <code>last_value(field) over ([analytic clause])</code> function.
*/
@Support({ CUBRID, POSTGRES })
@Support({ CUBRID, FIREBIRD_3_0, POSTGRES })
public static <T> WindowIgnoreNullsStep<T> lastValue(Field<T> field) {
return new Function<T>("last_value", nullSafeDataType(field), nullSafe(field));
}
@ -13549,7 +13550,7 @@ public class DSL {
/**
* The <code>nth_value(field) over ([analytic clause])</code> function.
*/
@Support({ POSTGRES })
@Support({ FIREBIRD_3_0, POSTGRES })
public static <T> WindowIgnoreNullsStep<T> nthValue(Field<T> field, int nth) {
return nthValue(field, val(nth));
}
@ -13557,7 +13558,7 @@ public class DSL {
/**
* The <code>nth_value(field) over ([analytic clause])</code> function.
*/
@Support({ POSTGRES })
@Support({ FIREBIRD_3_0, POSTGRES })
public static <T> WindowIgnoreNullsStep<T> nthValue(Field<T> field, Field<Integer> nth) {
return new Function<T>("nth_value", nullSafeDataType(field), nullSafe(field), nullSafe(nth));
}
@ -13565,7 +13566,7 @@ public class DSL {
/**
* The <code>lead(field) over ([analytic clause])</code> function.
*/
@Support({ CUBRID, POSTGRES })
@Support({ CUBRID, FIREBIRD_3_0, POSTGRES })
public static <T> WindowIgnoreNullsStep<T> lead(Field<T> field) {
return new LeadLag<T>("lead", nullSafe(field));
}
@ -13573,7 +13574,7 @@ public class DSL {
/**
* The <code>lead(field, offset) over ([analytic clause])</code> function.
*/
@Support({ CUBRID, POSTGRES })
@Support({ CUBRID, FIREBIRD_3_0, POSTGRES })
public static <T> WindowIgnoreNullsStep<T> lead(Field<T> field, int offset) {
return new LeadLag<T>("lead", nullSafe(field), offset);
}
@ -13583,7 +13584,7 @@ public class DSL {
* <code>lead(field, offset, defaultValue) over ([analytic clause])</code>
* function.
*/
@Support({ CUBRID, POSTGRES })
@Support({ CUBRID, FIREBIRD_3_0, POSTGRES })
public static <T> WindowIgnoreNullsStep<T> lead(Field<T> field, int offset, T defaultValue) {
return lead(nullSafe(field), offset, Utils.field(defaultValue));
}
@ -13593,7 +13594,7 @@ public class DSL {
* <code>lead(field, offset, defaultValue) over ([analytic clause])</code>
* function.
*/
@Support({ CUBRID, POSTGRES })
@Support({ CUBRID, FIREBIRD_3_0, POSTGRES })
public static <T> WindowIgnoreNullsStep<T> lead(Field<T> field, int offset, Field<T> defaultValue) {
return new LeadLag<T>("lead", nullSafe(field), offset, nullSafe(defaultValue));
}
@ -13601,7 +13602,7 @@ public class DSL {
/**
* The <code>lag(field) over ([analytic clause])</code> function.
*/
@Support({ CUBRID, POSTGRES })
@Support({ CUBRID, FIREBIRD_3_0, POSTGRES })
public static <T> WindowIgnoreNullsStep<T> lag(Field<T> field) {
return new LeadLag<T>("lag", nullSafe(field));
}
@ -13609,7 +13610,7 @@ public class DSL {
/**
* The <code>lag(field, offset) over ([analytic clause])</code> function.
*/
@Support({ CUBRID, POSTGRES })
@Support({ CUBRID, FIREBIRD_3_0, POSTGRES })
public static <T> WindowIgnoreNullsStep<T> lag(Field<T> field, int offset) {
return new LeadLag<T>("lag", nullSafe(field), offset);
}
@ -13619,7 +13620,7 @@ public class DSL {
* <code>lag(field, offset, defaultValue) over ([analytic clause])</code>
* function.
*/
@Support({ CUBRID, POSTGRES })
@Support({ CUBRID, FIREBIRD_3_0, POSTGRES })
public static <T> WindowIgnoreNullsStep<T> lag(Field<T> field, int offset, T defaultValue) {
return lag(nullSafe(field), offset, Utils.field(defaultValue));
}
@ -13629,7 +13630,7 @@ public class DSL {
* <code>lag(field, offset, defaultValue) over ([analytic clause])</code>
* function.
*/
@Support({ CUBRID, POSTGRES })
@Support({ CUBRID, FIREBIRD_3_0, POSTGRES })
public static <T> WindowIgnoreNullsStep<T> lag(Field<T> field, int offset, Field<T> defaultValue) {
return new LeadLag<T>("lag", nullSafe(field), offset, nullSafe(defaultValue));
}