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

duanzhengqiang 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 60d498b6711 Refactor EncryptOrderByItemSupportedChecker (#32394)
60d498b6711 is described below

commit 60d498b6711ddf7e74474872813ed3cc1a724e0e
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Aug 4 20:31:25 2024 +0800

    Refactor EncryptOrderByItemSupportedChecker (#32394)
    
    * Refactor EncryptOrderByItemSupportedChecker
    
    * Refactor EncryptOrderByItemSupportedChecker
---
 .../checker/sql/EncryptOrderByItemSupportedChecker.java | 17 +++++++----------
 1 file changed, 7 insertions(+), 10 deletions(-)

diff --git 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/checker/sql/EncryptOrderByItemSupportedChecker.java
 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/checker/sql/EncryptOrderByItemSupportedChecker.java
index a0d3bef65c4..43cc349c2c7 100644
--- 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/checker/sql/EncryptOrderByItemSupportedChecker.java
+++ 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/checker/sql/EncryptOrderByItemSupportedChecker.java
@@ -63,20 +63,17 @@ public final class EncryptOrderByItemSupportedChecker 
implements SupportedSQLChe
     public void check(final EncryptRule encryptRule, final 
ShardingSphereSchema schema, final SelectStatementContext sqlStatementContext) {
         for (OrderByItem each : getOrderByItems(sqlStatementContext)) {
             if (each.getSegment() instanceof ColumnOrderByItemSegment) {
-                ColumnSegment columnSegment = ((ColumnOrderByItemSegment) 
each.getSegment()).getColumn();
-                Map<String, String> columnTableNames = 
sqlStatementContext.getTablesContext().findTableNames(Collections.singleton(columnSegment),
 schema);
-                check(encryptRule, Collections.singleton(columnSegment), 
columnTableNames);
+                checkColumnOrderByItem(encryptRule, schema, 
sqlStatementContext, ((ColumnOrderByItemSegment) 
each.getSegment()).getColumn());
             }
         }
     }
     
-    private void check(final EncryptRule encryptRule, final 
Collection<ColumnSegment> columnSegments, final Map<String, String> 
columnTableNames) {
-        for (ColumnSegment each : columnSegments) {
-            String tableName = 
columnTableNames.getOrDefault(each.getExpression(), "");
-            Optional<EncryptTable> encryptTable = 
encryptRule.findEncryptTable(tableName);
-            String columnName = each.getIdentifier().getValue();
-            ShardingSpherePreconditions.checkState(!encryptTable.isPresent() 
|| !encryptTable.get().isEncryptColumn(columnName), () -> new 
UnsupportedEncryptSQLException("ORDER BY"));
-        }
+    private void checkColumnOrderByItem(final EncryptRule encryptRule, final 
ShardingSphereSchema schema, final SelectStatementContext sqlStatementContext, 
final ColumnSegment columnSegment) {
+        Map<String, String> columnTableNames = 
sqlStatementContext.getTablesContext().findTableNames(Collections.singleton(columnSegment),
 schema);
+        String tableName = 
columnTableNames.getOrDefault(columnSegment.getExpression(), "");
+        Optional<EncryptTable> encryptTable = 
encryptRule.findEncryptTable(tableName);
+        String columnName = columnSegment.getIdentifier().getValue();
+        ShardingSpherePreconditions.checkState(!encryptTable.isPresent() || 
!encryptTable.get().isEncryptColumn(columnName), () -> new 
UnsupportedEncryptSQLException("ORDER BY"));
     }
     
     private Collection<OrderByItem> getOrderByItems(final 
SelectStatementContext sqlStatementContext) {

Reply via email to