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 2b71ad01fb0 Fix sharding constraint reviser removing every actual 
table suffix (#39868)
2b71ad01fb0 is described below

commit 2b71ad01fb07f20d30835cb2432b58086a994d60
Author: Eunbin Son <[email protected]>
AuthorDate: Mon Sep 21 11:36:07 2026 +0900

    Fix sharding constraint reviser removing every actual table suffix (#39868)
    
    Co-authored-by: Liang Zhang <[email protected]>
---
 RELEASE-NOTES.md                                                  | 1 +
 .../metadata/reviser/constraint/ShardingConstraintReviser.java    | 2 +-
 .../reviser/constraint/ShardingConstraintReviserTest.java         | 8 ++++++++
 3 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md
index eccaa38aa96..fd18eaf67c8 100644
--- a/RELEASE-NOTES.md
+++ b/RELEASE-NOTES.md
@@ -86,6 +86,7 @@
 1. Sharding: Compute the Snowflake key generator epoch in UTC instead of the 
JVM default timezone - 
[#38932](https://github.com/apache/shardingsphere/pull/38932)
 1. Sharding: Fix order-dependent data source intersection in Cartesian routing 
- [#39407](https://github.com/apache/shardingsphere/pull/39407)
 1. Sharding: Fix incorrect AVG(DISTINCT) merge result across shards - 
[#39429](https://github.com/apache/shardingsphere/pull/39429)
+1. Sharding: Fix sharding constraint reviser removing every actual table 
suffix - [#39868](https://github.com/apache/shardingsphere/pull/39868)
 1. Sharding: Fix DISABLE_AUDIT_NAMES hint ignoring auditor name case - 
[#39871](https://github.com/apache/shardingsphere/pull/39871)
 1. Readwrite-splitting: Evaluate inline expressions in data source names of 
rule configuration checker - 
[#39374](https://github.com/apache/shardingsphere/pull/39374)
 1. SQL Federation: Fix SQL Federation pagination binding for long LIMIT 
parameters - [#39237](https://github.com/apache/shardingsphere/pull/39237)
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 820035aa191..8b3deb5c2bb 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
@@ -50,6 +50,6 @@ public final class ShardingConstraintReviser implements 
ConstraintReviser<Shardi
     
     private Optional<String> getLogicIndex(final String actualIndexName, final 
String actualTableName) {
         String indexNameSuffix = "_" + actualTableName;
-        return actualIndexName.endsWith(indexNameSuffix) ? 
Optional.of(actualIndexName.replace(indexNameSuffix, "")) : Optional.empty();
+        return actualIndexName.endsWith(indexNameSuffix) ? 
Optional.of(actualIndexName.substring(0, actualIndexName.length() - 
indexNameSuffix.length())) : Optional.empty();
     }
 }
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 c16bab7d303..203b8b08ffc 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
@@ -68,6 +68,14 @@ class ShardingConstraintReviserTest {
         assertThat(actual.get().getReferencedTableName(), 
is("referenced_table_name"));
     }
     
+    @Test
+    void assertReviseWhenConstraintNameContainsActualTableSuffix() {
+        ConstraintMetaData originalMetaData = new 
ConstraintMetaData("foo_table_name_1_fk_table_name_1", "referenced_table_name");
+        Optional<ConstraintMetaData> actual = reviser.revise("table_name_1", 
originalMetaData, shardingRule);
+        assertTrue(actual.isPresent());
+        assertThat(actual.get().getName(), is("foo_table_name_1_fk"));
+    }
+    
     @Test
     void assertReviseWhenTableDoesNotMatch() {
         assertFalse(reviser.revise("table_name_1", new 
ConstraintMetaData("test_table_name_2", "referenced_table_name"), 
shardingRule).isPresent());

Reply via email to