Release 3.11.0

This commit is contained in:
lukaseder 2018-06-07 16:45:37 +02:00
parent ab7fa285ee
commit 23df47ba4f
38 changed files with 706 additions and 283 deletions

View File

@ -7,7 +7,7 @@
<parent>
<groupId>org.jooq</groupId>
<artifactId>jooq-parent</artifactId>
<version>3.11.0-SNAPSHOT</version>
<version>3.11.0</version>
</parent>
<groupId>org.jooq</groupId>

View File

@ -6,7 +6,7 @@
<parent>
<groupId>org.jooq</groupId>
<artifactId>jooq-parent</artifactId>
<version>3.11.0-SNAPSHOT</version>
<version>3.11.0</version>
</parent>
<groupId>org.jooq</groupId>

View File

@ -7,7 +7,7 @@
<parent>
<groupId>org.jooq</groupId>
<artifactId>jooq-parent</artifactId>
<version>3.11.0-SNAPSHOT</version>
<version>3.11.0</version>
</parent>
<groupId>org.jooq</groupId>

View File

@ -18,7 +18,7 @@
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<org.jooq.version>3.11.0-SNAPSHOT</org.jooq.version>
<org.jooq.version>3.11.0</org.jooq.version>
<h2.version>1.4.195</h2.version>
</properties>

View File

@ -5,7 +5,7 @@
<groupId>org.jooq</groupId>
<artifactId>jooq-checker-framework-example</artifactId>
<version>3.11.0-SNAPSHOT</version>
<version>3.11.0</version>
<name>jOOQ Checker Framework Example</name>
<licenses>
@ -18,7 +18,7 @@
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<org.jooq.version>3.11.0-SNAPSHOT</org.jooq.version>
<org.jooq.version>3.11.0</org.jooq.version>
</properties>
<dependencies>

View File

@ -19,7 +19,7 @@
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<org.springframework.version>3.2.6.RELEASE</org.springframework.version>
<org.jooq.version>3.11.0-SNAPSHOT</org.jooq.version>
<org.jooq.version>3.11.0</org.jooq.version>
<org.h2.version>1.4.195</org.h2.version>
<scala.version>2.12.3</scala.version>

View File

@ -19,7 +19,7 @@
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<org.jooq.version>3.11.0-SNAPSHOT</org.jooq.version>
<org.jooq.version>3.11.0</org.jooq.version>
<org.h2.version>1.4.195</org.h2.version>
<java.version>1.8</java.version>

View File

@ -19,7 +19,7 @@
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<org.springframework.version>3.2.6.RELEASE</org.springframework.version>
<org.jooq.version>3.11.0-SNAPSHOT</org.jooq.version>
<org.jooq.version>3.11.0</org.jooq.version>
<org.h2.version>1.4.195</org.h2.version>
</properties>

View File

@ -5,7 +5,7 @@
<groupId>org.jooq</groupId>
<artifactId>jooq-jpa-example-entities</artifactId>
<version>3.11.0-SNAPSHOT</version>
<version>3.11.0</version>
<name>jOOQ JPA Example (Entities)</name>
<licenses>

View File

@ -5,7 +5,7 @@
<groupId>org.jooq</groupId>
<artifactId>jooq-jpa-example</artifactId>
<version>3.11.0-SNAPSHOT</version>
<version>3.11.0</version>
<name>jOOQ JPA Example</name>
<licenses>
@ -18,7 +18,7 @@
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<org.jooq.version>3.11.0-SNAPSHOT</org.jooq.version>
<org.jooq.version>3.11.0</org.jooq.version>
<org.h2.version>1.4.195</org.h2.version>
<org.hibernate.version>5.2.13.Final</org.hibernate.version>
<org.springframework.version>4.3.8.RELEASE</org.springframework.version>

View File

