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();