You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Once #3935 is resolved, we might end up with no VisitListeners in the AbstractContext type, if clients aren't using any visit listeners. This means that we don't need to create any related instances of ArrayDeque in the AbstractContext:
// [#2665] VisitListener APIfinalVisitListener[] visitListeners;
privatefinalDeque<Clause> visitClauses; // Unneeded, if visitListeners.length == 0privatefinalDefaultVisitContextvisitContext; // Unneeded, if visitListeners.length == 0privatefinalDeque<QueryPart> visitParts; // Unneeded, if visitListeners.length == 0
Neither do we need to push and pop QueryParts onto these stacks. Avoiding to do so will decrease the pressure on GC, as well as speed up AST traversal in general. In a benchmark run against H2, this accounts for an improvement of 20%!
================================================================================
This is a patch release with some useful fixes for the 3.7 branch
Features and Improvements
-------------------------
#3073 - Distribute commercial jOOQ artifacts under a different groupId to avoid conflicts
#4620 - Change error message when jOOQ-meta database type could not be found
#4659 - Significant overhead caused by type lookup when using DSL.val(T) or DSL.inline(T) in org.jooq.impl.Limit
#4721 - Add Javadoc examples to DSL.using(String), showing proper use with try-with-resources
Bug Fixes
---------
#3935 - InternalVisitListener accounts for a lot of CPU load
#4624 - Column of type "TIMESTAMP WITH TIME ZONE" lead to invalid TableImpl in 3.7.0
#4626 - Zero-length DAO source files generated for non-updatable tables
#4634 - Significant CPU overhead in CursorImpl$CursorIterator#fetchOne() due to frequent HashMap access
#4637 - Regression in Table.onKey(ForeignKey) with multiple joins
#4638 - Misleading ReferenceImpl.toString() implementation
#4642 - Significant schema mapping initialisation overhead when schema mapping isn't even used
#4646 - Significant overhead from Scope.data() Map access
#4651 - Significant overhead caused by AbstractContext's internal ArrayDeque stacks that created even if there are no VisitListeners
#4664 - Inefficent initialisation of SortFieldList and other QueryPartLists
#4668 - Significant overhead caused by check if FROM clause is needed
#4672 - Too many context objects are created when generating SQL
Once #3935 is resolved, we might end up with no
VisitListeners
in theAbstractContext
type, if clients aren't using any visit listeners. This means that we don't need to create any related instances ofArrayDeque
in theAbstractContext
:Neither do we need to push and pop
QueryParts
onto these stacks. Avoiding to do so will decrease the pressure on GC, as well as speed up AST traversal in general. In a benchmark run against H2, this accounts for an improvement of 20%!The text was updated successfully, but these errors were encountered: