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

zhangliang 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 0054b1209fe Refactor EncryptIndexColumnTokenGenerator (#32410)
0054b1209fe is described below

commit 0054b1209fedba10ec193edcb8156f89721f00f9
Author: Liang Zhang <[email protected]>
AuthorDate: Mon Aug 5 18:42:15 2024 +0800

    Refactor EncryptIndexColumnTokenGenerator (#32410)
    
    * Refactor EncryptGroupByItemTokenGenerator
    
    * Refactor EncryptIndexColumnTokenGenerator
---
 .../token/generator/EncryptGroupByItemTokenGenerator.java        | 7 ++++---
 .../token/generator/EncryptIndexColumnTokenGenerator.java        | 9 ++-------
 2 files changed, 6 insertions(+), 10 deletions(-)

diff --git 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptGroupByItemTokenGenerator.java
 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptGroupByItemTokenGenerator.java
index 9cb72fa1dda..0ff7260eeec 100644
--- 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptGroupByItemTokenGenerator.java
+++ 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptGroupByItemTokenGenerator.java
@@ -94,7 +94,8 @@ public final class EncryptGroupByItemTokenGenerator 
implements CollectionSQLToke
     }
     
     private Optional<SubstitutableColumnNameToken> generateSQLToken(final 
ColumnSegment columnSegment, final Map<String, String> columnTableNames) {
-        Optional<EncryptTable> encryptTable = 
encryptRule.findEncryptTable(columnTableNames.getOrDefault(columnSegment.getExpression(),
 ""));
+        String tableName = 
columnTableNames.getOrDefault(columnSegment.getExpression(), "");
+        Optional<EncryptTable> encryptTable = 
encryptRule.findEncryptTable(tableName);
         String columnName = columnSegment.getIdentifier().getValue();
         if (!encryptTable.isPresent() || 
!encryptTable.get().isEncryptColumn(columnName)) {
             return Optional.empty();
@@ -104,8 +105,8 @@ public final class EncryptGroupByItemTokenGenerator 
implements CollectionSQLToke
         int stopIndex = columnSegment.getStopIndex();
         return Optional.of(encryptColumn.getAssistedQuery()
                 .map(optional -> new SubstitutableColumnNameToken(startIndex, 
stopIndex, createColumnProjections(optional.getName(), 
columnSegment.getIdentifier().getQuoteCharacter()), databaseType))
-                .orElseGet(() -> new SubstitutableColumnNameToken(startIndex, 
stopIndex, createColumnProjections(encryptColumn.getCipher().getName(),
-                        columnSegment.getIdentifier().getQuoteCharacter()), 
databaseType)));
+                .orElseGet(() -> new SubstitutableColumnNameToken(startIndex, 
stopIndex,
+                        
createColumnProjections(encryptColumn.getCipher().getName(), 
columnSegment.getIdentifier().getQuoteCharacter()), databaseType)));
     }
     
     private Collection<OrderByItem> getGroupByItems(final 
SelectStatementContext sqlStatementContext) {
diff --git 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptIndexColumnTokenGenerator.java
 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptIndexColumnTokenGenerator.java
index 1566bb52baf..33935a27d9c 100644
--- 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptIndexColumnTokenGenerator.java
+++ 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptIndexColumnTokenGenerator.java
@@ -17,7 +17,6 @@
 
 package org.apache.shardingsphere.encrypt.rewrite.token.generator;
 
-import com.google.common.base.Preconditions;
 import lombok.Setter;
 import org.apache.shardingsphere.encrypt.rewrite.aware.DatabaseTypeAware;
 import org.apache.shardingsphere.encrypt.rewrite.aware.EncryptRuleAware;
@@ -59,22 +58,18 @@ public final class EncryptIndexColumnTokenGenerator 
implements CollectionSQLToke
     
     @Override
     public Collection<SQLToken> generateSQLTokens(final SQLStatementContext 
sqlStatementContext) {
-        Preconditions.checkArgument(sqlStatementContext instanceof 
IndexAvailable, "SQLStatementContext must implementation IndexAvailable 
interface.");
-        if (!(sqlStatementContext instanceof TableAvailable) || 
((TableAvailable) 
sqlStatementContext).getTablesContext().getTableNames().isEmpty()) {
-            return Collections.emptyList();
-        }
         String tableName = ((TableAvailable) 
sqlStatementContext).getTablesContext().getTableNames().iterator().next();
         EncryptTable encryptTable = encryptRule.getEncryptTable(tableName);
         Collection<SQLToken> result = new LinkedList<>();
         for (ColumnSegment each : ((IndexAvailable) 
sqlStatementContext).getIndexColumns()) {
             if (encryptTable.isEncryptColumn(each.getIdentifier().getValue())) 
{
-                getColumnToken(encryptTable, each).ifPresent(result::add);
+                generateSQLToken(encryptTable, each).ifPresent(result::add);
             }
         }
         return result;
     }
     
-    private Optional<SQLToken> getColumnToken(final EncryptTable encryptTable, 
final ColumnSegment columnSegment) {
+    private Optional<SQLToken> generateSQLToken(final EncryptTable 
encryptTable, final ColumnSegment columnSegment) {
         QuoteCharacter quoteCharacter = 
columnSegment.getIdentifier().getQuoteCharacter();
         int startIndex = columnSegment.getStartIndex();
         int stopIndex = columnSegment.getStopIndex();

Reply via email to