From e3854f0223fcc4b834e18208bd82083fd89558ba Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Thu, 4 Nov 2021 15:00:21 +0100 Subject: [PATCH] [jOOQ/jOOQ#12604] Add SQLDialect.FIREBIRD_4_0 - Added dialect and updated tests - Support LATERAL and APPLY - Support WINDOW clause - Support window frames - Support new window functions --- jOOQ/src/main/java/org/jooq/JoinType.java | 5 +- jOOQ/src/main/java/org/jooq/SQLDialect.java | 8 +++ .../main/java/org/jooq/SelectJoinStep.java | 25 +++---- jOOQ/src/main/java/org/jooq/Table.java | 27 +++---- .../main/java/org/jooq/WindowRowsStep.java | 41 +++++------ .../org/jooq/WindowSpecificationRowsStep.java | 41 +++++------ .../jooq/impl/AbstractAggregateFunction.java | 3 +- jOOQ/src/main/java/org/jooq/impl/DSL.java | 71 ++++++++++--------- .../java/org/jooq/impl/InsertQueryImpl.java | 1 + .../main/java/org/jooq/impl/JoinTable.java | 3 +- jOOQ/src/main/java/org/jooq/impl/Limit.java | 1 + jOOQ/src/main/java/org/jooq/impl/MetaSQL.java | 3 + .../java/org/jooq/impl/RatioToReport.java | 11 ++- .../java/org/jooq/impl/SelectQueryImpl.java | 11 +-- .../java/org/jooq/tools/jdbc/JDBCUtils.java | 58 +-------------- 15 files changed, 141 insertions(+), 168 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/JoinType.java b/jOOQ/src/main/java/org/jooq/JoinType.java index 3d7c73d60a..01090480e4 100644 --- a/jOOQ/src/main/java/org/jooq/JoinType.java +++ b/jOOQ/src/main/java/org/jooq/JoinType.java @@ -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.H2; // ... import static org.jooq.SQLDialect.HSQLDB; @@ -150,14 +151,14 @@ public enum JoinType { * CROSS APPLY two tables. */ @NotNull - @Support({ POSTGRES, YUGABYTE }) + @Support({ FIREBIRD, POSTGRES, YUGABYTE }) CROSS_APPLY("cross apply", false), /** * OUTER APPLY two tables. */ @NotNull - @Support({ POSTGRES, YUGABYTE }) + @Support({ FIREBIRD, POSTGRES, YUGABYTE }) OUTER_APPLY("outer apply", false), /** diff --git a/jOOQ/src/main/java/org/jooq/SQLDialect.java b/jOOQ/src/main/java/org/jooq/SQLDialect.java index 0858ca82ca..8c3c570fd5 100644 --- a/jOOQ/src/main/java/org/jooq/SQLDialect.java +++ b/jOOQ/src/main/java/org/jooq/SQLDialect.java @@ -125,6 +125,14 @@ public enum SQLDialect { + + + + + + + + diff --git a/jOOQ/src/main/java/org/jooq/SelectJoinStep.java b/jOOQ/src/main/java/org/jooq/SelectJoinStep.java index 181fefe3d7..465524246e 100644 --- a/jOOQ/src/main/java/org/jooq/SelectJoinStep.java +++ b/jOOQ/src/main/java/org/jooq/SelectJoinStep.java @@ -48,6 +48,7 @@ import static org.jooq.SQLDialect.CUBRID; import static org.jooq.SQLDialect.DERBY; // ... import static org.jooq.SQLDialect.FIREBIRD; +// ... import static org.jooq.SQLDialect.H2; // ... import static org.jooq.SQLDialect.HSQLDB; @@ -1727,7 +1728,7 @@ public interface SelectJoinStep extends SelectWhereStep { * @see Table#crossApply(TableLike) */ @NotNull @CheckReturnValue - @Support({ POSTGRES, YUGABYTE }) + @Support({ FIREBIRD, POSTGRES, YUGABYTE }) SelectJoinStep crossApply(TableLike table); /** @@ -1743,7 +1744,7 @@ public interface SelectJoinStep extends SelectWhereStep { * @see SQL */ @NotNull @CheckReturnValue - @Support({ POSTGRES, YUGABYTE }) + @Support({ FIREBIRD, POSTGRES, YUGABYTE }) @PlainSQL SelectJoinStep crossApply(SQL sql); @@ -1760,7 +1761,7 @@ public interface SelectJoinStep extends SelectWhereStep { * @see SQL */ @NotNull @CheckReturnValue - @Support({ POSTGRES, YUGABYTE }) + @Support({ FIREBIRD, POSTGRES, YUGABYTE }) @PlainSQL SelectJoinStep crossApply(String sql); @@ -1778,7 +1779,7 @@ public interface SelectJoinStep extends SelectWhereStep { * @see SQL */ @NotNull @CheckReturnValue - @Support({ POSTGRES, YUGABYTE }) + @Support({ FIREBIRD, POSTGRES, YUGABYTE }) @PlainSQL SelectJoinStep crossApply(String sql, Object... bindings); @@ -1796,7 +1797,7 @@ public interface SelectJoinStep extends SelectWhereStep { * @see SQL */ @NotNull @CheckReturnValue - @Support({ POSTGRES, YUGABYTE }) + @Support({ FIREBIRD, POSTGRES, YUGABYTE }) @PlainSQL SelectJoinStep crossApply(String sql, QueryPart... parts); @@ -1807,7 +1808,7 @@ public interface SelectJoinStep extends SelectWhereStep { * @see Table#crossApply(Name) */ @NotNull @CheckReturnValue - @Support({ POSTGRES, YUGABYTE }) + @Support({ FIREBIRD, POSTGRES, YUGABYTE }) SelectJoinStep crossApply(Name name); /** @@ -1816,7 +1817,7 @@ public interface SelectJoinStep extends SelectWhereStep { * @see Table#outerApply(TableLike) */ @NotNull @CheckReturnValue - @Support({ POSTGRES, YUGABYTE }) + @Support({ FIREBIRD, POSTGRES, YUGABYTE }) SelectJoinStep outerApply(TableLike table); /** @@ -1832,7 +1833,7 @@ public interface SelectJoinStep extends SelectWhereStep { * @see SQL */ @NotNull @CheckReturnValue - @Support({ POSTGRES, YUGABYTE }) + @Support({ FIREBIRD, POSTGRES, YUGABYTE }) @PlainSQL SelectJoinStep outerApply(SQL sql); @@ -1849,7 +1850,7 @@ public interface SelectJoinStep extends SelectWhereStep { * @see SQL */ @NotNull @CheckReturnValue - @Support({ POSTGRES, YUGABYTE }) + @Support({ FIREBIRD, POSTGRES, YUGABYTE }) @PlainSQL SelectJoinStep outerApply(String sql); @@ -1867,7 +1868,7 @@ public interface SelectJoinStep extends SelectWhereStep { * @see SQL */ @NotNull @CheckReturnValue - @Support({ POSTGRES, YUGABYTE }) + @Support({ FIREBIRD, POSTGRES, YUGABYTE }) @PlainSQL SelectJoinStep outerApply(String sql, Object... bindings); @@ -1885,7 +1886,7 @@ public interface SelectJoinStep extends SelectWhereStep { * @see SQL */ @NotNull @CheckReturnValue - @Support({ POSTGRES, YUGABYTE }) + @Support({ FIREBIRD, POSTGRES, YUGABYTE }) @PlainSQL SelectJoinStep outerApply(String sql, QueryPart... parts); @@ -1896,7 +1897,7 @@ public interface SelectJoinStep extends SelectWhereStep { * @see Table#outerApply(Name) */ @NotNull @CheckReturnValue - @Support({ POSTGRES, YUGABYTE }) + @Support({ FIREBIRD, POSTGRES, YUGABYTE }) SelectJoinStep outerApply(Name name); /** diff --git a/jOOQ/src/main/java/org/jooq/Table.java b/jOOQ/src/main/java/org/jooq/Table.java index bd11795e77..bba3354953 100644 --- a/jOOQ/src/main/java/org/jooq/Table.java +++ b/jOOQ/src/main/java/org/jooq/Table.java @@ -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.H2; // ... import static org.jooq.SQLDialect.HSQLDB; @@ -2153,7 +2154,7 @@ extends * CROSS APPLY a table to this table. */ @NotNull - @Support({ POSTGRES, YUGABYTE }) + @Support({ FIREBIRD, POSTGRES, YUGABYTE }) Table crossApply(TableLike table); /** @@ -2168,7 +2169,7 @@ extends * @see SQL */ @NotNull - @Support({ POSTGRES, YUGABYTE }) + @Support({ FIREBIRD, POSTGRES, YUGABYTE }) @PlainSQL Table crossApply(SQL sql); @@ -2184,7 +2185,7 @@ extends * @see SQL */ @NotNull - @Support({ POSTGRES, YUGABYTE }) + @Support({ FIREBIRD, POSTGRES, YUGABYTE }) @PlainSQL Table crossApply(String sql); @@ -2201,7 +2202,7 @@ extends * @see SQL */ @NotNull - @Support({ POSTGRES, YUGABYTE }) + @Support({ FIREBIRD, POSTGRES, YUGABYTE }) @PlainSQL Table crossApply(String sql, Object... bindings); @@ -2218,7 +2219,7 @@ extends * @see SQL */ @NotNull - @Support({ POSTGRES, YUGABYTE }) + @Support({ FIREBIRD, POSTGRES, YUGABYTE }) @PlainSQL Table crossApply(String sql, QueryPart... parts); @@ -2228,14 +2229,14 @@ extends * @see DSL#table(Name) */ @NotNull - @Support({ POSTGRES, YUGABYTE }) + @Support({ FIREBIRD, POSTGRES, YUGABYTE }) Table crossApply(Name name); /** * OUTER APPLY a table to this table. */ @NotNull - @Support({ POSTGRES, YUGABYTE }) + @Support({ FIREBIRD, POSTGRES, YUGABYTE }) Table outerApply(TableLike table); /** @@ -2250,7 +2251,7 @@ extends * @see SQL */ @NotNull - @Support({ POSTGRES, YUGABYTE }) + @Support({ FIREBIRD, POSTGRES, YUGABYTE }) @PlainSQL Table outerApply(SQL sql); @@ -2266,7 +2267,7 @@ extends * @see SQL */ @NotNull - @Support({ POSTGRES, YUGABYTE }) + @Support({ FIREBIRD, POSTGRES, YUGABYTE }) @PlainSQL Table outerApply(String sql); @@ -2283,7 +2284,7 @@ extends * @see SQL */ @NotNull - @Support({ POSTGRES, YUGABYTE }) + @Support({ FIREBIRD, POSTGRES, YUGABYTE }) @PlainSQL Table outerApply(String sql, Object... bindings); @@ -2300,7 +2301,7 @@ extends * @see SQL */ @NotNull - @Support({ POSTGRES, YUGABYTE }) + @Support({ FIREBIRD, POSTGRES, YUGABYTE }) @PlainSQL Table outerApply(String sql, QueryPart... parts); @@ -2310,7 +2311,7 @@ extends * @see DSL#table(Name) */ @NotNull - @Support({ POSTGRES, YUGABYTE }) + @Support({ FIREBIRD, POSTGRES, YUGABYTE }) Table outerApply(Name name); /** @@ -2446,7 +2447,7 @@ extends *
      * -- Emulating this MySQL statement...
      * DELETE FROM x ORDER BY x.y LIMIT 1
-     * 
+     *
      * -- ... in other databases
      * DELETE FROM x
      * WHERE x.rowid IN (
diff --git a/jOOQ/src/main/java/org/jooq/WindowRowsStep.java b/jOOQ/src/main/java/org/jooq/WindowRowsStep.java
index 6dd2a124b3..68b910eebc 100644
--- a/jOOQ/src/main/java/org/jooq/WindowRowsStep.java
+++ b/jOOQ/src/main/java/org/jooq/WindowRowsStep.java
@@ -42,6 +42,7 @@ package org.jooq;
 // ...
 // ...
 // ...
+import static org.jooq.SQLDialect.FIREBIRD;
 import static org.jooq.SQLDialect.H2;
 // ...
 import static org.jooq.SQLDialect.MARIADB;
@@ -87,7 +88,7 @@ public interface WindowRowsStep extends WindowFinalStep {
      * function.
      */
     @NotNull
-    @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
+    @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
     WindowExcludeStep rowsUnboundedPreceding();
 
     /**
@@ -95,14 +96,14 @@ public interface WindowRowsStep extends WindowFinalStep {
      * function.
      */
     @NotNull
-    @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
+    @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
     WindowExcludeStep rowsPreceding(int number);
 
     /**
      * Add a ROWS CURRENT ROW frame clause to the window function.
      */
     @NotNull
-    @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
+    @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
     WindowExcludeStep rowsCurrentRow();
 
     /**
@@ -110,7 +111,7 @@ public interface WindowRowsStep extends WindowFinalStep {
      * function.
      */
     @NotNull
-    @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
+    @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
     WindowExcludeStep rowsUnboundedFollowing();
 
     /**
@@ -118,7 +119,7 @@ public interface WindowRowsStep extends WindowFinalStep {
      * function.
      */
     @NotNull
-    @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
+    @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
     WindowExcludeStep rowsFollowing(int number);
 
     /**
@@ -126,7 +127,7 @@ public interface WindowRowsStep extends WindowFinalStep {
      * the window function.
      */
     @NotNull
-    @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
+    @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
     WindowRowsAndStep rowsBetweenUnboundedPreceding();
 
     /**
@@ -134,7 +135,7 @@ public interface WindowRowsStep extends WindowFinalStep {
      * the window function.
      */
     @NotNull
-    @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
+    @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
     WindowRowsAndStep rowsBetweenPreceding(int number);
 
     /**
@@ -142,7 +143,7 @@ public interface WindowRowsStep extends WindowFinalStep {
      * the window function.
      */
     @NotNull
-    @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
+    @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
     WindowRowsAndStep rowsBetweenCurrentRow();
 
     /**
@@ -150,7 +151,7 @@ public interface WindowRowsStep extends WindowFinalStep {
      * the window function.
      */
     @NotNull
-    @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
+    @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
     WindowRowsAndStep rowsBetweenUnboundedFollowing();
 
     /**
@@ -158,7 +159,7 @@ public interface WindowRowsStep extends WindowFinalStep {
      * the window function.
      */
     @NotNull
-    @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
+    @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
     WindowRowsAndStep rowsBetweenFollowing(int number);
 
     /**
@@ -166,7 +167,7 @@ public interface WindowRowsStep extends WindowFinalStep {
      * function.
      */
     @NotNull
-    @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
+    @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
     WindowExcludeStep rangeUnboundedPreceding();
 
     /**
@@ -174,14 +175,14 @@ public interface WindowRowsStep extends WindowFinalStep {
      * function.
      */
     @NotNull
-    @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
+    @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
     WindowExcludeStep rangePreceding(int number);
 
     /**
      * Add a RANGE CURRENT ROW frame clause to the window function.
      */
     @NotNull
-    @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
+    @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
     WindowExcludeStep rangeCurrentRow();
 
     /**
@@ -189,7 +190,7 @@ public interface WindowRowsStep extends WindowFinalStep {
      * function.
      */
     @NotNull
-    @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
+    @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
     WindowExcludeStep rangeUnboundedFollowing();
 
     /**
@@ -197,7 +198,7 @@ public interface WindowRowsStep extends WindowFinalStep {
      * function.
      */
     @NotNull
-    @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
+    @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
     WindowExcludeStep rangeFollowing(int number);
 
     /**
@@ -205,7 +206,7 @@ public interface WindowRowsStep extends WindowFinalStep {
      * the window function.
      */
     @NotNull
-    @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
+    @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
     WindowRowsAndStep rangeBetweenUnboundedPreceding();
 
     /**
@@ -213,7 +214,7 @@ public interface WindowRowsStep extends WindowFinalStep {
      * the window function.
      */
     @NotNull
-    @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
+    @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
     WindowRowsAndStep rangeBetweenPreceding(int number);
 
     /**
@@ -221,7 +222,7 @@ public interface WindowRowsStep extends WindowFinalStep {
      * the window function.
      */
     @NotNull
-    @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
+    @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
     WindowRowsAndStep rangeBetweenCurrentRow();
 
     /**
@@ -229,7 +230,7 @@ public interface WindowRowsStep extends WindowFinalStep {
      * the window function.
      */
     @NotNull
-    @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
+    @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
     WindowRowsAndStep rangeBetweenUnboundedFollowing();
 
     /**
@@ -237,7 +238,7 @@ public interface WindowRowsStep extends WindowFinalStep {
      * the window function.
      */
     @NotNull
-    @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
+    @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
     WindowRowsAndStep rangeBetweenFollowing(int number);
 
     /**
diff --git a/jOOQ/src/main/java/org/jooq/WindowSpecificationRowsStep.java b/jOOQ/src/main/java/org/jooq/WindowSpecificationRowsStep.java
index 2aa5eaa260..ed4ad7463a 100644
--- a/jOOQ/src/main/java/org/jooq/WindowSpecificationRowsStep.java
+++ b/jOOQ/src/main/java/org/jooq/WindowSpecificationRowsStep.java
@@ -42,6 +42,7 @@ package org.jooq;
 // ...
 // ...
 // ...
+import static org.jooq.SQLDialect.FIREBIRD;
 import static org.jooq.SQLDialect.H2;
 // ...
 import static org.jooq.SQLDialect.MARIADB;
@@ -102,7 +103,7 @@ public interface WindowSpecificationRowsStep extends WindowSpecificationFinalSte
      * specification.
      */
     @NotNull
-    @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
+    @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
     WindowSpecificationExcludeStep rowsUnboundedPreceding();
 
     /**
@@ -110,7 +111,7 @@ public interface WindowSpecificationRowsStep extends WindowSpecificationFinalSte
      * specification.
      */
     @NotNull
-    @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
+    @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
     WindowSpecificationExcludeStep rowsPreceding(int number);
 
     /**
@@ -118,7 +119,7 @@ public interface WindowSpecificationRowsStep extends WindowSpecificationFinalSte
      * specification.
      */
     @NotNull
-    @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
+    @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
     WindowSpecificationExcludeStep rowsCurrentRow();
 
     /**
@@ -126,7 +127,7 @@ public interface WindowSpecificationRowsStep extends WindowSpecificationFinalSte
      * specification.
      */
     @NotNull
-    @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
+    @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
     WindowSpecificationExcludeStep rowsUnboundedFollowing();
 
     /**
@@ -134,7 +135,7 @@ public interface WindowSpecificationRowsStep extends WindowSpecificationFinalSte
      * specification.
      */
     @NotNull
-    @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
+    @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
     WindowSpecificationExcludeStep rowsFollowing(int number);
 
     /**
@@ -142,7 +143,7 @@ public interface WindowSpecificationRowsStep extends WindowSpecificationFinalSte
      * the window specification.
      */
     @NotNull
-    @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
+    @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
     WindowSpecificationRowsAndStep rowsBetweenUnboundedPreceding();
 
     /**
@@ -150,7 +151,7 @@ public interface WindowSpecificationRowsStep extends WindowSpecificationFinalSte
      * the window specification.
      */
     @NotNull
-    @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
+    @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
     WindowSpecificationRowsAndStep rowsBetweenPreceding(int number);
 
     /**
@@ -158,7 +159,7 @@ public interface WindowSpecificationRowsStep extends WindowSpecificationFinalSte
      * window specification.
      */
     @NotNull
-    @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
+    @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
     WindowSpecificationRowsAndStep rowsBetweenCurrentRow();
 
     /**
@@ -166,7 +167,7 @@ public interface WindowSpecificationRowsStep extends WindowSpecificationFinalSte
      * the window specification.
      */
     @NotNull
-    @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
+    @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
     WindowSpecificationRowsAndStep rowsBetweenUnboundedFollowing();
 
     /**
@@ -174,7 +175,7 @@ public interface WindowSpecificationRowsStep extends WindowSpecificationFinalSte
      * the window specification.
      */
     @NotNull
-    @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
+    @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
     WindowSpecificationRowsAndStep rowsBetweenFollowing(int number);
 
     /**
@@ -182,7 +183,7 @@ public interface WindowSpecificationRowsStep extends WindowSpecificationFinalSte
      * specification.
      */
     @NotNull
-    @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
+    @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
     WindowSpecificationExcludeStep rangeUnboundedPreceding();
 
     /**
@@ -190,7 +191,7 @@ public interface WindowSpecificationRowsStep extends WindowSpecificationFinalSte
      * specification.
      */
     @NotNull
-    @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
+    @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
     WindowSpecificationExcludeStep rangePreceding(int number);
 
     /**
@@ -198,7 +199,7 @@ public interface WindowSpecificationRowsStep extends WindowSpecificationFinalSte
      * specification.
      */
     @NotNull
-    @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
+    @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
     WindowSpecificationExcludeStep rangeCurrentRow();
 
     /**
@@ -206,7 +207,7 @@ public interface WindowSpecificationRowsStep extends WindowSpecificationFinalSte
      * specification.
      */
     @NotNull
-    @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
+    @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
     WindowSpecificationExcludeStep rangeUnboundedFollowing();
 
     /**
@@ -214,7 +215,7 @@ public interface WindowSpecificationRowsStep extends WindowSpecificationFinalSte
      * specification.
      */
     @NotNull
-    @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
+    @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
     WindowSpecificationExcludeStep rangeFollowing(int number);
 
     /**
@@ -222,7 +223,7 @@ public interface WindowSpecificationRowsStep extends WindowSpecificationFinalSte
      * the window specification.
      */
     @NotNull
-    @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
+    @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
     WindowSpecificationRowsAndStep rangeBetweenUnboundedPreceding();
 
     /**
@@ -230,7 +231,7 @@ public interface WindowSpecificationRowsStep extends WindowSpecificationFinalSte
      * the window specification.
      */
     @NotNull
-    @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
+    @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
     WindowSpecificationRowsAndStep rangeBetweenPreceding(int number);
 
     /**
@@ -238,7 +239,7 @@ public interface WindowSpecificationRowsStep extends WindowSpecificationFinalSte
      * window specification.
      */
     @NotNull
-    @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
+    @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
     WindowSpecificationRowsAndStep rangeBetweenCurrentRow();
 
     /**
@@ -246,7 +247,7 @@ public interface WindowSpecificationRowsStep extends WindowSpecificationFinalSte
      * the window specification.
      */
     @NotNull
-    @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
+    @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
     WindowSpecificationRowsAndStep rangeBetweenUnboundedFollowing();
 
     /**
@@ -254,7 +255,7 @@ public interface WindowSpecificationRowsStep extends WindowSpecificationFinalSte
      * the window specification.
      */
     @NotNull
-    @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
+    @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE })
     WindowSpecificationRowsAndStep rangeBetweenFollowing(int number);
 
     /**
diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractAggregateFunction.java b/jOOQ/src/main/java/org/jooq/impl/AbstractAggregateFunction.java
index 1972155094..9b72abe223 100644
--- a/jOOQ/src/main/java/org/jooq/impl/AbstractAggregateFunction.java
+++ b/jOOQ/src/main/java/org/jooq/impl/AbstractAggregateFunction.java
@@ -42,6 +42,7 @@ import static java.util.function.Function.identity;
 // ...
 // ...
 // ...
+import static org.jooq.SQLDialect.FIREBIRD;
 import static org.jooq.SQLDialect.H2;
 import static org.jooq.SQLDialect.HSQLDB;
 // ...
@@ -109,7 +110,7 @@ implements
 
 
 
-    static final Set  SUPPORT_FILTER       = SQLDialect.supportedBy(H2, HSQLDB, POSTGRES, SQLITE, YUGABYTE);
+    static final Set  SUPPORT_FILTER       = SQLDialect.supportedBy(FIREBIRD, H2, HSQLDB, POSTGRES, SQLITE, YUGABYTE);
     static final Set  SUPPORT_DISTINCT_RVE = SQLDialect.supportedBy(H2, POSTGRES);
 
     static final Field   ASTERISK             = DSL.field("*", Integer.class);
diff --git a/jOOQ/src/main/java/org/jooq/impl/DSL.java b/jOOQ/src/main/java/org/jooq/impl/DSL.java
index 76c0d4f03f..8e3b8b8865 100644
--- a/jOOQ/src/main/java/org/jooq/impl/DSL.java
+++ b/jOOQ/src/main/java/org/jooq/impl/DSL.java
@@ -56,6 +56,7 @@ import static org.jooq.SQLDialect.DERBY;
 // ...
 import static org.jooq.SQLDialect.FIREBIRD;
 // ...
+// ...
 import static org.jooq.SQLDialect.H2;
 // ...
 import static org.jooq.SQLDialect.HSQLDB;
@@ -11487,7 +11488,7 @@ public class DSL {
      * 
*/ @NotNull - @Support({ MYSQL, POSTGRES, YUGABYTE }) + @Support({ FIREBIRD, MYSQL, POSTGRES, YUGABYTE }) public static Table lateral(TableLike table) { return new Lateral<>(table.asTable()); } @@ -11803,7 +11804,7 @@ public class DSL { * @see #default_() */ @NotNull - @Support({ CUBRID, DERBY, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) + @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) public static Field defaultValue() { return default_(); } @@ -11817,7 +11818,7 @@ public class DSL { * @see #default_(Class) */ @NotNull - @Support({ CUBRID, DERBY, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) + @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) public static Field defaultValue(Class type) { return default_(type); } @@ -11831,7 +11832,7 @@ public class DSL { * @see #default_(DataType) */ @NotNull - @Support({ CUBRID, DERBY, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) + @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) public static Field defaultValue(DataType type) { return default_(type); } @@ -11845,7 +11846,7 @@ public class DSL { * @see #default_(Field) */ @NotNull - @Support({ CUBRID, DERBY, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) + @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) public static Field defaultValue(Field field) { return default_(field); } @@ -11860,7 +11861,7 @@ public class DSL { * {@link #defaultValue(Class)} or {@link #defaultValue(DataType)} instead. */ @NotNull - @Support({ CUBRID, DERBY, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) + @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) public static Field default_() { return default_(Object.class); } @@ -11870,7 +11871,7 @@ public class DSL { * UPDATE, or MERGE statements. */ @NotNull - @Support({ CUBRID, DERBY, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) + @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) public static Field default_(Class type) { return default_(getDataType(type)); } @@ -11880,7 +11881,7 @@ public class DSL { * UPDATE, or MERGE statements. */ @NotNull - @Support({ CUBRID, DERBY, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) + @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) public static Field default_(DataType type) { return new Default(type); } @@ -11890,7 +11891,7 @@ public class DSL { * UPDATE, or MERGE statements. */ @NotNull - @Support({ CUBRID, DERBY, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) + @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) public static Field default_(Field field) { return default_(field.getDataType()); } @@ -25464,7 +25465,7 @@ public class DSL { * Create a {@link WindowSpecification} with a ROWS clause. */ @NotNull - @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) + @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) public static WindowSpecificationExcludeStep rowsUnboundedPreceding() { return new WindowSpecificationImpl().rowsUnboundedPreceding(); } @@ -25473,7 +25474,7 @@ public class DSL { * Create a {@link WindowSpecification} with a ROWS clause. */ @NotNull - @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) + @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) public static WindowSpecificationExcludeStep rowsPreceding(int number) { return new WindowSpecificationImpl().rowsPreceding(number); } @@ -25482,7 +25483,7 @@ public class DSL { * Create a {@link WindowSpecification} with a ROWS clause. */ @NotNull - @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) + @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) public static WindowSpecificationExcludeStep rowsCurrentRow() { return new WindowSpecificationImpl().rowsCurrentRow(); } @@ -25491,7 +25492,7 @@ public class DSL { * Create a {@link WindowSpecification} with a ROWS clause. */ @NotNull - @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) + @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) public static WindowSpecificationExcludeStep rowsUnboundedFollowing() { return new WindowSpecificationImpl().rowsUnboundedFollowing(); } @@ -25500,7 +25501,7 @@ public class DSL { * Create a {@link WindowSpecification} with a ROWS clause. */ @NotNull - @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) + @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) public static WindowSpecificationExcludeStep rowsFollowing(int number) { return new WindowSpecificationImpl().rowsFollowing(number); } @@ -25509,7 +25510,7 @@ public class DSL { * Create a {@link WindowSpecification} with a ROWS clause. */ @NotNull - @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) + @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) public static WindowSpecificationRowsAndStep rowsBetweenUnboundedPreceding() { return new WindowSpecificationImpl().rowsBetweenUnboundedPreceding(); } @@ -25518,7 +25519,7 @@ public class DSL { * Create a {@link WindowSpecification} with a ROWS clause. */ @NotNull - @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) + @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) public static WindowSpecificationRowsAndStep rowsBetweenPreceding(int number) { return new WindowSpecificationImpl().rowsBetweenPreceding(number); } @@ -25527,7 +25528,7 @@ public class DSL { * Create a {@link WindowSpecification} with a ROWS clause. */ @NotNull - @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) + @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) public static WindowSpecificationRowsAndStep rowsBetweenCurrentRow() { return new WindowSpecificationImpl().rowsBetweenCurrentRow(); } @@ -25536,7 +25537,7 @@ public class DSL { * Create a {@link WindowSpecification} with a ROWS clause. */ @NotNull - @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) + @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) public static WindowSpecificationRowsAndStep rowsBetweenUnboundedFollowing() { return new WindowSpecificationImpl().rowsBetweenUnboundedFollowing(); } @@ -25545,7 +25546,7 @@ public class DSL { * Create a {@link WindowSpecification} with a ROWS clause. */ @NotNull - @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) + @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) public static WindowSpecificationRowsAndStep rowsBetweenFollowing(int number) { return new WindowSpecificationImpl().rowsBetweenFollowing(number); } @@ -25554,7 +25555,7 @@ public class DSL { * Create a {@link WindowSpecification} with a RANGE clause. */ @NotNull - @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) + @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) public static WindowSpecificationExcludeStep rangeUnboundedPreceding() { return new WindowSpecificationImpl().rangeUnboundedPreceding(); } @@ -25563,7 +25564,7 @@ public class DSL { * Create a {@link WindowSpecification} with a RANGE clause. */ @NotNull - @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) + @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) public static WindowSpecificationExcludeStep rangePreceding(int number) { return new WindowSpecificationImpl().rangePreceding(number); } @@ -25572,7 +25573,7 @@ public class DSL { * Create a {@link WindowSpecification} with a RANGE clause. */ @NotNull - @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) + @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) public static WindowSpecificationExcludeStep rangeCurrentRow() { return new WindowSpecificationImpl().rangeCurrentRow(); } @@ -25581,7 +25582,7 @@ public class DSL { * Create a {@link WindowSpecification} with a RANGE clause. */ @NotNull - @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) + @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) public static WindowSpecificationExcludeStep rangeUnboundedFollowing() { return new WindowSpecificationImpl().rangeUnboundedFollowing(); } @@ -25590,7 +25591,7 @@ public class DSL { * Create a {@link WindowSpecification} with a RANGE clause. */ @NotNull - @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) + @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) public static WindowSpecificationExcludeStep rangeFollowing(int number) { return new WindowSpecificationImpl().rangeFollowing(number); } @@ -25599,7 +25600,7 @@ public class DSL { * Create a {@link WindowSpecification} with a RANGE clause. */ @NotNull - @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) + @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) public static WindowSpecificationRowsAndStep rangeBetweenUnboundedPreceding() { return new WindowSpecificationImpl().rangeBetweenUnboundedPreceding(); } @@ -25608,7 +25609,7 @@ public class DSL { * Create a {@link WindowSpecification} with a RANGE clause. */ @NotNull - @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) + @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) public static WindowSpecificationRowsAndStep rangeBetweenPreceding(int number) { return new WindowSpecificationImpl().rangeBetweenPreceding(number); } @@ -25617,7 +25618,7 @@ public class DSL { * Create a {@link WindowSpecification} with a RANGE clause. */ @NotNull - @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) + @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) public static WindowSpecificationRowsAndStep rangeBetweenCurrentRow() { return new WindowSpecificationImpl().rangeBetweenCurrentRow(); } @@ -25626,7 +25627,7 @@ public class DSL { * Create a {@link WindowSpecification} with a RANGE clause. */ @NotNull - @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) + @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) public static WindowSpecificationRowsAndStep rangeBetweenUnboundedFollowing() { return new WindowSpecificationImpl().rangeBetweenUnboundedFollowing(); } @@ -25635,7 +25636,7 @@ public class DSL { * Create a {@link WindowSpecification} with a RANGE clause. */ @NotNull - @Support({ H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) + @Support({ FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) public static WindowSpecificationRowsAndStep rangeBetweenFollowing(int number) { return new WindowSpecificationImpl().rangeBetweenFollowing(number); } @@ -25771,7 +25772,7 @@ public class DSL { * The precent_rank() over ([analytic clause]) function. */ @NotNull - @Support({ CUBRID, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) + @Support({ CUBRID, FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) public static WindowOverStep percentRank() { return new PercentRank(); } @@ -25780,7 +25781,7 @@ public class DSL { * The cume_dist() over ([analytic clause]) function. */ @NotNull - @Support({ CUBRID, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) + @Support({ CUBRID, FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) public static WindowOverStep cumeDist() { return new CumeDist(); } @@ -25789,7 +25790,7 @@ public class DSL { * The ntile([number]) over ([analytic clause]) function. */ @NotNull - @Support({ CUBRID, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) + @Support({ CUBRID, FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) public static WindowOverStep ntile(int number) { return new Ntile(inline(number)); } @@ -25798,7 +25799,7 @@ public class DSL { * The ntile([number]) over ([analytic clause]) function. */ @NotNull - @Support({ CUBRID, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) + @Support({ CUBRID, FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) public static WindowOverStep ntile(Field number) { return new Ntile(number); } @@ -25807,7 +25808,7 @@ public class DSL { * The ratio_to_report([expression]) over ([analytic clause]) function. */ @NotNull - @Support({ CUBRID, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) + @Support({ CUBRID, FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) public static WindowOverStep ratioToReport(Number number) { return ratioToReport(Tools.field(number)); } @@ -25816,7 +25817,7 @@ public class DSL { * The ratio_to_report([expression]) over ([analytic clause]) function. */ @NotNull - @Support({ CUBRID, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) + @Support({ CUBRID, FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) public static WindowOverStep ratioToReport(Field field) { return new RatioToReport(Tools.nullSafe(field)); } diff --git a/jOOQ/src/main/java/org/jooq/impl/InsertQueryImpl.java b/jOOQ/src/main/java/org/jooq/impl/InsertQueryImpl.java index fff2dd5f38..130cbb95df 100644 --- a/jOOQ/src/main/java/org/jooq/impl/InsertQueryImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/InsertQueryImpl.java @@ -465,6 +465,7 @@ final class InsertQueryImpl extends AbstractStoreQuery impl + case IGNITE: diff --git a/jOOQ/src/main/java/org/jooq/impl/JoinTable.java b/jOOQ/src/main/java/org/jooq/impl/JoinTable.java index f4180c78ea..41dbed5266 100755 --- a/jOOQ/src/main/java/org/jooq/impl/JoinTable.java +++ b/jOOQ/src/main/java/org/jooq/impl/JoinTable.java @@ -80,6 +80,7 @@ import static org.jooq.JoinType.RIGHT_OUTER_JOIN; import static org.jooq.SQLDialect.CUBRID; // ... // ... +import static org.jooq.SQLDialect.FIREBIRD; import static org.jooq.SQLDialect.H2; // ... import static org.jooq.SQLDialect.IGNITE; @@ -166,7 +167,7 @@ implements private static final Set EMULATE_NATURAL_JOIN = SQLDialect.supportedBy(CUBRID); private static final Set EMULATE_NATURAL_OUTER_JOIN = SQLDialect.supportedBy(CUBRID, H2, IGNITE); private static final Set EMULATE_JOIN_USING = SQLDialect.supportedBy(CUBRID, IGNITE); - private static final Set EMULATE_APPLY = SQLDialect.supportedBy(POSTGRES, YUGABYTE); + private static final Set EMULATE_APPLY = SQLDialect.supportedBy(FIREBIRD, POSTGRES, YUGABYTE); final Table lhs; final Table rhs; diff --git a/jOOQ/src/main/java/org/jooq/impl/Limit.java b/jOOQ/src/main/java/org/jooq/impl/Limit.java index 91b8ccc146..75744fd1d1 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Limit.java +++ b/jOOQ/src/main/java/org/jooq/impl/Limit.java @@ -165,6 +165,7 @@ final class Limit extends AbstractQueryPart implements UTransient { + case DERBY: diff --git a/jOOQ/src/main/java/org/jooq/impl/MetaSQL.java b/jOOQ/src/main/java/org/jooq/impl/MetaSQL.java index 4896efd3c4..f49a49dc6d 100644 --- a/jOOQ/src/main/java/org/jooq/impl/MetaSQL.java +++ b/jOOQ/src/main/java/org/jooq/impl/MetaSQL.java @@ -85,6 +85,7 @@ final class MetaSQL { + M_SEQUENCES.put(DERBY, "select cast(null as varchar(32672)) as catalog, alias_8805161.SCHEMANAME, SYS.SYSSEQUENCES.SEQUENCENAME, SYS.SYSSEQUENCES.SEQUENCEDATATYPE, cast(null as int) as numeric_precision, cast(null as int) as numeric_scale, nullif(SYS.SYSSEQUENCES.STARTVALUE, 1) as STARTVALUE, nullif(SYS.SYSSEQUENCES.INCREMENT, 1) as INCREMENT, nullif(SYS.SYSSEQUENCES.MINIMUMVALUE, case when cast(SYS.SYSSEQUENCES.SEQUENCEDATATYPE as varchar(32672)) = 'SMALLINT' then -32768 when cast(SYS.SYSSEQUENCES.SEQUENCEDATATYPE as varchar(32672)) = 'INTEGER' then -2147483648 when cast(SYS.SYSSEQUENCES.SEQUENCEDATATYPE as varchar(32672)) = 'BIGINT' then -9223372036854775808 end) as MINIMUMVALUE, nullif(SYS.SYSSEQUENCES.MAXIMUMVALUE, case when cast(SYS.SYSSEQUENCES.SEQUENCEDATATYPE as varchar(32672)) = 'SMALLINT' then 32767 when cast(SYS.SYSSEQUENCES.SEQUENCEDATATYPE as varchar(32672)) = 'INTEGER' then 2147483647 when cast(SYS.SYSSEQUENCES.SEQUENCEDATATYPE as varchar(32672)) = 'BIGINT' then 9223372036854775807 end) as MAXIMUMVALUE, (SYS.SYSSEQUENCES.CYCLEOPTION = 'Y') as CYCLEOPTION, cast(null as bigint) as cache from (SYS.SYSSEQUENCES join SYS.SYSSCHEMAS as alias_8805161 on SYS.SYSSEQUENCES.SCHEMAID = alias_8805161.SCHEMAID) where cast(alias_8805161.SCHEMANAME as varchar(32672)) in (cast(? as varchar(32672))) order by alias_8805161.SCHEMANAME, SYS.SYSSEQUENCES.SEQUENCENAME"); @@ -129,6 +130,7 @@ final class MetaSQL { + M_SEQUENCES_INCLUDING_SYSTEM_SEQUENCES.put(DERBY, "select cast(null as varchar(32672)) as catalog, alias_8805161.SCHEMANAME, SYS.SYSSEQUENCES.SEQUENCENAME, SYS.SYSSEQUENCES.SEQUENCEDATATYPE, cast(null as int) as numeric_precision, cast(null as int) as numeric_scale, nullif(SYS.SYSSEQUENCES.STARTVALUE, 1) as STARTVALUE, nullif(SYS.SYSSEQUENCES.INCREMENT, 1) as INCREMENT, nullif(SYS.SYSSEQUENCES.MINIMUMVALUE, case when cast(SYS.SYSSEQUENCES.SEQUENCEDATATYPE as varchar(32672)) = 'SMALLINT' then -32768 when cast(SYS.SYSSEQUENCES.SEQUENCEDATATYPE as varchar(32672)) = 'INTEGER' then -2147483648 when cast(SYS.SYSSEQUENCES.SEQUENCEDATATYPE as varchar(32672)) = 'BIGINT' then -9223372036854775808 end) as MINIMUMVALUE, nullif(SYS.SYSSEQUENCES.MAXIMUMVALUE, case when cast(SYS.SYSSEQUENCES.SEQUENCEDATATYPE as varchar(32672)) = 'SMALLINT' then 32767 when cast(SYS.SYSSEQUENCES.SEQUENCEDATATYPE as varchar(32672)) = 'INTEGER' then 2147483647 when cast(SYS.SYSSEQUENCES.SEQUENCEDATATYPE as varchar(32672)) = 'BIGINT' then 9223372036854775807 end) as MAXIMUMVALUE, (SYS.SYSSEQUENCES.CYCLEOPTION = 'Y') as CYCLEOPTION, cast(null as bigint) as cache from (SYS.SYSSEQUENCES join SYS.SYSSCHEMAS as alias_8805161 on SYS.SYSSEQUENCES.SCHEMAID = alias_8805161.SCHEMAID) where cast(alias_8805161.SCHEMANAME as varchar(32672)) in (cast(? as varchar(32672))) order by alias_8805161.SCHEMANAME, SYS.SYSSEQUENCES.SEQUENCENAME"); @@ -172,6 +174,7 @@ final class MetaSQL { + } diff --git a/jOOQ/src/main/java/org/jooq/impl/RatioToReport.java b/jOOQ/src/main/java/org/jooq/impl/RatioToReport.java index 88b245674c..e1c28ae9f3 100644 --- a/jOOQ/src/main/java/org/jooq/impl/RatioToReport.java +++ b/jOOQ/src/main/java/org/jooq/impl/RatioToReport.java @@ -95,6 +95,7 @@ implements case CUBRID: + case FIREBIRD: @@ -107,7 +108,15 @@ implements case POSTGRES: case SQLITE: case YUGABYTE: - ctx.visit(castIfNeeded(field, (DataType) (ctx.family() == SQLITE ? DOUBLE : DECIMAL))) + DataType cast; + + switch (ctx.family()) { + case SQLITE: cast = DOUBLE; break; + case FIREBIRD: cast = DECIMAL(38, 19); break; + default: cast = DECIMAL; break; + } + + ctx.visit(castIfNeeded(field, cast)) .sql(" / ") .visit(DSL.sum(field)); acceptOverClause(ctx); diff --git a/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java b/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java index df6906fd67..2d26385526 100644 --- a/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java @@ -77,6 +77,7 @@ import static org.jooq.SQLDialect.DEFAULT; import static org.jooq.SQLDialect.DERBY; // ... import static org.jooq.SQLDialect.FIREBIRD; +// ... import static org.jooq.SQLDialect.H2; // ... import static org.jooq.SQLDialect.HSQLDB; @@ -97,7 +98,6 @@ import static org.jooq.SQLDialect.POSTGRES; // ... // ... // ... -// ... import static org.jooq.SQLDialect.SQLITE; // ... // ... @@ -109,7 +109,6 @@ import static org.jooq.SQLDialect.SQLITE; import static org.jooq.SQLDialect.YUGABYTE; import static org.jooq.SortOrder.DESC; import static org.jooq.Traversers.containing; -import static org.jooq.Traversers.findingAny; import static org.jooq.conf.ParamType.INLINED; import static org.jooq.impl.AsteriskImpl.NO_SUPPORT_UNQUALIFIED_COMBINED; import static org.jooq.impl.AsteriskImpl.SUPPORT_NATIVE_EXCEPT; @@ -124,7 +123,6 @@ import static org.jooq.impl.DSL.asterisk; import static org.jooq.impl.DSL.createTable; import static org.jooq.impl.DSL.falseCondition; import static org.jooq.impl.DSL.generateSeries; -import static org.jooq.impl.DSL.groupingSets; import static org.jooq.impl.DSL.inline; import static org.jooq.impl.DSL.jsonArrayAgg; import static org.jooq.impl.DSL.jsonObject; @@ -183,7 +181,6 @@ import static org.jooq.impl.SQLDataType.JSON; import static org.jooq.impl.SQLDataType.JSONB; import static org.jooq.impl.SQLDataType.VARCHAR; import static org.jooq.impl.SQLDataType.XML; -import static org.jooq.impl.Tools.EMPTY_FIELD; import static org.jooq.impl.Tools.aliased; import static org.jooq.impl.Tools.aliasedFields; import static org.jooq.impl.Tools.anyMatch; @@ -228,7 +225,6 @@ import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.Deque; -import java.util.EnumSet; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -280,10 +276,8 @@ import org.jooq.TableOnStep; import org.jooq.TableOptionalOnStep; import org.jooq.TablePartitionByStep; import org.jooq.Traverser; -import org.jooq.Traversers; // ... import org.jooq.WindowDefinition; -import org.jooq.WindowFinalStep; import org.jooq.XML; import org.jooq.exception.DataAccessException; import org.jooq.impl.ForLock.ForLockMode; @@ -313,7 +307,7 @@ final class SelectQueryImpl extends AbstractResultQuery imp - static final Set NO_SUPPORT_WINDOW_CLAUSE = SQLDialect.supportedUntil(CUBRID, DERBY, FIREBIRD, HSQLDB, IGNITE, MARIADB); + static final Set NO_SUPPORT_WINDOW_CLAUSE = SQLDialect.supportedUntil(CUBRID, DERBY, HSQLDB, IGNITE, MARIADB); private static final Set OPTIONAL_FROM_CLAUSE = SQLDialect.supportedBy(DEFAULT, H2, IGNITE, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE); private static final Set REQUIRES_DERIVED_TABLE_DML = SQLDialect.supportedBy(MARIADB, MYSQL); @@ -1761,6 +1755,7 @@ final class SelectQueryImpl extends AbstractResultQuery imp + case CUBRID: diff --git a/jOOQ/src/main/java/org/jooq/tools/jdbc/JDBCUtils.java b/jOOQ/src/main/java/org/jooq/tools/jdbc/JDBCUtils.java index 5e1405650a..f304d03502 100644 --- a/jOOQ/src/main/java/org/jooq/tools/jdbc/JDBCUtils.java +++ b/jOOQ/src/main/java/org/jooq/tools/jdbc/JDBCUtils.java @@ -37,62 +37,7 @@ */ package org.jooq.tools.jdbc; -// ... -// ... -import static org.jooq.SQLDialect.CUBRID; -// ... -// ... -// ... -// ... -import static org.jooq.SQLDialect.DEFAULT; -import static org.jooq.SQLDialect.DERBY; -// ... -import static org.jooq.SQLDialect.FIREBIRD; -// ... -// ... -import static org.jooq.SQLDialect.H2; -// ... -import static org.jooq.SQLDialect.HSQLDB; -import static org.jooq.SQLDialect.IGNITE; -// ... -// ... -import static org.jooq.SQLDialect.MARIADB; -// ... -// ... -// ... -// ... -// ... -// ... -import static org.jooq.SQLDialect.MYSQL; -// ... -// ... -// ... -// ... -// ... -// ... -// ... -// ... import static org.jooq.SQLDialect.*; -import static org.jooq.SQLDialect.POSTGRES; -// ... -// ... -// ... -// ... -// ... -// ... -// ... -// ... -// ... -import static org.jooq.SQLDialect.SQLITE; -// ... -// ... -// ... -// ... -// ... -// ... -// ... -// ... -// ... import java.io.Closeable; import java.sql.Array; @@ -430,6 +375,9 @@ public class JDBCUtils { + + + return FIREBIRD; }