@ -40,7 +40,7 @@ import org.jooq.impl.TableImpl;
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class Actor extends TableImpl<ActorRecord> {
private static final long serialVersionUID = -1063584915;
private static final long serialVersionUID = 1651750394;
/**
* The reference instance of <code>PUBLIC.ACTOR</code>
@ -99,7 +99,7 @@ public class Actor extends TableImpl<ActorRecord> {
super(alias, null, aliased, parameters, DSL.comment(""));
}
<O extends Record> Actor(Table<O> child, ForeignKey<O, ActorRecord> key) {
public <O extends Record> Actor(Table<O> child, ForeignKey<O, ActorRecord> key) {
super(child, key, ACTOR);
}

View File

@ -41,7 +41,7 @@ import org.jooq.impl.TableImpl;
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class Film extends TableImpl<FilmRecord> {
private static final long serialVersionUID = 1814763098;
private static final long serialVersionUID = 1521142277;
/**
* The reference instance of <code>PUBLIC.FILM</code>
@ -115,7 +115,7 @@ public class Film extends TableImpl<FilmRecord> {
super(alias, null, aliased, parameters, DSL.comment(""));
}
<O extends Record> Film(Table<O> child, ForeignKey<O, FilmRecord> key) {
public <O extends Record> Film(Table<O> child, ForeignKey<O, FilmRecord> key) {
super(child, key, FILM);
}

View File

@ -40,7 +40,7 @@ import org.jooq.impl.TableImpl;
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class Language extends TableImpl<LanguageRecord> {
private static final long serialVersionUID = -1003312401;
private static final long serialVersionUID = -730364796;
/**
* The reference instance of <code>PUBLIC.LANGUAGE</code>
@ -94,7 +94,7 @@ public class Language extends TableImpl<LanguageRecord> {
super(alias, null, aliased, parameters, DSL.comment(""));
}
<O extends Record> Language(Table<O> child, ForeignKey<O, LanguageRecord> key) {
public <O extends Record> Language(Table<O> child, ForeignKey<O, LanguageRecord> key) {
super(child, key, LANGUAGE);
}

View File

@ -20,7 +20,7 @@
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<kotlin.version>1.2.30</kotlin.version>
<org.jooq.version>3.11.0-SNAPSHOT</org.jooq.version>
<org.jooq.version>3.11.0</org.jooq.version>
<org.h2.version>1.4.195</org.h2.version>
<java.version>1.8</java.version>
</properties>

View File

@ -41,7 +41,7 @@ import org.jooq.impl.TableImpl;
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class Author extends TableImpl<AuthorRecord> {
private static final long serialVersionUID = -33303089;
private static final long serialVersionUID = -2120467788;
/**
* The reference instance of <code>PUBLIC.AUTHOR</code>
@ -115,7 +115,7 @@ public class Author extends TableImpl<AuthorRecord> {
super(alias, null, aliased, parameters, DSL.comment(""));
}
<O extends Record> Author(Table<O> child, ForeignKey<O, AuthorRecord> key) {
public <O extends Record> Author(Table<O> child, ForeignKey<O, AuthorRecord> key) {
super(child, key, AUTHOR);
}

View File

@ -41,7 +41,7 @@ import org.jooq.impl.TableImpl;
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class Book extends TableImpl<BookRecord> {
private static final long serialVersionUID = 412161267;
private static final long serialVersionUID = 294553526;
/**
* The reference instance of <code>PUBLIC.BOOK</code>
@ -140,7 +140,7 @@ public class Book extends TableImpl<BookRecord> {
super(alias, null, aliased, parameters, DSL.comment(""));
}
<O extends Record> Book(Table<O> child, ForeignKey<O, BookRecord> key) {
public <O extends Record> Book(Table<O> child, ForeignKey<O, BookRecord> key) {
super(child, key, BOOK);
}

View File

@ -39,7 +39,7 @@ import org.jooq.impl.TableImpl;
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class BookStore extends TableImpl<BookStoreRecord> {
private static final long serialVersionUID = -15217694;
private static final long serialVersionUID = -153566641;
/**
* The reference instance of <code>PUBLIC.BOOK_STORE</code>
@ -88,7 +88,7 @@ public class BookStore extends TableImpl<BookStoreRecord> {
super(alias, null, aliased, parameters, DSL.comment(""));
}
<O extends Record> BookStore(Table<O> child, ForeignKey<O, BookStoreRecord> key) {
public <O extends Record> BookStore(Table<O> child, ForeignKey<O, BookStoreRecord> key) {
super(child, key, BOOK_STORE);
}

View File

@ -19,7 +19,7 @@
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<org.springframework.version>3.2.6.RELEASE</org.springframework.version>
<org.jooq.version>3.11.0-SNAPSHOT</org.jooq.version>
<org.jooq.version>3.11.0</org.jooq.version>
<org.h2.version>1.4.195</org.h2.version>
</properties>

View File

@ -18,7 +18,7 @@
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<org.jooq.version>3.11.0-SNAPSHOT</org.jooq.version>
<org.jooq.version>3.11.0</org.jooq.version>
<db.oracle.version>11</db.oracle.version>
</properties>

View File

@ -9,7 +9,7 @@
<version>1.0</version>
<properties>
<org.jooq.version>3.11.0-SNAPSHOT</org.jooq.version>
<org.jooq.version>3.11.0</org.jooq.version>
</properties>
<build>

View File

@ -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<Object> {
private static final long serialVersionUID = 980601066;
/**
* The parameter <code>public.last_updated.RETURN_VALUE</code>.
*/
public static final Parameter<Object> 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);
}
}

View File

@ -19,7 +19,7 @@
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<org.springframework.version>3.2.6.RELEASE</org.springframework.version>
<org.jooq.version>3.11.0-SNAPSHOT</org.jooq.version>
<org.jooq.version>3.11.0</org.jooq.version>
<org.h2.version>1.4.195</org.h2.version>
</properties>

