diff --git a/jOOQ/src/main/java/org/jooq/impl/TableAlias.java b/jOOQ/src/main/java/org/jooq/impl/TableAlias.java index 8babd725ba..80c7724f52 100644 --- a/jOOQ/src/main/java/org/jooq/impl/TableAlias.java +++ b/jOOQ/src/main/java/org/jooq/impl/TableAlias.java @@ -62,7 +62,13 @@ import org.jetbrains.annotations.NotNull; /** * @author Lukas Eder */ -final class TableAlias extends AbstractTable implements QOM.TableAlias, SimpleCheckQueryPart { +final class TableAlias +extends + AbstractTable +implements + QOM.TableAlias, + SimpleCheckQueryPart +{ final Alias> alias; transient FieldsImpl aliasedFields; @@ -223,9 +229,22 @@ final class TableAlias extends AbstractTable implements QOM @Override public boolean equals(Object that) { - if (that instanceof TableAlias) - return getUnqualifiedName().equals(((TableAlias) that).getUnqualifiedName()); - else - return super.equals(that); + if (this == that) + return true; + + if (that instanceof TableAlias t) + return getUnqualifiedName().equals(t.getUnqualifiedName()); + + // [#14371] Unqualified TableImpls can be equal to TableAlias + if (that instanceof TableImpl t) { + if (t.$alias() != null) + return getUnqualifiedName().equals(t.$alias()); + + // [#7172] [#10274] Cannot use getQualifiedName() yet here + else if (t.getSchema() == null) + return getUnqualifiedName().equals(t.getQualifiedName()); + } + + return super.equals(that); } } diff --git a/jOOQ/src/main/java/org/jooq/impl/TableImpl.java b/jOOQ/src/main/java/org/jooq/impl/TableImpl.java index 5f9b418f2a..978933a9b3 100644 --- a/jOOQ/src/main/java/org/jooq/impl/TableImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/TableImpl.java @@ -530,16 +530,27 @@ implements // [#2144] TableImpl equality can be decided without executing the // rather expensive implementation of AbstractQueryPart.equals() - if (that instanceof TableImpl other) { + if (that instanceof TableImpl t) { return // [#7172] [#10274] Cannot use getQualifiedName() yet here StringUtils.equals( defaultIfNull(getSchema(), DEFAULT_SCHEMA), - defaultIfNull(other.getSchema(), DEFAULT_SCHEMA) + defaultIfNull(t.getSchema(), DEFAULT_SCHEMA) ) && - StringUtils.equals(getName(), other.getName()) && - Arrays.equals(parameters, other.parameters); + StringUtils.equals(getName(), t.getName()) && + Arrays.equals(parameters, t.parameters); + } + + // [#14371] Unqualified TableImpls can be equal to TableAlias + else if (that instanceof TableAlias t) { + + if ($alias() != null) + return t.getUnqualifiedName().equals($alias()); + + // [#7172] [#10274] Cannot use getQualifiedName() yet here + else if (getSchema() == null) + return t.getUnqualifiedName().equals(getQualifiedName()); } return super.equals(that);