This is an automated email from the ASF dual-hosted git repository.

RaigorJiang 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 9ad3d5e7203 preserve the case of the rule name when drop encrypt rule 
(#38713)
9ad3d5e7203 is described below

commit 9ad3d5e720308cb05a9df919d405e0424384fb65
Author: jiangML <[email protected]>
AuthorDate: Fri May 22 23:46:49 2026 +0800

    preserve the case of the rule name when drop encrypt rule (#38713)
---
 .../handler/update/DropEncryptRuleExecutor.java       |  7 +++++--
 .../handler/update/DropEncryptRuleExecutorTest.java   | 19 +++++++++++++++++++
 2 files changed, 24 insertions(+), 2 deletions(-)

diff --git 
a/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropEncryptRuleExecutor.java
 
b/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropEncryptRuleExecutor.java
index 9c88f5b050f..ab2a796b3a3 100644
--- 
a/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropEncryptRuleExecutor.java
+++ 
b/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropEncryptRuleExecutor.java
@@ -70,8 +70,11 @@ public final class DropEncryptRuleExecutor implements 
DatabaseRuleDropExecutor<D
         Collection<EncryptTableRuleConfiguration> toBeDroppedTables = new 
LinkedList<>();
         Map<String, AlgorithmConfiguration> toBeDroppedEncryptors = new 
HashMap<>(sqlStatement.getTables().size(), 1F);
         for (String each : sqlStatement.getTables()) {
-            toBeDroppedTables.add(new EncryptTableRuleConfiguration(each, 
Collections.emptyList()));
-            dropRule(each);
+            Optional<EncryptTableRuleConfiguration> tableRuleConfig = 
rule.getConfiguration().getTables().stream().filter(optional -> 
optional.getName().equalsIgnoreCase(each)).findFirst();
+            if (tableRuleConfig.isPresent()) {
+                toBeDroppedTables.add(new 
EncryptTableRuleConfiguration(tableRuleConfig.get().getName(), 
Collections.emptyList()));
+                dropRule(tableRuleConfig.get().getName());
+            }
         }
         
UnusedAlgorithmFinder.findUnusedEncryptor(rule.getConfiguration()).forEach(each 
-> toBeDroppedEncryptors.put(each, 
rule.getConfiguration().getEncryptors().get(each)));
         return new EncryptRuleConfiguration(toBeDroppedTables, 
toBeDroppedEncryptors);
diff --git 
a/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropEncryptRuleExecutorTest.java
 
b/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropEncryptRuleExecutorTest.java
index f12de877234..e8796f7fdc9 100644
--- 
a/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropEncryptRuleExecutorTest.java
+++ 
b/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropEncryptRuleExecutorTest.java
@@ -74,6 +74,18 @@ class DropEncryptRuleExecutorTest {
         metaDataManagerPersistService.alterRuleConfiguration(any(), 
ArgumentMatchers.argThat(this::assertRuleConfiguration));
     }
     
+    @Test
+    void assertBuildToBeDroppedRuleConfigurationUsesOriginalCaseTableName() {
+        EncryptRuleConfiguration ruleConfig = 
createCurrentRuleConfigurationWithCaseSensitiveTableName();
+        EncryptRule rule = mock(EncryptRule.class);
+        when(rule.getConfiguration()).thenReturn(ruleConfig);
+        DropEncryptRuleExecutor executor = new DropEncryptRuleExecutor();
+        executor.setRule(rule);
+        EncryptRuleConfiguration actual = 
executor.buildToBeDroppedRuleConfiguration(createSQLStatement("T_ENCRYPT"));
+        assertThat(actual.getTables().size(), is(1));
+        assertThat(actual.getTables().iterator().next().getName(), 
is("t_Encrypt"));
+    }
+    
     private boolean assertRuleConfiguration(final EncryptRuleConfiguration 
actual) {
         assertThat(actual.getTables().size(), is(1));
         assertThat(actual.getEncryptors().size(), is(3));
@@ -138,6 +150,13 @@ class DropEncryptRuleExecutorTest {
                 new EncryptTableRuleConfiguration("t_encrypt_another", 
Collections.singleton(columnRuleConfig)))), encryptors);
     }
     
+    private EncryptRuleConfiguration 
createCurrentRuleConfigurationWithCaseSensitiveTableName() {
+        EncryptColumnRuleConfiguration columnRuleConfig = new 
EncryptColumnRuleConfiguration("user_id", new 
EncryptColumnItemRuleConfiguration("user_cipher", "t_encrypt_user_id_MD5"));
+        EncryptTableRuleConfiguration tableRuleConfig = new 
EncryptTableRuleConfiguration("t_Encrypt", 
Collections.singleton(columnRuleConfig));
+        Map<String, AlgorithmConfiguration> encryptors = 
Collections.singletonMap("t_encrypt_user_id_MD5", new 
AlgorithmConfiguration("TEST", new Properties()));
+        return new EncryptRuleConfiguration(new 
LinkedList<>(Collections.singleton(tableRuleConfig)), encryptors);
+    }
+    
     private ContextManager mockContextManager(final EncryptRule rule) {
         ContextManager result = mock(ContextManager.class, RETURNS_DEEP_STUBS);
         ShardingSphereDatabase database =

Reply via email to