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) {