This is an automated email from the ASF dual-hosted git repository. menghaoran pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push: new 99aef45f4fe Improve QualifiedTable equals (#35297) 99aef45f4fe is described below commit 99aef45f4fe7eafbbca1ca7092f15fdb883fd460 Author: Hongsheng Zhong <zhonghongsh...@apache.org> AuthorDate: Wed Apr 30 16:30:50 2025 +0800 Improve QualifiedTable equals (#35297) --- .../metadata/database/schema/QualifiedTable.java | 19 +++++++++++++-- .../database/schema/QualifiedTableTest.java | 28 ++++++++++++++++++++++ 2 files changed, 45 insertions(+), 2 deletions(-) diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/QualifiedTable.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/QualifiedTable.java index 9579c562a60..c6a77a95010 100644 --- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/QualifiedTable.java +++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/QualifiedTable.java @@ -17,13 +17,13 @@ package org.apache.shardingsphere.infra.metadata.database.schema; -import lombok.EqualsAndHashCode; import org.apache.shardingsphere.infra.metadata.identifier.ShardingSphereIdentifier; +import java.util.Objects; + /** * Qualified table. */ -@EqualsAndHashCode public final class QualifiedTable { private final ShardingSphereIdentifier schemaName; @@ -53,6 +53,21 @@ public final class QualifiedTable { return tableName.getValue(); } + @Override + public boolean equals(final Object o) { + if (null == o || getClass() != o.getClass()) { + return false; + } + QualifiedTable that = (QualifiedTable) o; + return Objects.equals(null == schemaName.getValue() ? null : schemaName, null == that.schemaName.getValue() ? null : that.schemaName) + && Objects.equals(null == tableName.getValue() ? null : tableName, null == that.tableName.getValue() ? null : that.tableName); + } + + @Override + public int hashCode() { + return Objects.hash(schemaName, tableName); + } + @Override public String toString() { return null == getSchemaName() ? getTableName() : String.join(".", getSchemaName(), getTableName()); diff --git a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/QualifiedTableTest.java b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/QualifiedTableTest.java index c571969aa81..cdb62891575 100644 --- a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/QualifiedTableTest.java +++ b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/QualifiedTableTest.java @@ -21,9 +21,37 @@ import org.junit.jupiter.api.Test; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.jupiter.api.Assertions.assertNotEquals; class QualifiedTableTest { + @Test + void assertEqualsTrueWithoutSchema() { + QualifiedTable actual = new QualifiedTable(null, "t_order"); + QualifiedTable expected = new QualifiedTable(null, "T_ORDER"); + assertThat(actual, is(expected)); + } + + @Test + void assertEqualsTrueWithSchema() { + QualifiedTable actual = new QualifiedTable("schema", "t_order"); + QualifiedTable expected = new QualifiedTable("SCHEMA", "T_ORDER"); + assertThat(actual, is(expected)); + actual = new QualifiedTable("schema", null); + expected = new QualifiedTable("SCHEMA", null); + assertThat(actual, is(expected)); + } + + @Test + void assertEqualsFalse() { + QualifiedTable actual = new QualifiedTable("schema", "t_order"); + QualifiedTable expected = new QualifiedTable(null, "t_order"); + assertNotEquals(actual, expected); + actual = new QualifiedTable("schema", "t_order"); + expected = new QualifiedTable("schema", null); + assertNotEquals(actual, expected); + } + @Test void assertToString() { assertThat(new QualifiedTable("foo_schema", "foo_tbl").toString(), is("foo_schema.foo_tbl"));