- [jOOQ/jOOQ#12779] Add support for MySQL COMMENT syntax in DDLDatabase
- [jOOQ/jOOQ#12772] Added QOM.CreateTable
- [jOOQ/jOOQ#13004] Add a TableElement type, a super type of Field<?> | Constraint | Index
- [jOOQ/jOOQ#13005] Deprecate FieldOrConstraint
Runtime library - language usage
- Removed [java-8] tags
- Removed F functional interfaces
- Removed Meta.Predicate functional interfaces
- Converted anonymous classes to lambdas
- Removed some explicit final keywords where effectively final works
- Removed Java 6 Jenkinsfile
- try-with-resources
- Merged some catch blocks
- Get rid of type witnesses where possible
Runtime library - JDK API usage
- Prefer Collection.sort() over Collections.sort()
- Use Map.computeIfAbsent for Map<K, List<V>> lazy initialisation
- Replace Iterator::remove calls by Collection::removeIf
- Use Map::computeIfAbsent for Map<K, List<V>> lazy initialisation
- Replace Iterator::remove calls by Collection::removeIf
- Use Comparator::comparing and Comparator::thenComparing
- Use Stream API where not performance critical
- Replaced Map::entrySet iterations by Map::forEach
- Use ResultQuery::collect
- Map::putIfAbsent
Code generation
- Generate lambda for LazySchema's LazySupplier
Unrelated
- Applied a few IntelliJ inspections
- Remove unnecessary explicit array creation
Adds a new internal `DSLContext#meta(Source...)` API which can be used to construct a `Meta` object for a list of DDL scripts (similarly to the existing `DDLDatabase`), but for other use cases such as the `Parser`.
This new method uses the new internal `Source` abstraction to represent a DDL script, which can be constructed using any of the existing static `of()` factory methods or optionally by a custom implementation class.
The "defaultNameCase" -> RenderNameCase mapping in DDLDatabase was
incorrect and caused problems.
Also explicitly declares a local variable as `final` for Java 6
compatibility.
Extracted new class DDLDatabaseInitializer from DDLDatabase. This new
class is in package `org.jooq.extensions.ddl` of Maven module
`jOOQ-extensions`.
As a consequence also renamed the configuration data keys
"org.jooq.meta.extensions.ddl.ignore-storage-clauses" and
"org.jooq.meta.extensions.ddl.parse-for-ddldatabase" to
"org.jooq.extensions.ddl.ignore-storage-clauses" and
"org.jooq.extensions.ddl.parse-for-ddldatabase" respectively.
The jOOQ 3.12 Open Source Edition will continue to support Java 8. The only things we gain from the JDK 11 dependency is:
- Updated logic for reflection when mapping into proxied default methods (that stuff has changed completely in JDK 9). This is a regression, which we can live with. The workaround is to write a custom
- Explicit dependency on the JDK 9 API, for which we provide a Java 8 compatible alternative via reactive streams anyway.
- JDBC 4.3 compatibility (mostly sharding). We currently don't use that yet.
We're not even using internally, outside of a few integration tests. So, we'll postpone the JDK 11 *requirement* (while supporting it nonetheless) to a later release, e.g. 3.13. We'll observe market share shifts. Currently Java 11's market share is a bit of a disappointment, so making it a requirement might be premature.