From 681f14b2e84ddbdad2775a785fdc1c2694875808 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Tue, 16 Jun 2020 15:15:12 +0200 Subject: [PATCH] [jOOQ/jOOQ#7172] [jOOQ/jOOQ#10274] Fix also SchemaImpl::equals Just like TableImpl::equals, SchemaImpl::equals must not use getQualifiedName() yet, but call getCatalog() for it to work correctly with generated code. --- .../main/java/org/jooq/impl/CatalogImpl.java | 1 + .../main/java/org/jooq/impl/SchemaImpl.java | 29 +++++++++++++++++++ .../main/java/org/jooq/impl/TableImpl.java | 16 +++++----- 3 files changed, 37 insertions(+), 9 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/CatalogImpl.java b/jOOQ/src/main/java/org/jooq/impl/CatalogImpl.java index 49580bc8e3..7df8a0cc16 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CatalogImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/CatalogImpl.java @@ -66,6 +66,7 @@ public class CatalogImpl extends AbstractNamed implements Catalog { */ private static final long serialVersionUID = -3650318934053960244L; private static final Clause[] CLAUSES = { CATALOG, CATALOG_REFERENCE }; + static final Catalog DEFAULT_CATALOG = new CatalogImpl(""); public CatalogImpl(Name name) { this(name, null); diff --git a/jOOQ/src/main/java/org/jooq/impl/SchemaImpl.java b/jOOQ/src/main/java/org/jooq/impl/SchemaImpl.java index 16c1270ae4..70e1fec662 100644 --- a/jOOQ/src/main/java/org/jooq/impl/SchemaImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/SchemaImpl.java @@ -40,6 +40,8 @@ package org.jooq.impl; import static org.jooq.Clause.SCHEMA; import static org.jooq.Clause.SCHEMA_REFERENCE; +import static org.jooq.impl.CatalogImpl.DEFAULT_CATALOG; +import static org.jooq.tools.StringUtils.defaultIfNull; import java.util.Collections; import java.util.List; @@ -56,6 +58,7 @@ import org.jooq.Schema; import org.jooq.Sequence; import org.jooq.Table; import org.jooq.UDT; +import org.jooq.tools.StringUtils; /** * A common base class for database schemata @@ -218,4 +221,30 @@ public class SchemaImpl extends AbstractNamed implements Schema { return getSequences().stream(); } + + // ------------------------------------------------------------------------ + // XXX: Object API + // ------------------------------------------------------------------------ + + @Override + public boolean equals(Object that) { + if (this == that) + return true; + + // [#2144] SchemaImpl equality can be decided without executing the + // rather expensive implementation of AbstractQueryPart.equals() + if (that instanceof SchemaImpl) { + SchemaImpl other = (SchemaImpl) that; + return + + // [#7172] [#10274] Cannot use getQualifiedName() yet here + StringUtils.equals( + defaultIfNull(getCatalog(), DEFAULT_CATALOG), + defaultIfNull(other.getCatalog(), DEFAULT_CATALOG) + ) && + StringUtils.equals(getName(), other.getName()); + } + + 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 2601bbe726..b76dbe1663 100644 --- a/jOOQ/src/main/java/org/jooq/impl/TableImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/TableImpl.java @@ -229,6 +229,12 @@ public class TableImpl extends AbstractTable { return fields; } + // [#8489] this override is necessary due to a Scala compiler bug (versions 2.10 and 2.11) + @Override + public Row fieldsRow() { + return super.fieldsRow(); + } + @Override public final Clause[] clauses(Context ctx) { return alias != null ? CLAUSES_TABLE_ALIAS : CLAUSES_TABLE_REFERENCE; @@ -357,9 +363,8 @@ public class TableImpl extends AbstractTable { @Override public boolean equals(Object that) { - if (this == that) { + if (this == that) return true; - } // [#2144] TableImpl equality can be decided without executing the // rather expensive implementation of AbstractQueryPart.equals() @@ -378,11 +383,4 @@ public class TableImpl extends AbstractTable { return super.equals(that); } - - // [#8489] this override is necessary due to a Scala compiler bug (versions 2.10 and 2.11) - @Override - public Row fieldsRow() { - return super.fieldsRow(); - } - }