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