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

zhaojinchao 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 307c253f08c Minor refactor for encrypt insert token generator (#34575)
307c253f08c is described below

commit 307c253f08ceb5b189e200c3bdb4ed4fd30538b7
Author: Zhengqiang Duan <duanzhengqi...@apache.org>
AuthorDate: Thu Feb 6 19:11:09 2025 +0800

    Minor refactor for encrypt insert token generator (#34575)
---
 .../insert/EncryptInsertCipherNameTokenGenerator.java        | 12 +++++++-----
 .../insert/EncryptInsertDerivedColumnsTokenGenerator.java    |  8 ++++++--
 .../EncryptInsertDerivedColumnsTokenGeneratorTest.java       |  2 +-
 3 files changed, 14 insertions(+), 8 deletions(-)

diff --git 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertCipherNameTokenGenerator.java
 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertCipherNameTokenGenerator.java
index fc7a31bef0f..a65860305af 100644
--- 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertCipherNameTokenGenerator.java
+++ 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertCipherNameTokenGenerator.java
@@ -70,14 +70,16 @@ public final class EncryptInsertCipherNameTokenGenerator 
implements CollectionSQ
         if (null != insertStatementContext.getInsertSelectContext()) {
             
checkInsertSelectEncryptor(insertStatementContext.getInsertSelectContext().getSelectStatementContext(),
 insertColumns);
         }
-        EncryptTable encryptTable = 
rule.getEncryptTable(insertStatementContext.getSqlStatement().getTable().map(optional
 -> optional.getTableName().getIdentifier().getValue()).orElse(""));
+        Optional<EncryptTable> encryptTable = 
rule.findEncryptTable(insertStatementContext.getSqlStatement().getTable().map(optional
 -> optional.getTableName().getIdentifier().getValue()).orElse(""));
+        if (!encryptTable.isPresent()) {
+            return Collections.emptyList();
+        }
         Collection<SQLToken> result = new LinkedList<>();
         for (ColumnSegment each : insertColumns) {
             String columnName = each.getIdentifier().getValue();
-            if (encryptTable.isEncryptColumn(columnName)) {
-                Collection<Projection> projections =
-                        Collections.singleton(new ColumnProjection(null, new 
IdentifierValue(encryptTable.getEncryptColumn(columnName).getCipher().getName(),
 each.getIdentifier().getQuoteCharacter()),
-                                null, 
insertStatementContext.getDatabaseType()));
+            if (encryptTable.get().isEncryptColumn(columnName)) {
+                IdentifierValue name = new 
IdentifierValue(encryptTable.get().getEncryptColumn(columnName).getCipher().getName(),
 each.getIdentifier().getQuoteCharacter());
+                Collection<Projection> projections = Collections.singleton(new 
ColumnProjection(null, name, null, insertStatementContext.getDatabaseType()));
                 result.add(new 
SubstitutableColumnNameToken(each.getStartIndex(), each.getStopIndex(), 
projections, insertStatementContext.getDatabaseType()));
             }
         }
diff --git 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertDerivedColumnsTokenGenerator.java
 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertDerivedColumnsTokenGenerator.java
index 2385ce37b22..189dfb30711 100644
--- 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertDerivedColumnsTokenGenerator.java
+++ 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertDerivedColumnsTokenGenerator.java
@@ -34,6 +34,7 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.Optional;
 
 /**
  * Insert derived columns token generator for encrypt.
@@ -53,9 +54,12 @@ public final class EncryptInsertDerivedColumnsTokenGenerator 
implements Collecti
     @Override
     public Collection<SQLToken> generateSQLTokens(final InsertStatementContext 
insertStatementContext) {
         Collection<SQLToken> result = new LinkedList<>();
-        EncryptTable encryptTable = 
rule.getEncryptTable(insertStatementContext.getSqlStatement().getTable().map(optional
 -> optional.getTableName().getIdentifier().getValue()).orElse(""));
+        Optional<EncryptTable> encryptTable = 
rule.findEncryptTable(insertStatementContext.getSqlStatement().getTable().map(optional
 -> optional.getTableName().getIdentifier().getValue()).orElse(""));
+        if (!encryptTable.isPresent()) {
+            return Collections.emptyList();
+        }
         for (ColumnSegment each : 
insertStatementContext.getSqlStatement().getColumns()) {
-            List<String> derivedColumnNames = 
getDerivedColumnNames(encryptTable, each);
+            List<String> derivedColumnNames = 
getDerivedColumnNames(encryptTable.get(), each);
             if (!derivedColumnNames.isEmpty()) {
                 result.add(new InsertColumnsToken(each.getStopIndex() + 1, 
derivedColumnNames, each.getIdentifier().getQuoteCharacter()));
             }
diff --git 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertDerivedColumnsTokenGeneratorTest.java
 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertDerivedColumnsTokenGeneratorTest.java
index 0aeaad64c43..6f4f0577f75 100644
--- 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertDerivedColumnsTokenGeneratorTest.java
+++ 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertDerivedColumnsTokenGeneratorTest.java
@@ -92,7 +92,7 @@ class EncryptInsertDerivedColumnsTokenGeneratorTest {
         EncryptTable encryptTable = mock(EncryptTable.class, 
RETURNS_DEEP_STUBS);
         when(encryptTable.isEncryptColumn("foo_col")).thenReturn(true);
         
when(encryptTable.getEncryptColumn("foo_col").getAssistedQuery()).thenReturn(Optional.of(new
 AssistedQueryColumnItem("assisted_query_col", mock(EncryptAlgorithm.class))));
-        when(result.getEncryptTable("foo_tbl")).thenReturn(encryptTable);
+        
when(result.findEncryptTable("foo_tbl")).thenReturn(Optional.of(encryptTable));
         return result;
     }
     

Reply via email to