From 07c0b555611dd616353b0fb157b9e616da9139dd Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Tue, 15 Sep 2020 17:25:17 +0200 Subject: [PATCH] [jOOQ/jOOQ#10635] AbstractQueryPart::equals might not work when one QueryPart has a different Configuration than the other --- .../main/java/org/jooq/impl/AbstractQueryPart.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractQueryPart.java b/jOOQ/src/main/java/org/jooq/impl/AbstractQueryPart.java index 2935463fff..ed2596e253 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractQueryPart.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractQueryPart.java @@ -156,17 +156,19 @@ abstract class AbstractQueryPart implements QueryPartInternal { @Override public boolean equals(Object that) { - if (this == that) { + if (this == that) return true; - } // This is a working default implementation. It should be overridden by // concrete subclasses, to improve performance if (that instanceof QueryPart) { - DSLContext dsl = configuration().dsl(); - String sql1 = dsl.renderInlined(this); - String sql2 = dsl.renderInlined((QueryPart) that); + // [#10635] The two QueryParts may have different Settings attached. + DSLContext dsl1 = configuration().dsl(); + DSLContext dsl2 = that instanceof AbstractQueryPart ? ((AbstractQueryPart) that).configuration().dsl() : dsl1; + + String sql1 = dsl1.renderInlined(this); + String sql2 = dsl2.renderInlined((QueryPart) that); return sql1.equals(sql2); }