From 23df47ba4ff799da77cc69623e13fd31a3d454bb Mon Sep 17 00:00:00 2001 From: lukaseder Date: Thu, 7 Jun 2018 16:45:37 +0200 Subject: [PATCH] Release 3.11.0 --- jOOQ-checker/pom.xml | 2 +- jOOQ-codegen-maven/pom.xml | 2 +- jOOQ-codegen/pom.xml | 2 +- jOOQ-examples/jOOQ-academy/pom.xml | 2 +- .../jOOQ-checker-framework-example/pom.xml | 4 +- jOOQ-examples/jOOQ-flyway-example/pom.xml | 2 +- jOOQ-examples/jOOQ-javaee-example/pom.xml | 2 +- jOOQ-examples/jOOQ-javafx-example/pom.xml | 2 +- .../jOOQ-jpa-example-entities/pom.xml | 2 +- jOOQ-examples/jOOQ-jpa-example/pom.xml | 4 +- .../jooq/example/jpa/jooq/tables/Actor.java | 4 +- .../jooq/example/jpa/jooq/tables/Film.java | 4 +- .../example/jpa/jooq/tables/Language.java | 4 +- jOOQ-examples/jOOQ-kotlin-example/pom.xml | 2 +- .../org/jooq/example/db/h2/tables/Author.java | 4 +- .../org/jooq/example/db/h2/tables/Book.java | 4 +- .../jooq/example/db/h2/tables/BookStore.java | 4 +- jOOQ-examples/jOOQ-nashorn-example/pom.xml | 2 +- jOOQ-examples/jOOQ-oracle-example/pom.xml | 2 +- .../jOOQ-spark-chart-example/pom.xml | 2 +- .../chart/db/routines/LastUpdated.java | 44 - jOOQ-examples/jOOQ-spark-example/pom.xml | 2 +- .../jOOQ-spring-boot-example/pom.xml | 2 +- jOOQ-examples/jOOQ-spring-example/pom.xml | 2 +- .../jOOQ-spring-guice-example/pom.xml | 2 +- jOOQ-meta-extensions/pom.xml | 2 +- jOOQ-meta/pom.xml | 2 +- jOOQ-release/build.xml | 12 +- .../release/template/RELEASENOTES.txt | 844 ++++++++++++++---- .../release/template/maven-deploy.bat | 2 +- jOOQ-release/release/template/maven-deploy.sh | 2 +- .../release/template/maven-install.bat | 2 +- .../release/template/maven-install.sh | 2 +- jOOQ-scala_2.12/pom.xml | 2 +- jOOQ/pom.xml | 2 +- jOOQ/src/main/java/org/jooq/ParserCLI.java | 2 +- .../java/org/jooq/impl/AbstractQuery.java | 5 - pom.xml | 2 +- 38 files changed, 706 insertions(+), 283 deletions(-) delete mode 100644 jOOQ-examples/jOOQ-spark-chart-example/src/main/java/org/jooq/example/chart/db/routines/LastUpdated.java diff --git a/jOOQ-checker/pom.xml b/jOOQ-checker/pom.xml index 4b8c332419..becf4543de 100644 --- a/jOOQ-checker/pom.xml +++ b/jOOQ-checker/pom.xml @@ -7,7 +7,7 @@ org.jooq jooq-parent - 3.11.0-SNAPSHOT + 3.11.0 org.jooq diff --git a/jOOQ-codegen-maven/pom.xml b/jOOQ-codegen-maven/pom.xml index 73edfff10d..cf35e67c46 100644 --- a/jOOQ-codegen-maven/pom.xml +++ b/jOOQ-codegen-maven/pom.xml @@ -6,7 +6,7 @@ org.jooq jooq-parent - 3.11.0-SNAPSHOT + 3.11.0 org.jooq diff --git a/jOOQ-codegen/pom.xml b/jOOQ-codegen/pom.xml index 31b71b44b3..fe9e397a58 100644 --- a/jOOQ-codegen/pom.xml +++ b/jOOQ-codegen/pom.xml @@ -7,7 +7,7 @@ org.jooq jooq-parent - 3.11.0-SNAPSHOT + 3.11.0 org.jooq diff --git a/jOOQ-examples/jOOQ-academy/pom.xml b/jOOQ-examples/jOOQ-academy/pom.xml index 984915b8ad..16797590f2 100644 --- a/jOOQ-examples/jOOQ-academy/pom.xml +++ b/jOOQ-examples/jOOQ-academy/pom.xml @@ -18,7 +18,7 @@ UTF-8 - 3.11.0-SNAPSHOT + 3.11.0 1.4.195 diff --git a/jOOQ-examples/jOOQ-checker-framework-example/pom.xml b/jOOQ-examples/jOOQ-checker-framework-example/pom.xml index 83ff71b76d..eacda0a7fc 100644 --- a/jOOQ-examples/jOOQ-checker-framework-example/pom.xml +++ b/jOOQ-examples/jOOQ-checker-framework-example/pom.xml @@ -5,7 +5,7 @@ org.jooq jooq-checker-framework-example - 3.11.0-SNAPSHOT + 3.11.0 jOOQ Checker Framework Example @@ -18,7 +18,7 @@ UTF-8 - 3.11.0-SNAPSHOT + 3.11.0 diff --git a/jOOQ-examples/jOOQ-flyway-example/pom.xml b/jOOQ-examples/jOOQ-flyway-example/pom.xml index f657b07186..a56e0b2028 100644 --- a/jOOQ-examples/jOOQ-flyway-example/pom.xml +++ b/jOOQ-examples/jOOQ-flyway-example/pom.xml @@ -19,7 +19,7 @@ UTF-8 3.2.6.RELEASE - 3.11.0-SNAPSHOT + 3.11.0 1.4.195 2.12.3 diff --git a/jOOQ-examples/jOOQ-javaee-example/pom.xml b/jOOQ-examples/jOOQ-javaee-example/pom.xml index 0ef3a46412..abe8dfca7a 100644 --- a/jOOQ-examples/jOOQ-javaee-example/pom.xml +++ b/jOOQ-examples/jOOQ-javaee-example/pom.xml @@ -19,7 +19,7 @@ UTF-8 - 3.11.0-SNAPSHOT + 3.11.0 1.4.195 1.8 diff --git a/jOOQ-examples/jOOQ-javafx-example/pom.xml b/jOOQ-examples/jOOQ-javafx-example/pom.xml index 3441b99a33..21f5b503cb 100644 --- a/jOOQ-examples/jOOQ-javafx-example/pom.xml +++ b/jOOQ-examples/jOOQ-javafx-example/pom.xml @@ -19,7 +19,7 @@ UTF-8 3.2.6.RELEASE - 3.11.0-SNAPSHOT + 3.11.0 1.4.195 diff --git a/jOOQ-examples/jOOQ-jpa-example-entities/pom.xml b/jOOQ-examples/jOOQ-jpa-example-entities/pom.xml index 21e5357116..bd0836064f 100644 --- a/jOOQ-examples/jOOQ-jpa-example-entities/pom.xml +++ b/jOOQ-examples/jOOQ-jpa-example-entities/pom.xml @@ -5,7 +5,7 @@ org.jooq jooq-jpa-example-entities - 3.11.0-SNAPSHOT + 3.11.0 jOOQ JPA Example (Entities) diff --git a/jOOQ-examples/jOOQ-jpa-example/pom.xml b/jOOQ-examples/jOOQ-jpa-example/pom.xml index 7721c13b38..a218082f62 100644 --- a/jOOQ-examples/jOOQ-jpa-example/pom.xml +++ b/jOOQ-examples/jOOQ-jpa-example/pom.xml @@ -5,7 +5,7 @@ org.jooq jooq-jpa-example - 3.11.0-SNAPSHOT + 3.11.0 jOOQ JPA Example @@ -18,7 +18,7 @@ UTF-8 - 3.11.0-SNAPSHOT + 3.11.0 1.4.195 5.2.13.Final 4.3.8.RELEASE diff --git a/jOOQ-examples/jOOQ-jpa-example/src/main/java/org/jooq/example/jpa/jooq/tables/Actor.java b/jOOQ-examples/jOOQ-jpa-example/src/main/java/org/jooq/example/jpa/jooq/tables/Actor.java index 6df9e535bf..39de50281f 100644 --- a/jOOQ-examples/jOOQ-jpa-example/src/main/java/org/jooq/example/jpa/jooq/tables/Actor.java +++ b/jOOQ-examples/jOOQ-jpa-example/src/main/java/org/jooq/example/jpa/jooq/tables/Actor.java @@ -40,7 +40,7 @@ import org.jooq.impl.TableImpl; @SuppressWarnings({ "all", "unchecked", "rawtypes" }) public class Actor extends TableImpl { - private static final long serialVersionUID = -1063584915; + private static final long serialVersionUID = 1651750394; /** * The reference instance of PUBLIC.ACTOR @@ -99,7 +99,7 @@ public class Actor extends TableImpl { super(alias, null, aliased, parameters, DSL.comment("")); } - Actor(Table child, ForeignKey key) { + public Actor(Table child, ForeignKey key) { super(child, key, ACTOR); } diff --git a/jOOQ-examples/jOOQ-jpa-example/src/main/java/org/jooq/example/jpa/jooq/tables/Film.java b/jOOQ-examples/jOOQ-jpa-example/src/main/java/org/jooq/example/jpa/jooq/tables/Film.java index b2eacc5793..b1c048f026 100644 --- a/jOOQ-examples/jOOQ-jpa-example/src/main/java/org/jooq/example/jpa/jooq/tables/Film.java +++ b/jOOQ-examples/jOOQ-jpa-example/src/main/java/org/jooq/example/jpa/jooq/tables/Film.java @@ -41,7 +41,7 @@ import org.jooq.impl.TableImpl; @SuppressWarnings({ "all", "unchecked", "rawtypes" }) public class Film extends TableImpl { - private static final long serialVersionUID = 1814763098; + private static final long serialVersionUID = 1521142277; /** * The reference instance of PUBLIC.FILM @@ -115,7 +115,7 @@ public class Film extends TableImpl { super(alias, null, aliased, parameters, DSL.comment("")); } - Film(Table child, ForeignKey key) { + public Film(Table child, ForeignKey key) { super(child, key, FILM); } diff --git a/jOOQ-examples/jOOQ-jpa-example/src/main/java/org/jooq/example/jpa/jooq/tables/Language.java b/jOOQ-examples/jOOQ-jpa-example/src/main/java/org/jooq/example/jpa/jooq/tables/Language.java index 3d912a947b..1e2198666d 100644 --- a/jOOQ-examples/jOOQ-jpa-example/src/main/java/org/jooq/example/jpa/jooq/tables/Language.java +++ b/jOOQ-examples/jOOQ-jpa-example/src/main/java/org/jooq/example/jpa/jooq/tables/Language.java @@ -40,7 +40,7 @@ import org.jooq.impl.TableImpl; @SuppressWarnings({ "all", "unchecked", "rawtypes" }) public class Language extends TableImpl { - private static final long serialVersionUID = -1003312401; + private static final long serialVersionUID = -730364796; /** * The reference instance of PUBLIC.LANGUAGE @@ -94,7 +94,7 @@ public class Language extends TableImpl { super(alias, null, aliased, parameters, DSL.comment("")); } - Language(Table child, ForeignKey key) { + public Language(Table child, ForeignKey key) { super(child, key, LANGUAGE); } diff --git a/jOOQ-examples/jOOQ-kotlin-example/pom.xml b/jOOQ-examples/jOOQ-kotlin-example/pom.xml index 178ba4f9b9..f0dd394653 100644 --- a/jOOQ-examples/jOOQ-kotlin-example/pom.xml +++ b/jOOQ-examples/jOOQ-kotlin-example/pom.xml @@ -20,7 +20,7 @@ UTF-8 1.2.30 - 3.11.0-SNAPSHOT + 3.11.0 1.4.195 1.8 diff --git a/jOOQ-examples/jOOQ-kotlin-example/src/main/java/org/jooq/example/db/h2/tables/Author.java b/jOOQ-examples/jOOQ-kotlin-example/src/main/java/org/jooq/example/db/h2/tables/Author.java index b5760e33b6..e5a6d07bdf 100644 --- a/jOOQ-examples/jOOQ-kotlin-example/src/main/java/org/jooq/example/db/h2/tables/Author.java +++ b/jOOQ-examples/jOOQ-kotlin-example/src/main/java/org/jooq/example/db/h2/tables/Author.java @@ -41,7 +41,7 @@ import org.jooq.impl.TableImpl; @SuppressWarnings({ "all", "unchecked", "rawtypes" }) public class Author extends TableImpl { - private static final long serialVersionUID = -33303089; + private static final long serialVersionUID = -2120467788; /** * The reference instance of PUBLIC.AUTHOR @@ -115,7 +115,7 @@ public class Author extends TableImpl { super(alias, null, aliased, parameters, DSL.comment("")); } - Author(Table child, ForeignKey key) { + public Author(Table child, ForeignKey key) { super(child, key, AUTHOR); } diff --git a/jOOQ-examples/jOOQ-kotlin-example/src/main/java/org/jooq/example/db/h2/tables/Book.java b/jOOQ-examples/jOOQ-kotlin-example/src/main/java/org/jooq/example/db/h2/tables/Book.java index 442fa270d7..ef1125cea2 100644 --- a/jOOQ-examples/jOOQ-kotlin-example/src/main/java/org/jooq/example/db/h2/tables/Book.java +++ b/jOOQ-examples/jOOQ-kotlin-example/src/main/java/org/jooq/example/db/h2/tables/Book.java @@ -41,7 +41,7 @@ import org.jooq.impl.TableImpl; @SuppressWarnings({ "all", "unchecked", "rawtypes" }) public class Book extends TableImpl { - private static final long serialVersionUID = 412161267; + private static final long serialVersionUID = 294553526; /** * The reference instance of PUBLIC.BOOK @@ -140,7 +140,7 @@ public class Book extends TableImpl { super(alias, null, aliased, parameters, DSL.comment("")); } - Book(Table child, ForeignKey key) { + public Book(Table child, ForeignKey key) { super(child, key, BOOK); } diff --git a/jOOQ-examples/jOOQ-kotlin-example/src/main/java/org/jooq/example/db/h2/tables/BookStore.java b/jOOQ-examples/jOOQ-kotlin-example/src/main/java/org/jooq/example/db/h2/tables/BookStore.java index 168f2aa2a3..21a5afda9a 100644 --- a/jOOQ-examples/jOOQ-kotlin-example/src/main/java/org/jooq/example/db/h2/tables/BookStore.java +++ b/jOOQ-examples/jOOQ-kotlin-example/src/main/java/org/jooq/example/db/h2/tables/BookStore.java @@ -39,7 +39,7 @@ import org.jooq.impl.TableImpl; @SuppressWarnings({ "all", "unchecked", "rawtypes" }) public class BookStore extends TableImpl { - private static final long serialVersionUID = -15217694; + private static final long serialVersionUID = -153566641; /** * The reference instance of PUBLIC.BOOK_STORE @@ -88,7 +88,7 @@ public class BookStore extends TableImpl { super(alias, null, aliased, parameters, DSL.comment("")); } - BookStore(Table child, ForeignKey key) { + public BookStore(Table child, ForeignKey key) { super(child, key, BOOK_STORE); } diff --git a/jOOQ-examples/jOOQ-nashorn-example/pom.xml b/jOOQ-examples/jOOQ-nashorn-example/pom.xml index 989b35cda6..f11f5f1870 100644 --- a/jOOQ-examples/jOOQ-nashorn-example/pom.xml +++ b/jOOQ-examples/jOOQ-nashorn-example/pom.xml @@ -19,7 +19,7 @@ UTF-8 3.2.6.RELEASE - 3.11.0-SNAPSHOT + 3.11.0 1.4.195 diff --git a/jOOQ-examples/jOOQ-oracle-example/pom.xml b/jOOQ-examples/jOOQ-oracle-example/pom.xml index cc87aaafa7..e0e01d618b 100644 --- a/jOOQ-examples/jOOQ-oracle-example/pom.xml +++ b/jOOQ-examples/jOOQ-oracle-example/pom.xml @@ -18,7 +18,7 @@ UTF-8 - 3.11.0-SNAPSHOT + 3.11.0 11 diff --git a/jOOQ-examples/jOOQ-spark-chart-example/pom.xml b/jOOQ-examples/jOOQ-spark-chart-example/pom.xml index 22d77a3bbf..d4b2543f0f 100644 --- a/jOOQ-examples/jOOQ-spark-chart-example/pom.xml +++ b/jOOQ-examples/jOOQ-spark-chart-example/pom.xml @@ -9,7 +9,7 @@ 1.0 - 3.11.0-SNAPSHOT + 3.11.0 diff --git a/jOOQ-examples/jOOQ-spark-chart-example/src/main/java/org/jooq/example/chart/db/routines/LastUpdated.java b/jOOQ-examples/jOOQ-spark-chart-example/src/main/java/org/jooq/example/chart/db/routines/LastUpdated.java deleted file mode 100644 index 04081724df..0000000000 --- a/jOOQ-examples/jOOQ-spark-chart-example/src/main/java/org/jooq/example/chart/db/routines/LastUpdated.java +++ /dev/null @@ -1,44 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package org.jooq.example.chart.db.routines; - - -import javax.annotation.Generated; - -import org.jooq.Parameter; -import org.jooq.example.chart.db.Public; -import org.jooq.impl.AbstractRoutine; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.8.0", - "schema version:public_2", - }, - date = "2016-06-30T15:44:15.143Z", - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class LastUpdated extends AbstractRoutine { - - private static final long serialVersionUID = 980601066; - - /** - * The parameter public.last_updated.RETURN_VALUE. - */ - public static final Parameter RETURN_VALUE = createParameter("RETURN_VALUE", org.jooq.impl.DefaultDataType.getDefaultDataType("trigger"), false, false); - - /** - * Create a new routine call instance - */ - public LastUpdated() { - super("last_updated", Public.PUBLIC, org.jooq.impl.DefaultDataType.getDefaultDataType("trigger")); - - setReturnParameter(RETURN_VALUE); - } -} diff --git a/jOOQ-examples/jOOQ-spark-example/pom.xml b/jOOQ-examples/jOOQ-spark-example/pom.xml index 5b57ee1438..4a09f2e4e3 100644 --- a/jOOQ-examples/jOOQ-spark-example/pom.xml +++ b/jOOQ-examples/jOOQ-spark-example/pom.xml @@ -19,7 +19,7 @@ UTF-8 3.2.6.RELEASE - 3.11.0-SNAPSHOT + 3.11.0 1.4.195 diff --git a/jOOQ-examples/jOOQ-spring-boot-example/pom.xml b/jOOQ-examples/jOOQ-spring-boot-example/pom.xml index 1835d9846a..5bd42ef722 100644 --- a/jOOQ-examples/jOOQ-spring-boot-example/pom.xml +++ b/jOOQ-examples/jOOQ-spring-boot-example/pom.xml @@ -26,7 +26,7 @@ UTF-8 org.jooq.example.spring.Application - 3.11.0-SNAPSHOT + 3.11.0 1.8 diff --git a/jOOQ-examples/jOOQ-spring-example/pom.xml b/jOOQ-examples/jOOQ-spring-example/pom.xml index b7b0634307..7d89d1118d 100644 --- a/jOOQ-examples/jOOQ-spring-example/pom.xml +++ b/jOOQ-examples/jOOQ-spring-example/pom.xml @@ -19,7 +19,7 @@ UTF-8 4.3.10.RELEASE - 3.11.0-SNAPSHOT + 3.11.0 1.4.195 1.8 diff --git a/jOOQ-examples/jOOQ-spring-guice-example/pom.xml b/jOOQ-examples/jOOQ-spring-guice-example/pom.xml index f498f2a468..ba510fdcfb 100644 --- a/jOOQ-examples/jOOQ-spring-guice-example/pom.xml +++ b/jOOQ-examples/jOOQ-spring-guice-example/pom.xml @@ -19,7 +19,7 @@ UTF-8 4.2.4.RELEASE - 3.11.0-SNAPSHOT + 3.11.0 1.4.195 diff --git a/jOOQ-meta-extensions/pom.xml b/jOOQ-meta-extensions/pom.xml index 9d4b8c4685..ada5ebf550 100644 --- a/jOOQ-meta-extensions/pom.xml +++ b/jOOQ-meta-extensions/pom.xml @@ -6,7 +6,7 @@ org.jooq jooq-parent - 3.11.0-SNAPSHOT + 3.11.0 org.jooq diff --git a/jOOQ-meta/pom.xml b/jOOQ-meta/pom.xml index 424b17c265..3f3c09bdec 100644 --- a/jOOQ-meta/pom.xml +++ b/jOOQ-meta/pom.xml @@ -6,7 +6,7 @@ org.jooq jooq-parent - 3.11.0-SNAPSHOT + 3.11.0 org.jooq diff --git a/jOOQ-release/build.xml b/jOOQ-release/build.xml index be5542bf7f..b0c3bc687c 100644 --- a/jOOQ-release/build.xml +++ b/jOOQ-release/build.xml @@ -3,7 +3,7 @@ - + @@ -21,7 +21,7 @@ - + @@ -35,7 +35,7 @@ - + @@ -49,7 +49,7 @@ - + @@ -64,7 +64,7 @@ - + @@ -83,7 +83,7 @@ - + diff --git a/jOOQ-release/release/template/RELEASENOTES.txt b/jOOQ-release/release/template/RELEASENOTES.txt index 76096a84b5..e073b3bb92 100644 --- a/jOOQ-release/release/template/RELEASENOTES.txt +++ b/jOOQ-release/release/template/RELEASENOTES.txt @@ -11,201 +11,673 @@ For a text version, see http://www.jooq.org/inc/RELEASENOTES.txt -Version 3.10.7 - May the 4th be with you, 2018 +Version 3.11.0 - June 7, 2018 ================================================================================ -This is a 3.10 patch release with bug fixes +New Databases Supported +----------------------- + +At last, 4 new SQL dialects have been added to jOOQ! These are: + +jOOQ Professional Edition + +- Aurora MySQL Edition +- Aurora PostgreSQL Edition +- Azure SQL Data Warehouse + +jOOQ Enterprise Edition + +- Teradata + + +Implicit Joins +-------------- + +One of the really cool features in ORMs like Hibernate, Doctrine, and others, is +the capability of using a relationship graph notation to access another entity's +columns through what is often called "implicit joins". + +Instead of explicitly joining a to-one relationship to access its columns: + +
+SELECT author.first_name, author.last_name, book.title
+FROM book
+JOIN author ON book.author_id = author.id
+
+ +We would like to be able to access those columns directly, using this notation: + +
+SELECT book.author.first_name, book.author.last_name, book.title
+FROM book
+
+ +The join is implied and should be added implicitly. jOOQ now allows for this to +happen when you use the code generator: + +
+ctx.select(BOOK.author().FIRST_NAME, BOOK.author().LAST_NAME, BOOK.TITLE)
+   .from(BOOK)
+   .fetch();
+
+ +When rendering this query, the implicit join graph will be calculated on the fly +and added behind the scenes to the BOOK table. This works for queries of +arbitrary complexity and on any level of nested SELECT. + +More details in this blog post: +https://blog.jooq.org/2018/02/20/type-safe-implicit-join-through-path-navigation-in-jooq-3-11/ + + +DiagnosticsListener SPI +----------------------- + +A new DiagnosticsListener SPI has been added to jOOQ: +https://github.com/jOOQ/jOOQ/issues/5960 + +The purpose of this SPI is to sanitise your SQL language, JDBC and jOOQ API +usage. Listeners can listen to events such as: + +- duplicateStatements (similar SQL is executed, bind variables should be used) +- repeatedStatements (identical SQL is executed, should be batched or rewritten) +- tooManyColumnsFetched (not all projected columns were needed) +- tooManyRowsFetched (not all fetched rows were needed) + +The great thing about this SPI is that it can be exposed to clients through the +JDBC API, in case of which the diagnostics feature can reverse engineer your +JDBC or even JPA generated SQL. Ever wanted to detect N+1 queries from +Hibernate? Pass those Hibernate-generated queries through this SPI. + +Want to find missing bind variables leading to cursor cache contention or SQLi? +Let jOOQ find similar SQL statements and report them. E.g. + +- SELECT name FROM person WHERE id = 1 +- SELECT name FROM person WHERE id = 2 + +Or also: + +- SELECT name FROM person WHERE id IN (?, ?) +- SELECT name FROM person WHERE id IN (?, ?, ?) + + +Anonymous blocks +---------------- + +Many databases support anonymous blocks to run several statements in a single +block scope. For example, Oracle: + +
+DECLARE
+  l_var NUMBER(10);
+BEGIN
+  l_var := 10;
+  dbms_output.put_line(l_var);
+END;
+
+ +jOOQ now supports the new org.jooq.Block API to allow for wrapping DDL and DML +statements in such a block. This is a first step towards a future jOOQ providing +support for: + +- Abstractions over procedural languages +- CREATE PROCEDURE and CREATE FUNCTION statements +- Trigger support +- And much more + + +Parser +------ + +jOOQ's parser support is an ongoing effort. This release has added support for +a lot of new SQL clauses and functions from various vendors and in various DDL +and DML statements. + +The parser is now also exposed through a public website and API, where SQL can +be translated from one dialect to another: +https://www.jooq.org/translate + +This website will help further drive jOOQ API development by helping to find +missing functionality that is used in real-world SQL. + +Another way to access this API is through the new org.jooq.ParserCLI command +line tool. For example, run: + +
+$ java -jar jooq-3.10.0.jar -f -t ORACLE -s "SELECT * FROM (VALUES(1),(2)) AS t(a)"
+
+ +To get: + +
+select *
+from (
+  (
+    select null a
+    from dual
+    where 1 = 0
+  )
+  union all (
+    select *
+    from (
+      (
+        select 1
+        from dual
+      )
+      union all (
+        select 2
+        from dual
+      )
+    ) t
+  )
+) t;
+
+ +Formal Java 10 Support +---------------------- + +jOOQ 3.11 is the first release that is formally integration tested with Java 10. +To use jOOQ with Java 10, use the Java 8 distribution which has not yet been +modularised, but contains Automatic-Module-Name specification to be forward +compatible with future, modularised jOOQ distributions. + +Additionally, package names between jOOQ, jOOQ-meta, and jOOQ-codegen have been +cleaned up to prevent duplicate package names, and the JAXB dependency has been +added explicitly to the various artefacts. + + +End of Scala 2.11 support in the jOOQ Open Source Edition +--------------------------------------------------------- + +Scala 2.10 and 2.11 are now only supported in the commercial distributions + + + +Other great improvements +------------------------ + +- Finally, asterisks (SELECT * or SELECT t.*) are formally supported in the API. +- Collations can now be specified on a variety of syntax elements +- The org.jooq.Comment type has been added, and DDL statements for it +- The DefaultBinding implementation has been rewritten for better peformance +- Several performance improvements in jOOQ's internals +- Many more DDL statements are supported including GRANT and REVOKE +- Support for the EXPLAIN statement +- FETCH n PERCENT ROWS and TOP n PERCENT clauses are supported +- Better org.jooq.Name and org.jooq.Named API for identifier handling +- Support for PostgreSQL 10 +- Support for SQL Server 2017 +- Support for DB2 11 +- Upgraded MariaDB support for window functions, inv dist functions, WITH +- jOOU dependency updated to 0.9.3 +- jOOR dependency updated to 0.9.8 +- Server output (e.g. DBMS_OUTPUT) can now be fetched automatically, by jOOQ +- Code generation support for PL/SQL TABLE types +- SQL Keywords Can Now Be Rendered In Pascal Style If You Must +- Emulate PostgreSQL's ON CONFLICT clause using MERGE + Features and Improvements ------------------------- -#7432 - Document the fact that fetchOne() needs to fetch the second record + +#629 - Add support for the Teradata database +#717 - Add support for SQLite unique columns +#1053 - Add syntax railroad diagram to the manual +#1502 - Add support for implicit join over to-one relationships +#1677 - Add SelectFieldOrAsterisk type to support Table.asterisk() (t.*) and DSL.asterisk() +#2051 - Add is[Not]DistinctFrom() to Row[N] types +#2508 - Support ON DUPLICATE KEY UPDATE in H2 +#2637 - Add a section to the manual about the MockFileDatabase, change its experimental status +#2769 - Add DSL.asterisk() to allow for explicitly issuing SELECT * statements +#2791 - Add a Context data map scoped to the outer scope of a subquery +#2908 - Add support for COLLATIONS +#3686 - Add support for default parameter values in SQL Server +#3930 - Improve code generation manual sections explaining each flag individually with XML / programmatic examples +#4015 - Add support for LATERAL to DB2 +#4059 - Add references from older Javadocs/manuals to the latest versions +#4627 - Support Java 8 constructor parameter reflection in DefaultRecordMapper +#4888 - Add to allow for POJOs not to be Serializable +#4930 - Create one DefaultXYZBinding type per DataType, internally +#5196 - Add support for Amazon Aurora MySQL Edition +#5296 - Add a MetaProvider Configuration.metaProvider() SPI +#5314 - Add support for ALTER TABLE .. ADD IF NOT EXISTS +#5315 - Add support for ALTER TABLE .. DROP IF EXISTS +#5318 - Add support for ALTER TABLE .. ADD (...) to add multiple objects to a table at once +#5319 - Add support for ALTER TABLE .. DROP (...) to allow for dropping multiple objects at once +#5491 - Provide maven-deploy script to install artifacts on remote repository +#5594 - Add support for Oracle 12c FETCH N PERCENT ROWS and SQL Server TOP n PERCENT clauses +#5703 - Add option to disable code generation of comments +#5863 - Support multi-row INSERT .. RETURNING for Oracle using PL/SQL FORALL .. INSERT .. RETURNING .. BULK COLLECT INTO +#5874 - Add support for H2's new enum types +#5917 - Add Settings.parseUnsupportedSyntax to define behaviour when a parser error occurs +#5925 - Replace asList(SQLDialect ...).contains() by EnumSet.of(SQLDialect ...).contains() in internals +#5960 - Add a DiagnosticsListener SPI +#5988 - Add Javadoc to DSL.table(String) and Table.field(String) explaining the lack of field references in plain SQL tables +#6071 - Add Name Sequence.getQualifiedName() and getUnqualifiedName() +#6131 - Add plain SQL storage() clause to CREATE TABLE statements +#6140 - Add to in code generator configuration +#6145 - Add Queries.block() +#6220 - Add DSL.localDateTimeAdd() localDateTimeSub(), localDateTimeDiff() +#6240 - Add support for SQL Server's ALTER TABLE .. RENAME INDEX emulation +#6261 - Support loading multiple files in DDLDatabase +#6265 - Add org.jooq.Named API for all types containing a getName() method +#6324 - Add support for COMMENT ON statements +#6328 - Add SQLDialect.SQLSERVER2017 +#6358 - Add ResultQuery.fetchSet(RecordMapper) +#6371 - Add support for DROP TEMPORARY TABLE +#6474 - Add org.jooq.Block to wrap several statements in an anonymous block +#6482 - Document in the manual: SQL and JDBC are one-based, jOOQ is zero-based +#6554 - Mark Maven plugin as @ThreadSafe +#6577 - Add documentation about the flag +#6580 - Add Settings.fetchServerOutputSize to fetch server output +#6606 - End of Scala 2.11 support for jOOQ Open Source Edition +#6627 - Add DateToLocalDateConverter, TimeToLocalTimeConverter, TimestampToLocalDateTimeConverter +#6630 - Support Oracle TIMESTAMP WITH TIME ZONE data type in UDT +#6631 - Deprecate public DefaultBinding constructor +#6632 - Generate DAO.fetchOneByXYZ(T value) for unique columns on SQLite +#6642 - DefaultBinding should check Settings.executeLogging to decide whether to log +#6644 - Improve "no catalogs were loaded" error message +#6654 - Improve code generator's INFO message when objects have no name +#6660 - Add to +#6661 - Add support for catalogs in the XMLGenerator +#6662 - Support new element in DSLContext.meta() +#6663 - Support new element in DSLContext.informationSchema() +#6676 - Add markdown to error message about slow SQL +#6694 - Overload SelectWhereStep.where(Condition...) and similar methods to avoid Condition[] allocation +#6704 - Support PostgreSQL's escape string constants +#6715 - Add { Insert | Update | Delete }ReturningStep.returningResult(Field, ..., Field) +#6718 - Add missing overload DSLContext.newResult(Collection>) +#6720 - Refactor some internals to use Scope.dsl() or Configuration.dsl() +#6721 - Deprecate AbstractStore.create() +#6722 - Deprecate AbstractQueryPart.create() methods +#6765 - Add SQLDialect.POSTGRES_10 +#6771 - Add a Setting to prevent UPDATE and DELETE statements that lack a WHERE clause +#6772 - Add a code generator configuration +#6776 - Add MockResult() and MockResult(int) convenience constructors +#6781 - Clarify DSL.currentDate() Javadoc: It creates ANSI SQL DATE values, not Oracle DATE +#6783 - Add explicit unit of time specification to Query.queryTimeout() +#6796 - [#4627] Support parameter info compiled into bytecode +#6798 - Add Settings.mapConstructorParameterNames +#6812 - Add support for GRANT and REVOKE statements +#6817 - Add DSL.noCondition() +#6823 - Add DSLContext.explain(Query) +#6832 - Enhance DSLContext.fetchFromTXT() to support Oracle DBMS_XPLAN format +#6833 - Add TXTFormat to allow for additional text formatting options +#6835 - Add new TXTFormat options to generate different table styles +#6836 - Add Record.format() +#6838 - Add org.jooq.User +#6839 - Add org.jooq.Role +#6853 - [#6838] The User type for GRANT statement +#6862 - [#6839] The Role type for GRANT statement +#6867 - Add DSLContext.ddl(Table[]) and ddl(Collection>) +#6872 - [#4627] Support using first available constructor with **different** number of arguments as the last resort +#6876 - Add DSL.localDateTimeDiff() and localDateTimeAdd() +#6878 - [#6812] Added GRANT statement and its implementation. +#6879 - Add javax.xml.bind:jaxb-api dependency and avoid using the implementation +#6883 - Add support for loading default values and comments for org.jooq.Meta columns +#6884 - Emulate SET [ ROW ] = [ ROW ] syntax on all databases +#6885 - [#6867] Added a possibility to export several DDL of tables +#6897 - [#6868] Prefer public constructors +#6899 - Log a link to GitHub when DDLDatabase runs into a ParserException +#6903 - Add ExecuteContext.statementExecutionCount() to count the number of executions of a statement +#6906 - Add support for PostgreSQL ON CONFLICT .. ON CONSTRAINT .. +#6911 - Add support for GRANT .. TO PUBLIC and REVOKE .. FROM PUBLIC +#6913 - Add support for WITH GRANT OPTION clause to GRANT statement +#6919 - [#6906] Added support for PostgreSQL ON CONFLICT .. ON CONSTRAINT .. +#6921 - Optimization of {ULong,UInteger,UShort}.toBigInteger +#6922 - Upgrade the jOOU dependency to version 0.9.3 +#6927 - Add ExecuteListener.serverOutput() +#6928 - Add AlterTableStep.add(Field) taking the data type from the field directly +#6931 - Add support for REVOKE GRANT OPTION FOR +#6933 - Add org.jooq.Statement for procedural statements inside of org.jooq.Block +#6934 - [#6913] Added a support for GRANT .. WITH GRANT OPTION +#6936 - Parse empty INSERT .. VALUES () clause as an emulated DEFAULT VALUES clause +#6938 - [#6931] Added a support for REVOKE GRANT OPTION FOR .. clause +#6940 - [#6913] Added parser support for WITH GRANT OPTION clause +#6941 - [#6931] Added parser support for GRANT OPTION FOR clause +#6943 - Add integration test for applied to table valued function result +#6951 - Add flag to exclude the generation of PostgreSQL trigger routines +#6955 - [#6772] Added a new flag `jpaVersion` to code generator. +#6958 - Generate hint about in Javadoc +#6962 - Add code generator flags for +#6963 - Add section to the manual about the code generation flags +#6968 - Implement IdentityConverter.toString() +#6969 - Support various DDL statements in Firebird +#6977 - Add native support for SQL Server 2017 TRIM() +#6978 - Add support for TRANSLATE() function +#6982 - Make jooq-meta's org.jooq.util.Database AutoCloseable +#6985 - Add an org.jooq.Comment type +#6986 - Emulate COMMENT ON in SQL Server using sp_updateextendedproperty +#6987 - Add DDLFlag.COMMENT to extract COMMENT statements from DSLContext.ddl() +#6990 - When DDLFlag.TABLE is inactive, constraints should produce ALTER TABLE statements on DSLContext.ddl() +#6991 - Add comments to jooq-meta.xsd +#6992 - Add Catalog.getComment() +#6993 - Add Schema.getComment() +#6994 - Emulate COMMENT ON TABLE in MySQL +#6997 - Support system properties in Maven code generation +#7000 - Document the possibility of skipping code generation via a Maven command line argument +#7008 - Support various DDL statements in MariaDB +#7016 - Add option to disable the generation of all Javadoc +#7027 - Add DSL.field(Name, DataType, Comment) and DSL.table(Name, Comment), etc. +#7028 - Add support for CREATE TABLE .. COMMENT +#7039 - DDLDatabase should auto-create missing schemas +#7040 - Add DataAccessException.getCause(Class) +#7043 - Emulate MySQL's CREATE TABLE .. COMMENT on other databases +#7044 - Add support for ALTER TABLE .. COMMENT +#7055 - POJO copy constructor should use interface when codegen of = true +#7069 - Add ParserException.sql(), position(), line(), column() +#7073 - Add to to allow for matching nullable / non-nullable / all columns +#7075 - Generate equals(), hashCode(), and toString() on XJC generated classes +#7082 - Generate comments in SQL Server +#7086 - Add support for COMMENT ON VIEW +#7087 - Add support for SET SCHEMA and SET CATALOG +#7094 - Add ParamType.FORCE_INDEXED +#7095 - Add Settings.inListPadBase +#7097 - Expose jOOQ Connection proxies also as DataSource +#7101 - Add T DSLContext.fetchValue(Field) +#7107 - Add support for CREATE INDEX ON (unnamed indexes) +#7112 - Support WITH clause for H2 +#7115 - Allow usage of derived table as aliased parameter of TableImpl constructor +#7116 - Add Field.collate(Collation) and collate(String) to support COLLATE clauses +#7117 - Add DataType.collate(Collation) +#7120 - Add org.jooq.Collation and DSL.collation(String) +#7123 - Add CREATE TABLE and ALTER TABLE support for explicit column collations +#7125 - Add code generation support for PL/SQL TABLE types +#7131 - Wrap the Table type in an implicit Scala class to allow for writing t.* +#7134 - Add ArrayRecord.isSQLUsable() and ArrayRecord.getPackage() +#7139 - Add support for CREATE TABLE AS SELECT .. WITH [ NO ] DATA +#7140 - Add support for converting java.sql.Struct to UDTRecord +#7148 - Add code generation support for to-one implicit join relationships +#7152 - Add Context.scopeStart() and scopeEnd() +#7154 - Add TableDefinition.getForeignKeys(TableDefinition) +#7158 - Add public internal API for use by code generator (to work around Scala issues) +#7162 - Add DSLContext.meta(DatabaseMetaData) and meta(Catalog...), meta(Schema...), meta(Table...) +#7164 - Add Meta.getXYZ(String), getXYZ(Name) accessors for all object types +#7166 - Change DSL.unnest(List) and table(List) to unnest(Collection) and table(Collection) +#7173 - Add documentation for the new DiagnosticsListener SPI +#7174 - Add support for PostgreSQL ROWTYPE function parameters +#7185 - Emulate CREATE VIEW IF NOT EXISTS in PostgreSQL +#7187 - Add List DSLContext.fetchValues(Table>) +#7188 - Upgrade Hibernate dependency in jOOQ-meta-extensions to 5.2.13 +#7210 - Add to allow for interfaces not to be Serializable +#7211 - Upgrade Scala 2.10 dependency to 2.10.7 +#7217 - DDLDatabase should sort SQL files +#7219 - XMLDatabase should support reading files from classpath +#7229 - Add configuration to allow for treating DECIMAL types as BigDecimal +#7237 - Add DSL.now() as a synonym for DSL.currentTimestamp() +#7258 - Deprecate org.jooq.Clause +#7261 - Add more error messages to the parser +#7264 - Add Parser.parseSelect() +#7266 - Support parsing column references as predicates +#7269 - Expose Parser as a CLI tool +#7275 - Add DSL.iif(Condition, Field, Field) +#7276 - Add support for SQL Server's CHOOSE() function +#7277 - Add DSL.with(Name) and DSL.withRecursive(Name) +#7279 - Add RenderKeywordStyle.PASCAL +#7280 - Add ConstraintForeignKeyReferencesStep[N].references(Table) +#7286 - Add CREATE OR REPLACE VIEW +#7288 - Add DSL.count(SelectFieldOrAsterisk) and countDistinct(SelectFieldOrAsterisk) +#7296 - Add Name.as() to create empty window specifications +#7300 - SQL Translation Error - Transact-SQL outer joins +#7310 - Document in the manual +#7311 - Add support for (+) outer join in DB2 +#7314 - [#5873] Add Setting.quoteEscaping to allow for alternative escaping of single quote +#7320 - Support parsing Oracle TO_DATE() and TO_TIMESTAMP() functions +#7324 - Support Kotlin metadata in DefaultRecordMapper +#7329 - [#7324] Support Kotlin data classes in DefaultRecordMapper +#7340 - should generate Size annotations also for (VAR)BINARY types +#7343 - Add , , code generation configuration flags +#7344 - Add Settings.parseUnknownFunctions to turn off failing on unknown functions +#7345 - Add section to the manual explaining annotation generation flags +#7346 - #7301: Allow customization of LoggerListener +#7347 - Support parsing KEY/INDEX specifications in MySQL CREATE TABLE statements +#7348 - Add possibility of adding an INDEX (or KEY) as a "constraint" to DDL statements +#7353 - Let Cursor extend Formattable +#7355 - Add org.jooq.Formattable +#7356 - Emulate MySQL's CREATE TABLE (... INDEX) clause using anonymous blocks +#7357 - Overload CreateIndexStep.on() clauses with Collection accepting version +#7358 - Add support for SQL Data Warehouse +#7365 - Emulate PostgreSQL's ON CONFLICT clause with MERGE +#7374 - Add DSL.timestampSub() and localDateTimeSub() +#7375 - Deprecate DataType classes +#7379 - Translate MySQL / PostgreSQL ENUM type to check constraint in other databases +#7385 - Upgrade jOOR dependency to 0.9.8 +#7386 - org.jooq.Parser should generate in-memory enum types +#7387 - Add DataType.isEnum() +#7388 - Make EnumType.getCatalog() and getSchema() default methods +#7407 - Add support for ALTER INDEX .. RENAME in MySQL by using ALTER TABLE .. RENAME INDEX +#7409 - Emulate PostgreSQL's ON CONFLICT .. ON CONSTRAINT clause with MERGE +#7412 - Add support for the CREATE INDEX .. INCLUDE syntax +#7415 - Add ability for MatcherStrategy to allow for customizing enum class names +#7420 - Code generation XML config snippets should refer to XMLNS in manual +#7431 - Document the fact that fetchOne() needs to fetch the second record +#7433 - Add support for Amazon Aurora PostgreSQL Edition +#7437 - Add support for generate_series() with step parameter +#7439 - Add ORACLE12C support for the STANDARD_HASH function +#7440 - Add support for the NTH_VALUE(..) [ FROM { FIRST | LAST } ] clause +#7441 - JavaGenerator should allow for overriding POJO constructor generation +#7446 - Support parsing ISO_8601 interval literals +#7447 - Add DayToSecond.valueOf(Duration) +#7452 - Support multi-row INSERT .. SELECT .. RETURNING for Oracle using PL/SQL FORALL .. INSERT .. RETURNING .. BULK COLLECT INTO +#7453 - Update docs: SQL Azure is now called Azure SQL Database +#7454 - Add SQLDialect.DB2_11 +#7461 - Deprecate SEEK BEFORE +#7469 - Add { ResultQuery | Cursor }.collect(Collector) +#7474 - Make number of seconds that are considered "slow" in jOOQ-meta configurable +#7475 - Add { Insert | Update | Delete }ReturningStep.returningResult(...) methods +#7477 - Add Field.concat(char...) +#7478 - Add Javadoc to XYZ..Step API to hint at users they should never need to reference it +#7479 - Log warning when { Insert | Update | Delete }ReturningStep.returning() is used with arbitrary column expressions +#7480 - Add DSLContext.newRecord(Collection>) +#7483 - Deprecate DSL.getDataType() +#7484 - Add DSLContext.selectFrom(Name) and selectFrom(String) overloads +#7491 - Emulate ON CONFLICT .. DO UPDATE .. WHERE

