This is an automated email from the ASF dual-hosted git repository. duanzhengqiang 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 78698896fb7 Fix table metadata check uniformed (#35341) 78698896fb7 is described below commit 78698896fb7f9467a76a7aa5c2dbd09f207fc3c0 Author: ZhangCheng <chengzh...@apache.org> AuthorDate: Tue May 6 18:15:24 2025 +0800 Fix table metadata check uniformed (#35341) * Fix table metadata check uniformed * Fix table metadata check uniformed --- .../ShardingSchemaTableAggregationReviser.java | 2 +- .../ShardingSchemaTableAggregationReviserTest.java | 28 +++++++++++++++++++--- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/schema/ShardingSchemaTableAggregationReviser.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/schema/ShardingSchemaTableAggregationReviser.java index ebcfe4a8951..bc8fc30399b 100644 --- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/schema/ShardingSchemaTableAggregationReviser.java +++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/schema/ShardingSchemaTableAggregationReviser.java @@ -62,7 +62,7 @@ public final class ShardingSchemaTableAggregationReviser implements SchemaTableA private void checkUniformed(final String logicTableName, final Collection<TableMetaData> tableMetaDataList) { TableMetaData sample = tableMetaDataList.iterator().next(); Collection<TableMetaDataViolation> violations = tableMetaDataList.stream() - .filter(each -> !sample.equals(each)).map(each -> new TableMetaDataViolation(each.getName(), each)).collect(Collectors.toList()); + .filter(each -> !sample.toString().equals(each.toString())).map(each -> new TableMetaDataViolation(each.getName(), each)).collect(Collectors.toList()); ShardingSpherePreconditions.checkMustEmpty(violations, () -> new RuleAndStorageMetaDataMismatchedException(createErrorReason(logicTableName, violations))); } diff --git a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/metadata/reviser/schema/ShardingSchemaTableAggregationReviserTest.java b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/metadata/reviser/schema/ShardingSchemaTableAggregationReviserTest.java index 1f12f362eec..384800d4e2e 100644 --- a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/metadata/reviser/schema/ShardingSchemaTableAggregationReviserTest.java +++ b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/metadata/reviser/schema/ShardingSchemaTableAggregationReviserTest.java @@ -18,11 +18,14 @@ package org.apache.shardingsphere.sharding.metadata.reviser.schema; import org.apache.shardingsphere.infra.database.core.metadata.data.model.ColumnMetaData; +import org.apache.shardingsphere.infra.database.core.metadata.data.model.ConstraintMetaData; +import org.apache.shardingsphere.infra.database.core.metadata.data.model.IndexMetaData; import org.apache.shardingsphere.infra.database.core.metadata.data.model.TableMetaData; import org.apache.shardingsphere.infra.exception.kernel.metadata.RuleAndStorageMetaDataMismatchedException; import org.apache.shardingsphere.sharding.rule.ShardingRule; import org.junit.jupiter.api.Test; +import java.util.Arrays; import java.util.Collection; import java.util.Collections; @@ -44,11 +47,30 @@ class ShardingSchemaTableAggregationReviserTest { @Test void assertAggregateSuccessWithCheckTableMetaDataEnabled() { - TableMetaData tableMetaData = new TableMetaData("foo_tbl", null, null, null); + TableMetaData tableMetaData1 = createTableMetadata(); + TableMetaData tableMetaData2 = createTableMetadata(); ShardingSchemaTableAggregationReviser reviser = new ShardingSchemaTableAggregationReviser(true); - reviser.add(tableMetaData); + reviser.add(tableMetaData1); + reviser.add(tableMetaData2); Collection<TableMetaData> actual = reviser.aggregate(mock(ShardingRule.class)); - assertThat(actual, is(Collections.singletonList(tableMetaData))); + assertThat(actual, is(Collections.singletonList(tableMetaData1))); + } + + private TableMetaData createTableMetadata() { + return new TableMetaData("foo_tbl", Arrays.asList(createColumnMetaData("id"), createColumnMetaData("name")), Arrays.asList(createIndexMetaData("id"), createIndexMetaData("name")), + Arrays.asList(createConstraintMetaData("id"), createConstraintMetaData("name"))); + } + + private ColumnMetaData createColumnMetaData(final String columnName) { + return new ColumnMetaData(columnName, 1, true, false, true, true, true, true); + } + + private static IndexMetaData createIndexMetaData(final String columnName) { + return new IndexMetaData("idx_" + columnName, Collections.singletonList(columnName)); + } + + private static ConstraintMetaData createConstraintMetaData(final String name) { + return new ConstraintMetaData("constraint_" + name, "foo_tbl"); } @Test