This is an automated email from the ASF dual-hosted git repository.
terrymanu 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 fd3bb0077d5 Fix constraint revision for overlapping actual table names
(#39911)
fd3bb0077d5 is described below
commit fd3bb0077d5fc01eb90322c17cc9eb5315c5cf2c
Author: Liang Zhang <[email protected]>
AuthorDate: Mon Sep 21 11:04:59 2026 +0800
Fix constraint revision for overlapping actual table names (#39911)
* Mark remaining MySQL functions unsupported in SQL Federation
* Fix constraint revision for overlapping actual table names
---
.../reviser/constraint/ShardingConstraintReviser.java | 3 +++
.../reviser/constraint/ShardingConstraintReviserTest.java | 13 ++++++++++++-
2 files changed, 15 insertions(+), 1 deletion(-)
diff --git
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/constraint/ShardingConstraintReviser.java
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/constraint/ShardingConstraintReviser.java
index 8b3deb5c2bb..86614685f4c 100644
---
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/constraint/ShardingConstraintReviser.java
+++
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/constraint/ShardingConstraintReviser.java
@@ -38,6 +38,9 @@ public final class ShardingConstraintReviser implements
ConstraintReviser<Shardi
@Override
public Optional<ConstraintMetaData> revise(final String tableName, final
ConstraintMetaData originalMetaData, final ShardingRule rule) {
for (DataNode each : shardingTable.getActualDataNodes()) {
+ if (!each.getTableName().equalsIgnoreCase(tableName)) {
+ continue;
+ }
String referencedTableName =
originalMetaData.getReferencedTableName();
Optional<String> logicIndexName =
getLogicIndex(originalMetaData.getName(), each.getTableName());
if (logicIndexName.isPresent()) {
diff --git
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/metadata/reviser/constraint/ShardingConstraintReviserTest.java
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/metadata/reviser/constraint/ShardingConstraintReviserTest.java
index 203b8b08ffc..2e644dfcd54 100644
---
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/metadata/reviser/constraint/ShardingConstraintReviserTest.java
+++
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/metadata/reviser/constraint/ShardingConstraintReviserTest.java
@@ -45,10 +45,12 @@ class ShardingConstraintReviserTest {
private ShardingRule shardingRule;
+ private ShardingTable shardingTable;
+
@BeforeEach
void setUp() {
shardingRule = createShardingRule();
- ShardingTable shardingTable = mock(ShardingTable.class);
+ shardingTable = mock(ShardingTable.class);
when(shardingTable.getActualDataNodes()).thenReturn(Arrays.asList(new
DataNode("schema_name", (String) null, "table_name_0"), new
DataNode("schema_name", (String) null, "table_name_1")));
reviser = new ShardingConstraintReviser(shardingTable);
}
@@ -68,6 +70,15 @@ class ShardingConstraintReviserTest {
assertThat(actual.get().getReferencedTableName(),
is("referenced_table_name"));
}
+ @Test
+ void assertReviseWhenActualTableNameContainsAnotherActualTableNameSuffix()
{
+ when(shardingTable.getActualDataNodes()).thenReturn(Arrays.asList(new
DataNode("foo_schema", (String) null, "foo_order"), new DataNode("foo_schema",
(String) null, "bar_foo_order")));
+ ConstraintMetaData originalMetaData = new
ConstraintMetaData("foo_fk_bar_foo_order", "foo_referenced_table");
+ Optional<ConstraintMetaData> actual = reviser.revise("bar_foo_order",
originalMetaData, shardingRule);
+ assertTrue(actual.isPresent());
+ assertThat(actual.get().getName(), is("foo_fk"));
+ }
+
@Test
void assertReviseWhenConstraintNameContainsActualTableSuffix() {
ConstraintMetaData originalMetaData = new
ConstraintMetaData("foo_table_name_1_fk_table_name_1", "referenced_table_name");