on SQL Server using WHEN MATCHED AND

+#7493 - Emulate { OUTER | CROSS } APPLY on DB2 +#7498 - Improve RenderMapping to allow for adding a schema to unqualified objects +#7514 - Add MariaDB support for window functions +#7522 - Add MariaDB support for inverse distribution functions +#7523 - Add MariaDB support for WITH +#7524 - Add support for MariaDB WITH TIES +#7538 - Deprecate some Field.xyz() convenience API + + +Breaking changes +---------------- + +#6462 - INSERT .. ON DUPLICATE KEY { IGNORE | UPDATE } emulation should consider all UNIQUE keys +#6814 - JDBCUtils.dialect(Connection) should recognise database version +#6818 - [#6814] overload the JDBCUtils.dialect method +#6852 - Remove PostgresDataType.MONEY +#6868 - DefaultRecordMapper should prefer calling public constructors over private ones +#6961 - Remove generated Sequences classes from jOOQ-meta +#7167 - Errors should also roll back a transaction +#7322 - Trailing newRecord() results in NULL insert statement +#7341 - Change SQLServerDataType.TIMESTAMP to be of type VARBINARY / byte[] +#7419 - Rename jooq-meta and jooq-codegen packages to avoid conflicts in JPMS +#7504 - DefaultDataType.getDataType(SQLDialect) should use family + Bug Fixes --------- -#7399 - Optimistic locking should run deep equality checks on arrays -#7417 - Misleading warning message when using external configurationFile with -#7443 - ORA-00932 when running CAST(.. AS CLOB) in Oracle -#7457 - ArrayIndexOutOfBoundsException on terminal operation of sorted ResultQuery.stream() -#7465 - Excess ORDER BY "rn" generated in ORACLE11G dialect when LIMIT is used without ORDER BY -Version 3.10.6 - March 20, 2018 -================================================================================ - -This is a 3.10 patch release with bug fixes - -Features and Improvements -------------------------- -#7178 - Flawed implementation of SET SCHEMA for PostgreSQL -#7212 - Upgrade Scala 2.10 dependency to 2.10.7 -#7220 - XMLDatabase should be lenient about XML namespace -#7239 - Add DSL.now() as a synonym for DSL.currentTimestamp() -#7249 - Add Javadoc to DSL.table(String) and Table.field(String) explaining the lack of field references in plain SQL tables -#7278 - Add DSL.with(Name) and DSL.withRecursive(Name) -#7281 - Add ConstraintForeignKeyReferencesStep[N].references(Table) - -Bug Fixes ---------- -#7181 - PostgresUtils.toPGXYZString() methods (and others) should avoid using String.replace() pre JDK 9 -#7184 - Cannot ORDER BY null in PostgreSQL, when Field.sortAsc() has no parameters -#7190 - NullPointerException when DSL.name(Name...) contains a null Name argument -#7192 - Using VARBINARY type with length on Oracle fails in DDL statements -#7199 - DataType.nullable() and defaultValue() are not generated for enum types -#7205 - DDLDatabase fails with order in Index statements -#7207 - DDLDatabase reports DECIMAL(65535, 32767) for precision/scale-less decimals -#7233 - Not all columns are fetched when plain SQL tables are mixed with generated ones -#7244 - Vertica generated sequences are of type Byte instead of Long -#7254 - Error when running "SELECT 1" query from AbstractDatabase in unsupported SQLDialect -#7272 - Generator doesn't select appropriate DataType for Columns using an enum from another schema -#7307 - Nondeterministic ordering in generated schemas in PostgreSQL -#7316 - SQLDataType.CLOB translates to TINYTEXT rather than TEXT in MySQL -#7332 - Workaround for regression in H2 generator where primary keys are no longer found - - -Version 3.10.5 - February 15, 2018 -================================================================================ - -This is a 3.10 patch release with bug fixes - -Features and Improvements -------------------------- -#7088 - Add support for SET SCHEMA and SET CATALOG - -Bug Fixes ---------- -#7080 - Support PostgreSQL SMALLSERIAL and BIGSERIAL types in parser / DDLDatabase -#7090 - Parser and DDLDatabase cannot parse certain PostgreSQL types -#7092 - ParsingStatement is not overriding all methods from DefaultStatement -#7110 - Compilation error in generated DAOs when primary key is a composite type -#7128 - NPE while fetching certain indexes during code generation -#7159 - Add public internal API for use by code generator (to work around Scala issues) -#7170 - Various parser bugs / missing features - - -Version 3.10.4 - January 16, 2018 -================================================================================ - -This is a 3.10 patch release with bug fixes - -Features and Improvements -------------------------- -#7041 - DDLDatabase should auto-create missing schemas -#7072 - Add DataAccessException.getCause(Class) - -Bug Fixes ---------- -#7012 - Invalid SQL rendered for inlined named parameters -#7026 - DDLDatabase fails with MySQL ENUM columns -#7029 - DDLDatabase fails with COMMENT on columns -#7030 - DDLDatabase fails with MySQL TINYINT(1) type columns -#7031 - DDLDatabase fails with MySQL UNIQUE INDEX clause -#7033 - Remove broken Parser "Expected Tokens" error message -#7036 - Plain SQL API should recognise multi-character PostgreSQL ltree operators -#7038 - Plain SQL API should recognise multi-character PostgreSQL geometry operators -#7046 - DDLDatabase fails with MySQL ON UPDATE -#7059 - Generated Tables.scala has unused imports -#7063 - Programmatic code generator Database configuration doesn't default to .* -#7065 - NotSerializableException when Record references reflection cache -#7071 - jOOQ-scala 2.11 cannot be built with JDK 9 - - -Version 3.10.3 - January 5, 2018 -================================================================================ - -This is a 3.10 patch release with bug fixes - -Features and Improvements -------------------------- -#6900 - Log a link to GitHub when DDLDatabase runs into a ParserException -#6965 - Generate hint about in Javadoc - -Bug Fixes ---------- -#6856 - sqlite_sequence is not a reliable way to discover identities -#6888 - org.jooq.Meta ignores foreign key names -#6890 - maven-deploy.bat's help options do not work (cannot be discovered easily) -#6891 - In MySQL, an incorrect column default is generated when the default is CURRENT_TIMESTAMP -#6894 - Scala generated code for Oracle queues does not compile -#6901 - Parser API doesn't document thrown ParserException -#6905 - Javadoc warnings in ExecuteListener -#6924 - Clarify the meaning of MockResult.data == null -#6974 - Firebird IF [ NOT ] EXISTS clause emulations broken -#6981 - Wrong Javadoc on DropIndexOnStep -#6983 - DDLDatabase and JPADatabase should use unique in-memory database name -#6996 - Oracle array of object containing date mapped to LocalDate cannot be bound as a variable -#7002 - Line numbers not aligned correctly between OSS and Pro edition - - -Version 3.10.2 - November 29, 2017 -================================================================================ - -This is a 3.10 patch release with bug fixes - -Features and Improvements -------------------------- -#6782 - Clarify DSL.currentDate() Javadoc: It creates ANSI SQL DATE values, not Oracle DATE -#6784 - Add explicit unit of time specification to Query.queryTimeout() -#6810 - Provide maven-deploy script to install artifacts on remote repository - -Bug Fixes ---------- -#6682 - Typo in ResultQuery Javadoc: thorws should be throws -#6685 - Avoid creating a new DefaultConfiguration in DSLContext.select() and similar methods -#6687 - Avoid allocation of CursorImpl.intern array -#6692 - Prevent calling DSL.name() with empty arguments -#6697 - Remove the DATA_LOCALLY_SCOPED_DATA_MAP in SelectQueryImpl -#6700 - DSL.trueCondition() and DSL.falseCondition() should return constants -#6710 - Parser.parse() fails on trailing whitespace -#6711 - Avoid generating code with a redundant (Object) cast -#6713 - Redundant Javadoc generated when deprecation for unknown types is generated -#6716 - PostgreSQL RETURNING AS is not rendered correctly -#6731 - Typo in Cursor.fetchOne() Javadoc's deprecation hint -#6738 - jooq-runtime-3.10.0 lists wrong version in namespace -#6743 - Oracle OBJECT type declarations inside generated RECORD declarations are not bound correctly, if NULL -#6748 - Avoid allocating a fresh "ExecuteListeners" instance in the absence of actual ExecuteListeners -#6750 - Avoid adding the LoggerListener if the log level is more than DEBUG -#6753 - Avoid various array allocations due to unnecessary varargs -#6756 - Avoid unnecessary UnqualifiedName[] allocations in QualifiedField etc. -#6759 - Avoid allocation of AbstractContext.visitListeners if unneeded -#6775 - Improve MockDataProvider Javadoc about null or empty return values -#6780 - Oracle's quoted string literals start with case-insensitive Q letter -#6786 - Result.format() breaks when there is a tabulator in the content -#6788 - Inefficient ProxyMapper allocates a new MutablePOJOMapper delegate every time -#6791 - ConvertAll inefficiently unboxes and boxes primitive types -#6801 - Optimise internal reflection cache by avoiding cache key arrays where possible -#6805 - Override equals() and hashCode() in org.jooq.impl.Fields -#6808 - Improve DefaultRecordMapper::init MappingException message -#6828 - Error when passing java.util.Date to DSL.year(), month(), day(), hour(), minute(), second() -#6830 - DayToSecond generates nanosecond precision for DAY_MICROSECOND interval -#6842 - MockResultSet.getTimestamp(int, Calendar) ignores Calendar -#6844 - SQLDataType.INTEGER.identity(true) not working for SQLLite -#6846 - has no effect -#6848 - Code generator doesn't work when Derby database uses non-standard collation -#6858 - SQLiteTableDefinition.toString() prints "." after empty schema -#6869 - Code generator doesn't work in Java 6 build, which calls java.lang.reflect.Method.getParameterCount() - - -Version 3.10.1 - October 11, 2017 -================================================================================ - -This is a 3.10 patch release with bug fixes - -Features and Improvements -------------------------- -#6651 - Improve "no catalogs were loaded" error message -#6655 - Improve code generator's INFO message when objects have no name - -Bug Fixes ---------- -#6622 - Constants.MINOR_VERSION points to 3.9 instead of 3.10 -#6624 - NPE "Error while fetching indexes" while generating code for function based indexes -#6636 - Limit.numberOfRowsOrMax should be initalised from static value -#6641 - QualifiedName.nonEmpty() shouldn't clone argument -#6649 - Error while generating classes from Record Types and Oracle Types in Oracle 11g -#6658 - Error in maven-install.bat and .sh scripts when installing cross released Scala deliverables -#6667 - Costly null check in CombinedCondition constructor -#6670 - Lazy initialise thread local ArrayLists in DefaultExecuteContext -#6673 - DefaultBinding.escape() uses String.replace() rather than StringUtils.replace() -#6677 - Add markdown to error message about slow SQL +#3045 - DSL.groupConcat() without orderBy() is incorrectly emulated for Oracle +#3777 - Deadlock when loading DataType classes +#4277 - INSERT .. RETURNING acquires two different Connections for MySQL +#4556 - Converter or Binding is not applied to standalone bind values that are passed to functions like DECODE(), COALESCE(), NVL(), etc. +#5127 - Remove the DATA_LOCALLY_SCOPED_DATA_MAP in SelectQueryImpl +#5537 - Keys.java shouldn't be generated when is set to false +#5574 - In MySQL, an incorrect column default is generated when the default is CURRENT_TIMESTAMP +#5688 - PostgreSQL RETURNING AS is not rendered correctly +#5692 - jOOQ website CSS is broken on Android +#6241 - DataType.nullable() and defaultValue() are not generated for enum types +#6431 - Recursive CTE doesn't work on MySQL because of automatic UNION nesting +#6485 - Various parser bugs / missing features +#6607 - MockResultSet.getTimestamp(int, Calendar) ignores Calendar +#6620 - NPE "Error while fetching indexes" while generating code for function based indexes +#6621 - Manual should not display "Unsupported versions" header when there are none +#6625 - Copyright statement in PDF manual is outdated +#6626 - Manual does not list all contributors from ABOUT.txt +#6635 - Limit.numberOfRowsOrMax should be initalised from static value +#6638 - Avoid creating a new DefaultConfiguration in DSLContext.select() and similar methods +#6640 - QualifiedName.nonEmpty() shouldn't clone argument +#6643 - Error while generating classes from Record Types and Oracle Types in Oracle 11g +#6657 - Error in maven-install.bat and .sh scripts when installing cross released Scala deliverables +#6666 - Costly null check in CombinedCondition constructor +#6669 - Lazy initialise thread local ArrayLists in DefaultExecuteContext +#6672 - DefaultBinding.escape() uses String.replace() rather than StringUtils.replace() +#6679 - Reduce GC pressure through lazy QueryPartList initialisation in SelectQueryImpl +#6680 - Typo in ResultQuery Javadoc: thorws should be throws +#6684 - Avoid allocation of CursorImpl.intern array +#6691 - Prevent calling DSL.name() with empty arguments +#6696 - Lazy allocate DefaultExecuteContext.batchXYZ arrays if not batching +#6699 - DSL.trueCondition() and DSL.falseCondition() should return constants +#6706 - [#6705] Avoid generating code with a redundant cast +#6707 - Parser.parse() fails on trailing whitespace +#6708 - DDLDatabase fails when engine=InnoDB is specified +#6712 - Redundant Javadoc generated when deprecation for unknown types is generated +#6726 - Support precision on TIME and TIMESTAMP data types +#6727 - XMLDatabase should be lenient about XML namespace +#6730 - Typo in Cursor.fetchOne() Javadoc's deprecation hint +#6733 - jOOQ-scala 2.11 cannot be built with JDK 9 +#6742 - Oracle OBJECT type declarations inside generated RECORD declarations are not bound correctly, if NULL +#6746 - Avoid allocating a fresh "ExecuteListeners" instance in the absence of actual ExecuteListeners +#6747 - Avoid adding the LoggerListener if the log level is more than DEBUG +#6752 - Avoid various array allocations due to unnecessary varargs +#6755 - Avoid unnecessary UnqualifiedName[] allocations in QualifiedField etc. +#6758 - Avoid allocation of AbstractContext.visitListeners if unneeded +#6763 - PostgreSQL 10 multi column update expressions should use ROW() +#6766 - Sakila example database: staff.picture column data is too long for mysql +#6774 - Improve MockDataProvider Javadoc about null or empty return values +#6779 - Oracle's quoted string literals start with case-insensitive Q letter +#6785 - Result.format() breaks when there is a tabulator in the content +#6787 - Inefficient ProxyMapper allocates a new MutablePOJOMapper delegate every time +#6790 - ConvertAll inefficiently unboxes and boxes primitive types +#6794 - Custom type converters ignored for table-valued (set-returning) function parameters. +#6797 - Code generator doesn't work when Derby database uses non-standard collation +#6800 - Optimise internal reflection cache by avoiding cache key arrays where possible +#6803 - Cache RecordMapper instances in DefaultRecordMapperProvider +#6804 - Override equals() and hashCode() in org.jooq.impl.Fields +#6807 - Improve DefaultRecordMapper::init MappingException message +#6820 - DayToSecond generates nanosecond precision for DAY_MICROSECOND interval +#6825 - Error when passing java.util.Date to DSL.year(), month(), day(), hour(), minute(), second() +#6841 - SQLDataType.INTEGER.identity(true) not working for SQLLite +#6845 - has no effect +#6854 - sqlite_sequence is not a reliable way to discover identities +#6855 - SQLiteTableDefinition.toString() prints "." after empty schema +#6860 - Code generator doesn't work in Java 6 build, which calls java.lang.reflect.Method.getParameterCount() +#6873 - Line numbers not aligned correctly between OSS and Pro edition +#6875 - scala AbstractKeys cannot be accessed +#6880 - ALTER COLUMN .. SET with identity type generates wrong query in MySQL and MariaDB +#6881 - maven-deploy.bat's help options do not work (cannot be discovered easily) +#6887 - org.jooq.Meta ignores foreign key names +#6893 - Scala generated code for Oracle queues does not compile +#6898 - Parser API doesn't document thrown ParserException +#6904 - Javadoc warnings in ExecuteListener +#6912 - Bad inlining of Double.NaN in H2 +#6918 - Generated file headers comment is ill formatted +#6923 - Clarify the meaning of MockResult.data == null +#6930 - Compilation error in generated code when is applied to an enum column +#6949 - Video on "learn" page is missing +#6966 - In JavaGenerator printed overview, add missing flags +#6967 - Oracle array of object containing date mapped to LocalDate cannot be bound as a variable +#6972 - Manual examples for code generation includes / excludes contain wrong regular expressions +#6973 - Firebird IF [ NOT ] EXISTS clause emulations broken +#6979 - Wrong Javadoc on DropIndexOnStep +#6980 - DDLDatabase and JPADatabase should use unique in-memory database name +#6988 - DDLFlag.TABLE does not work correctly on DSLContext.ddl() +#7001 - Confusing debug log output when fetchOptional or fetchOne throw TooManyRowsException +#7009 - Invalid SQL rendered for inlined named parameters +#7017 - DDLDatabase fails with MySQL ENUM columns +#7019 - DDLDatabase fails with MySQL ON UPDATE +#7020 - DDLDatabase fails with MySQL TINYINT(1) type columns +#7021 - DDLDatabase fails with MySQL DATETIME columns +#7022 - DDLDatabase fails with MySQL UNIQUE INDEX clause +#7032 - Remove broken Parser "Expected Tokens" error message +#7035 - Plain SQL API should recognise multi-character PostgreSQL ltree operators +#7037 - Plain SQL API should recognise multi-character PostgreSQL geometry operators +#7049 - Generated Tables.scala has unused imports +#7051 - Generated scala code contains deprecation warning for TableImpl +#7052 - [7051] Fix generated scala deprecation warning +#7054 - [#7021] Add parser support for DATETIME data type. +#7061 - Programmatic code generator Database configuration doesn't default to .* +#7062 - NotSerializableException when Record references reflection cache +#7068 - Compilation error in generated DAOs when primary key is a composite type +#7074 - Support PostgreSQL SMALLSERIAL and BIGSERIAL types in parser / DDLDatabase +#7078 - Excess whitespace in generated Scala case classes +#7079 - Excess semi colon generated in Scala code +#7084 - DDLDatabase not working with PostgresSQL database dump +#7089 - Parser and DDLDatabase cannot parse certain PostgreSQL types +#7091 - ParsingStatement is not overriding all methods from DefaultStatement +#7102 - Inaccurate Javadoc for DSLContext.fetchValue() and fetchValues() +#7114 - DSLContext.transactionXYZ() methods throw ConfigurationException with wrong message +#7127 - NPE while fetching certain indexes during code generation +#7135 - Bad ArrayRecord.toString() rendering for nested arrays in Oracle +#7157 - Queries generates trailing separator / newline character +#7171 - Various parser bugs / missing features +#7176 - Regression in PostgreSQL MODE function implementation +#7177 - Flawed implementation of SET SCHEMA for PostgreSQL +#7179 - PostgresUtils.toPGXYZString() methods (and others) should avoid using String.replace() pre JDK 9 +#7183 - Cannot ORDER BY null in PostgreSQL, when Field.sortAsc() has no parameters +#7186 - NullPointerException when MetaTable.getIndexes() call retrieves a function-based index expression +#7189 - NullPointerException when DSL.name(Name...) contains a null Name argument +#7191 - Using VARBINARY type with length on Oracle fails in DDL statements +#7194 - H2 MetaTable's string column default values are wrong +#7203 - DDLDatabase fails with order in Index statements +#7206 - DDLDatabase reports DECIMAL(65535, 32767) for precision/scale-less decimals +#7222 - IN (SELECT .. UNION SELECT ..) doesn't work on Derby +#7224 - Do not emulate nested set operators if not strictly needed +#7231 - Not all columns are fetched when plain SQL tables are mixed with generated ones +#7243 - Vertica generated sequences are of type Byte instead of Long +#7248 - Error when running "SELECT 1" query from AbstractDatabase in unsupported SQLDialect +#7270 - Generating JOOQ-classes for CockroachDB fails when using PostgreSQLDatabase +#7271 - Generator doesn't select appropriate DataType for Columns using an enum from another schema +#7282 - Oracle LIMIT always generates OFFSET clause, even if not required +#7292 - SQL Translation Error +#7294 - SQL Translation Error +#7298 - Internal Tools.peek() methods should not operate on strings, but on char[] +#7299 - Missing whitespace between USING and ( +#7303 - Nondeterministic ordering in generated schemas in PostgreSQL +#7315 - SQLDataType.CLOB translates to TINYTEXT rather than TEXT in MySQL +#7321 - Make visiting a window actually conditional on its nullity. +#7325 - Error when fetching SQLite timestamps in ISO format (including the letter T) +#7330 - Workaround for regression in H2 generator where primary keys are no longer found +#7335 - Optimise SelectLimitStep.limit(Param) for inline parameters +#7338 - jOOQ 3.10.6 download fail +#7351 - Error when binding null values to UUID types in PostgreSQL +#7359 - IndexOutOfBounds when trying to do a MERGE with SELECT in Postgres +#7370 - Regression in jOOQ 3.11 when binding unknown data types +#7373 - Undocument in jOOQ 3.10+ documentation +#7376 - Internal FieldMapsForInsert.empty behaves incorrectly +#7380 - Error in PLSQL procedure if CLOB OUT PARAMETER is > 32kb +#7381 - 3.11 code generator for H2 throws "Error while fetching enums" exception +#7392 - Do not use HSQLDB's undocumented NULL keyword for the absence of NOT NULL constraints in CREATE TABLE +#7394 - InsertQuery.newRecord() without any values produces wrong SQL +#7396 - Optimistic locking should run deep equality checks on arrays +#7400 - ORA-01843: not a valid month binding JSR 310 to prepared statements +#7402 - Regression on Oracle DATE IN OUT parameters +#7404 - Oracle code generator does not recognise TIMESTAMP WITH TZ type in object types +#7405 - DSL.inline(UDTRecord) does not work +#7414 - XMLDatabase should use XML file's encoding, not default Charset +#7416 - Misleading warning message when using external configurationFile with +#7427 - Excess ORDER BY "rn" generated in ORACLE11G dialect when LIMIT is used without ORDER BY +#7430 - ResultQuery.fetchOne() should not fetch second record on a LIMIT 1 query +#7442 - ORA-00932 when running CAST(.. AS CLOB) in Oracle +#7455 - ArrayIndexOutOfBoundsException on terminal operation of sorted ResultQuery.stream() +#7456 - [#7455] Create spliterator correctly +#7459 - SEEK with UNION doesn't work correctly +#7460 - SEEK without WHERE produces excess 1 = 1 predicate +#7463 - Statements provided by delegate should not close underlying connection +#7488 - Wrong SQL generated in SQL Server when adding nanoseconds to a Timestamp +#7492 - Clarify meaning of in data type rewriting in manual +#7494 - Regression on DB2's INSERT .. RETURNING emulation +#7497 - Specify capacity for internal ArrayLists whose size is known +#7500 - Nullability is not correctly generated for Postgres JSONB columns +#7501 - Binding ARRAY of jsonb in Postgres function results in SQLDialectNotSupportedException +#7505 - JDBCDatabase doesn't recognise vendor-specific data types +#7515 - SEEK operations do not auto-convert bind variables to appropriate type +#7526 - Clean up Support annotations +#7535 - Missing Meta Database references in the manual +#7547 - Code generator should not generate "USER-DEFINED" for unknown data types +#7548 - Underflow when binding small Double values to Oracle JDBC Version 3.10.0 - September 29, 2017 diff --git a/jOOQ-release/release/template/maven-deploy.bat b/jOOQ-release/release/template/maven-deploy.bat index 0754d8fc37..16835adda2 100644 --- a/jOOQ-release/release/template/maven-deploy.bat +++ b/jOOQ-release/release/template/maven-deploy.bat @@ -36,7 +36,7 @@ GOTO end IF NOT "%~1"=="" GOTO usage IF "%URL%"=="" GOTO usage -set VERSION=3.11.0-SNAPSHOT +set VERSION=3.11.0 if exist jOOQ-javadoc\jooq-%VERSION%-javadoc.jar ( set JAVADOC_JOOQ=-Djavadoc=jOOQ-javadoc\jooq-%VERSION%-javadoc.jar diff --git a/jOOQ-release/release/template/maven-deploy.sh b/jOOQ-release/release/template/maven-deploy.sh index fe9a74ae47..791ba678e8 100644 --- a/jOOQ-release/release/template/maven-deploy.sh +++ b/jOOQ-release/release/template/maven-deploy.sh @@ -37,7 +37,7 @@ if [ -z ${URL+x} ]; then exit 1 fi -VERSION=3.11.0-SNAPSHOT +VERSION=3.11.0 if [ -f jOOQ-javadoc/jooq-$VERSION-javadoc.jar ]; then JAVADOC_JOOQ=-Djavadoc=jOOQ-javadoc/jooq-$VERSION-javadoc.jar diff --git a/jOOQ-release/release/template/maven-install.bat b/jOOQ-release/release/template/maven-install.bat index 282ff1560d..8b7299dfb7 100644 --- a/jOOQ-release/release/template/maven-install.bat +++ b/jOOQ-release/release/template/maven-install.bat @@ -1,5 +1,5 @@ @echo off -set VERSION=3.11.0-SNAPSHOT +set VERSION=3.11.0 if exist jOOQ-javadoc\jooq-%VERSION%-javadoc.jar ( set JAVADOC_JOOQ=-Djavadoc=jOOQ-javadoc\jooq-%VERSION%-javadoc.jar diff --git a/jOOQ-release/release/template/maven-install.sh b/jOOQ-release/release/template/maven-install.sh index 275c4d4603..6dc735b2d1 100644 --- a/jOOQ-release/release/template/maven-install.sh +++ b/jOOQ-release/release/template/maven-install.sh @@ -1,5 +1,5 @@ #!/bin/sh -VERSION=3.11.0-SNAPSHOT +VERSION=3.11.0 if [ -f jOOQ-javadoc/jooq-$VERSION-javadoc.jar ]; then JAVADOC_JOOQ=-Djavadoc=jOOQ-javadoc/jooq-$VERSION-javadoc.jar diff --git a/jOOQ-scala_2.12/pom.xml b/jOOQ-scala_2.12/pom.xml index 05ffeff081..e148490e48 100644 --- a/jOOQ-scala_2.12/pom.xml +++ b/jOOQ-scala_2.12/pom.xml @@ -7,7 +7,7 @@ org.jooq jooq-parent - 3.11.0-SNAPSHOT + 3.11.0 org.jooq diff --git a/jOOQ/pom.xml b/jOOQ/pom.xml index 3567eaded4..01b6d03042 100644 --- a/jOOQ/pom.xml +++ b/jOOQ/pom.xml @@ -7,7 +7,7 @@ org.jooq jooq-parent - 3.11.0-SNAPSHOT + 3.11.0 org.jooq diff --git a/jOOQ/src/main/java/org/jooq/ParserCLI.java b/jOOQ/src/main/java/org/jooq/ParserCLI.java index f35f84a3e5..35cff6bef0 100644 --- a/jOOQ/src/main/java/org/jooq/ParserCLI.java +++ b/jOOQ/src/main/java/org/jooq/ParserCLI.java @@ -58,7 +58,7 @@ public final class ParserCLI { a = parse(args); if (a.toDialect == null || a.sql == null) { - System.err.println("Mandatory arguments: -t and -s"); + System.err.println("Mandatory arguments: -t and -s. Use -h for help"); throw new RuntimeException(); } } diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractQuery.java b/jOOQ/src/main/java/org/jooq/impl/AbstractQuery.java index 37ebdf811a..55ab5d08fb 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractQuery.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractQuery.java @@ -532,9 +532,6 @@ abstract class AbstractQuery extends AbstractQueryPart implements Query { - - - @@ -550,8 +547,6 @@ abstract class AbstractQuery extends AbstractQueryPart implements Query { - - /** * {@inheritDoc} */ diff --git a/pom.xml b/pom.xml index 1fd6efacfc..3c07081505 100644 --- a/pom.xml +++ b/pom.xml @@ -12,7 +12,7 @@ org.jooq jooq-parent - 3.11.0-SNAPSHOT + 3.11.0 pom jOOQ Parent