View File

@ -26,7 +26,7 @@
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<start-class>org.jooq.example.spring.Application</start-class>
<jooq.version>3.11.0-SNAPSHOT</jooq.version>
<jooq.version>3.11.0</jooq.version>
<java.version>1.8</java.version>
</properties>

View File

@ -19,7 +19,7 @@
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<org.springframework.version>4.3.10.RELEASE</org.springframework.version>
<org.jooq.version>3.11.0-SNAPSHOT</org.jooq.version>
<org.jooq.version>3.11.0</org.jooq.version>
<org.h2.version>1.4.195</org.h2.version>
<java.version>1.8</java.version>
</properties>

View File

@ -19,7 +19,7 @@
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<org.springframework.version>4.2.4.RELEASE</org.springframework.version>
<org.jooq.version>3.11.0-SNAPSHOT</org.jooq.version>
<org.jooq.version>3.11.0</org.jooq.version>
<org.h2.version>1.4.195</org.h2.version>
</properties>

View File

@ -6,7 +6,7 @@
<parent>
<groupId>org.jooq</groupId>
<artifactId>jooq-parent</artifactId>
<version>3.11.0-SNAPSHOT</version>
<version>3.11.0</version>
</parent>
<groupId>org.jooq</groupId>

View File

@ -6,7 +6,7 @@
<parent>
<groupId>org.jooq</groupId>
<artifactId>jooq-parent</artifactId>
<version>3.11.0-SNAPSHOT</version>
<version>3.11.0</version>
</parent>
<groupId>org.jooq</groupId>

View File

@ -3,7 +3,7 @@
<property name="dir.workspace" value="${basedir}/.." />
<property name="dir.target" value="${basedir}/target" />
<property name="dir.release" value="${basedir}/release" />
<property name="version-prefix" value="3.11.0-SNAPSHOT"/>
<property name="version-prefix" value="3.11.0"/>
<!-- Run a full mvn clean package install deploy first before this -->
<target name="copy-lib-javadoc">
@ -21,7 +21,7 @@
<mkdir dir="${dir.release}/${dir.version}/jOOQ-pom/jooq-scala_2.11"/>
<mkdir dir="${dir.release}/${dir.version}/jOOQ-pom/jooq-scala_2.12"/>
<copy todir="${dir.release}/${dir.version}/jOOQ-lib" file="${dir.workspace}/jOOQ/target/jooq-${version-prefix}.jar"/>
@ -35,7 +35,7 @@
<copy todir="${dir.release}/${dir.version}/jOOQ-lib" file="${dir.workspace}/jOOQ-scala_2.11/target/jooq-scala_2.11-${version-prefix}.jar"/>
<copy todir="${dir.release}/${dir.version}/jOOQ-lib" file="${dir.workspace}/jOOQ-scala_2.12/target/jooq-scala_2.12-${version-prefix}.jar"/>
<copy todir="${dir.release}/${dir.version}/jOOQ-javadoc" file="${dir.workspace}/jOOQ/target/jooq-${version-prefix}-javadoc.jar"/>
@ -49,7 +49,7 @@
<copy todir="${dir.release}/${dir.version}/jOOQ-javadoc" file="${dir.workspace}/jOOQ-scala_2.11/target/jooq-scala_2.11-${version-prefix}-javadoc.jar"/>
<copy todir="${dir.release}/${dir.version}/jOOQ-javadoc" file="${dir.workspace}/jOOQ-scala_2.12/target/jooq-scala_2.12-${version-prefix}-javadoc.jar"/>
<copy todir="${dir.release}/${dir.version}/jOOQ-pom" file="${dir.workspace}/pom.xml"/>
@ -64,7 +64,7 @@
<copy todir="${dir.release}/${dir.version}/jOOQ-pom/jooq-scala_2.11" file="${dir.workspace}/jOOQ-scala_2.11/pom.xml"/>
<copy todir="${dir.release}/${dir.version}/jOOQ-pom/jooq-scala_2.12" file="${dir.workspace}/jOOQ-scala_2.12/pom.xml"/>
</target>
@ -83,7 +83,7 @@
<copy todir="${dir.release}/${dir.version}/jOOQ-src" file="${dir.workspace}/jOOQ-scala_2.11/target/jooq-scala_2.11-${version-prefix}-sources.jar"/>
<copy todir="${dir.release}/${dir.version}/jOOQ-src" file="${dir.workspace}/jOOQ-scala_2.12/target/jooq-scala_2.12-${version-prefix}-sources.jar"/>
<zip destfile="${dir.release}/${dir.version}/jOOQ-src/jooq-${version-prefix}-all-sources.zip">

View File

