From 0552eb0320efbcc9d43951e09cb18eccdf6a27e0 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Wed, 27 Aug 2025 14:52:38 +0200 Subject: [PATCH] [jOOQ/jOOQ#18931] Avoid DefaultDSLContext allocation in AbstractQueryPart::equals --- jOOQ/src/main/java/org/jooq/impl/AbstractQueryPart.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractQueryPart.java b/jOOQ/src/main/java/org/jooq/impl/AbstractQueryPart.java index 1fd1d59ded..aa484bfaba 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractQueryPart.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractQueryPart.java @@ -165,8 +165,12 @@ abstract class AbstractQueryPart implements QueryPartInternal { if (that instanceof QueryPart q) { // [#10635] The two QueryParts may have different Settings attached. - DSLContext dsl1 = Tools.configuration(configuration()).dsl(); - DSLContext dsl2 = that instanceof AbstractQueryPart a ? Tools.configuration(a.configuration()).dsl() : dsl1; + Configuration c1 = Tools.configuration(configuration()); + Configuration c2 = that instanceof AbstractQueryPart a ? Tools.configuration(a.configuration()) : c1; + + // [#18931] Avoid unnecessary DSLContext allocations (e.g. in hot loops) + DSLContext dsl1 = c1.dsl(); + DSLContext dsl2 = c2 == c1 ? dsl1 : c2.dsl(); String sql1 = dsl1.renderInlined(this); String sql2 = dsl2.renderInlined(q);