You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2024/08/05 10:42:21 UTC

(shardingsphere) branch master updated: Refactor EncryptIndexColumnTokenGenerator (#32410)

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 <zh...@apache.org>
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();