@ -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:
<pre>
SELECT author.first_name, author.last_name, book.title
FROM book
JOIN author ON book.author_id = author.id
</pre>
We would like to be able to access those columns directly, using this notation:
<pre>
SELECT book.author.first_name, book.author.last_name, book.title
FROM book
</pre>
The join is implied and should be added implicitly. jOOQ now allows for this to
happen when you use the code generator:
<pre>
ctx.select(BOOK.author().FIRST_NAME, BOOK.author().LAST_NAME, BOOK.TITLE)
.from(BOOK)
.fetch();
</pre>
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:
<pre>
DECLARE
l_var NUMBER(10);
BEGIN
l_var := 10;
dbms_output.put_line(l_var);
END;
</pre>
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:
<pre>
$ java -jar jooq-3.10.0.jar -f -t ORACLE -s "SELECT * FROM (VALUES(1),(2)) AS t(a)"
</pre>
To get:
<pre>
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;
</pre>
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 <link rel="canonical"/> references from older Javadocs/manuals to the latest versions
#4627 - Support Java 8 constructor parameter reflection in DefaultRecordMapper
#4888 - Add <serializablePojos/> 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 <clean/> to <target/> 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 <fullyQualifiedTypes/> 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 <catalogs/> to <information_schema>
#6661 - Add support for catalogs in the XMLGenerator
#6662 - Support new <catalogs/> element in DSLContext.meta()
#6663 - Support new <catalogs/> 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<T1>, ..., Field<TN>)
#6718 - Add missing overload DSLContext.newResult(Collection<? extends Field<?>>)
#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 <jpaVersion/> 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<? extends Table<?>>)
#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 <forcedType/> applied to table valued function result
#6951 - Add <includeTriggerRoutines/> flag to exclude the generation of PostgreSQL trigger routines
#6955 - [#6772] Added a new flag `jpaVersion` to code generator.
#6958 - Generate hint about <deprecationOnUnknownType/> in Javadoc
#6962 - Add code generator flags for <globalKeyReferences/>
#6963 - Add section to the manual about the <globalXYZReferences/> 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<T>, 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<? extends Throwable>)
#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 <interfaces/> = true
#7069 - Add ParserException.sql(), position(), line(), column()
#7073 - Add <nullability/> to <forcedType/> 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<T>)
#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<T> DSLContext.fetchValues(Table<? extends Record1<T>>)
#7188 - Upgrade Hibernate dependency in jOOQ-meta-extensions to 5.2.13
#7210 - Add <serializableInterfaces/> 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 <forceIntegerTypesOnZeroScaleDecimals/> 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<T>, Field<T>)
#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 <javaTimeTypes> 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 - <validationAnnotations/> should generate Size annotations also for (VAR)BINARY types
#7343 - Add <includePackageConstants>, <includePackageRoutines>, <includePackageUDTs> 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 <SQLDialect>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<? super T, A, R>)
#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<? extends Field<?>>)
#7483 - Deprecate DSL.getDataType()
#7484 - Add DSLContext.selectFrom(Name) and selectFrom(String) overloads
#7491 - Emulate ON CONFLICT .. DO UPDATE .. WHERE <p> on SQL Server using WHEN MATCHED AND <p>
#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 <matchers/>
#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<? extends Throwable>)
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 <includes>.*</includes>
#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 <deprecationOnUnknownType/> 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 <col> AS <alias> 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 - <deprecationOnUnknownTypes/> 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 <globalObjectReferences/> is set to false
#5574 - In MySQL, an incorrect column default is generated when the default is CURRENT_TIMESTAMP
#5688 - PostgreSQL RETURNING <col> AS <alias> 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 - <deprecationOnUnknownTypes/> 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 <enumConverter/> 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 <includes>.*</includes>
#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 <customType/> 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 <matchers/>
#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 <name/> 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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -7,7 +7,7 @@
<parent>
<groupId>org.jooq</groupId>
<artifactId>jooq-parent</artifactId>
<version>3.11.0-SNAPSHOT</version>
<version>3.11.0</version>
</parent>
<groupId>org.jooq</groupId>

View File

@ -7,7 +7,7 @@
<parent>
<groupId>org.jooq</groupId>
<artifactId>jooq-parent</artifactId>
<version>3.11.0-SNAPSHOT</version>
<version>3.11.0</version>
</parent>
<groupId>org.jooq</groupId>

View File

@ -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();
}
}

View File

@ -532,9 +532,6 @@ abstract class AbstractQuery extends AbstractQueryPart implements Query {
@ -550,8 +547,6 @@ abstract class AbstractQuery extends AbstractQueryPart implements Query {
/**
* {@inheritDoc}
*/

View File

@ -12,7 +12,7 @@
<groupId>org.jooq</groupId>
<artifactId>jooq-parent</artifactId>
<version>3.11.0-SNAPSHOT</version>
<version>3.11.0</version>
<packaging>pom</packaging>
<name>jOOQ Parent</name>