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

iamhucong 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 f18bc540654 Minor refactor encrypt rewrite logic (#39165)
f18bc540654 is described below

commit f18bc5406544b7b53c55b379a31ac5cb55f73913
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Fri Jul 17 15:51:31 2026 +0800

    Minor refactor encrypt rewrite logic (#39165)
---
 .../context/EncryptSQLRewriteContextDecorator.java | 10 +++++++--
 .../EncryptInsertDefaultColumnsTokenGenerator.java | 24 +++++++++++++++-------
 2 files changed, 25 insertions(+), 9 deletions(-)

diff --git 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/context/EncryptSQLRewriteContextDecorator.java
 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/context/EncryptSQLRewriteContextDecorator.java
index e84fd65dddf..d1bf99f04e7 100644
--- 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/context/EncryptSQLRewriteContextDecorator.java
+++ 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/context/EncryptSQLRewriteContextDecorator.java
@@ -59,13 +59,19 @@ public final class EncryptSQLRewriteContextDecorator 
implements SQLRewriteContex
             Collection<ParameterRewriter> parameterRewriters = new 
ParameterRewritersBuilder(sqlStatementContext).build(rewritersRegistry);
             rewriteParameters(sqlRewriteContext, parameterRewriters);
         }
-        SQLTokenGeneratorBuilder sqlTokenGeneratorBuilder = 
createSQLTokenGeneratorBuilder(rule, sqlRewriteContext, sqlStatementContext, 
encryptConditions);
+        SQLTokenGeneratorBuilder sqlTokenGeneratorBuilder =
+                createSQLTokenGeneratorBuilder(rule, sqlRewriteContext, 
sqlStatementContext, encryptConditions);
         
sqlRewriteContext.addSQLTokenGenerators(sqlTokenGeneratorBuilder.getSQLTokenGenerators());
     }
     
     private boolean containsEncryptTable(final EncryptRule rule, final 
SQLStatementContext sqlStatementContext) {
+        return containsEncryptTableInCurrentContext(rule, sqlStatementContext);
+    }
+    
+    private boolean containsEncryptTableInCurrentContext(final EncryptRule 
rule, final SQLStatementContext sqlStatementContext) {
         for (SimpleTableSegment each : 
sqlStatementContext.getTablesContext().getSimpleTables()) {
-            if 
(rule.findEncryptTable(each.getTableName().getIdentifier().getValue()).isPresent())
 {
+            String tableName = each.getTableName().getIdentifier().getValue();
+            if (rule.findEncryptTable(tableName).isPresent()) {
                 return true;
             }
         }
diff --git 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertDefaultColumnsTokenGenerator.java
 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertDefaultColumnsTokenGenerator.java
index ddb5297edf7..6b990bba4a5 100644
--- 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertDefaultColumnsTokenGenerator.java
+++ 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertDefaultColumnsTokenGenerator.java
@@ -23,6 +23,7 @@ import lombok.Setter;
 import 
org.apache.shardingsphere.database.connector.core.metadata.database.enums.QuoteCharacter;
 import 
org.apache.shardingsphere.database.connector.core.type.DatabaseTypeRegistry;
 import 
org.apache.shardingsphere.encrypt.checker.cryptographic.InsertSelectColumnsEncryptorChecker;
+import 
org.apache.shardingsphere.encrypt.exception.metadata.EncryptTableNotFoundException;
 import org.apache.shardingsphere.encrypt.rule.EncryptRule;
 import org.apache.shardingsphere.encrypt.rule.column.EncryptColumn;
 import org.apache.shardingsphere.encrypt.rule.table.EncryptTable;
@@ -64,13 +65,22 @@ public final class 
EncryptInsertDefaultColumnsTokenGenerator implements Optional
     
     @Override
     public UseDefaultInsertColumnsToken generateSQLToken(final 
InsertStatementContext insertStatementContext) {
-        String tableName = 
insertStatementContext.getSqlStatement().getTable().map(optional -> 
optional.getTableName().getIdentifier().getValue()).orElse("");
+        String tableName = getTableName(insertStatementContext);
+        EncryptTable encryptTable = 
findEncryptTable(insertStatementContext).orElseThrow(() -> new 
EncryptTableNotFoundException(tableName));
         Optional<UseDefaultInsertColumnsToken> previousSQLToken = 
findInsertColumnsToken();
         if (previousSQLToken.isPresent()) {
-            processPreviousSQLToken(previousSQLToken.get(), 
insertStatementContext, tableName);
+            processPreviousSQLToken(previousSQLToken.get(), 
insertStatementContext, encryptTable);
             return previousSQLToken.get();
         }
-        return generateNewSQLToken(insertStatementContext, tableName);
+        return generateNewSQLToken(insertStatementContext, encryptTable);
+    }
+    
+    private Optional<EncryptTable> findEncryptTable(final 
InsertStatementContext insertStatementContext) {
+        return rule.findEncryptTable(getTableName(insertStatementContext));
+    }
+    
+    private String getTableName(final InsertStatementContext 
insertStatementContext) {
+        return 
insertStatementContext.getSqlStatement().getTable().map(optional -> 
optional.getTableName().getIdentifier().getValue()).orElse("");
     }
     
     private Optional<UseDefaultInsertColumnsToken> findInsertColumnsToken() {
@@ -82,13 +92,13 @@ public final class 
EncryptInsertDefaultColumnsTokenGenerator implements Optional
         return Optional.empty();
     }
     
-    private void processPreviousSQLToken(final UseDefaultInsertColumnsToken 
previousSQLToken, final InsertStatementContext insertStatementContext, final 
String tableName) {
-        List<String> columnNames = getColumnNames(insertStatementContext, 
rule.getEncryptTable(tableName), previousSQLToken.getColumns());
+    private void processPreviousSQLToken(final UseDefaultInsertColumnsToken 
previousSQLToken, final InsertStatementContext insertStatementContext, final 
EncryptTable encryptTable) {
+        List<String> columnNames = getColumnNames(insertStatementContext, 
encryptTable, previousSQLToken.getColumns());
         previousSQLToken.getColumns().clear();
         previousSQLToken.getColumns().addAll(columnNames);
     }
     
-    private UseDefaultInsertColumnsToken generateNewSQLToken(final 
InsertStatementContext insertStatementContext, final String tableName) {
+    private UseDefaultInsertColumnsToken generateNewSQLToken(final 
InsertStatementContext insertStatementContext, final EncryptTable encryptTable) 
{
         Optional<InsertColumnsSegment> insertColumnsSegment = 
insertStatementContext.getSqlStatement().getInsertColumns();
         Preconditions.checkState(insertColumnsSegment.isPresent());
         if (null != insertStatementContext.getInsertSelectContext()) {
@@ -99,7 +109,7 @@ public final class EncryptInsertDefaultColumnsTokenGenerator 
implements Optional
         }
         QuoteCharacter quoteCharacter = new 
DatabaseTypeRegistry(insertStatementContext.getSqlStatement().getDatabaseType()).getDialectDatabaseMetaData().getQuoteCharacter();
         return new UseDefaultInsertColumnsToken(
-                insertColumnsSegment.get().getStopIndex(), 
getColumnNames(insertStatementContext, rule.getEncryptTable(tableName), 
insertStatementContext.getColumnNames()), quoteCharacter);
+                insertColumnsSegment.get().getStopIndex(), 
getColumnNames(insertStatementContext, encryptTable, 
insertStatementContext.getColumnNames()), quoteCharacter);
     }
     
     private List<String> getColumnNames(final InsertStatementContext 
sqlStatementContext, final EncryptTable encryptTable, final List<String> 
currentColumnNames) {

Reply via email to