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 4e3e074df66 Refactor EncryptSQLRewriteContextDecorator (#33770)
4e3e074df66 is described below
commit 4e3e074df661e9106177f5555601838faa299ab7
Author: Liang Zhang <[email protected]>
AuthorDate: Sat Nov 23 17:05:57 2024 +0800
Refactor EncryptSQLRewriteContextDecorator (#33770)
* Refactor EncryptSQLRewriteContextDecorator
* Refactor EncryptSQLRewriteContextDecorator
* Refactor EncryptSQLRewriteContextDecorator
---
.../rewrite/context/EncryptSQLRewriteContextDecorator.java | 10 +++++-----
.../generator/assignment/EncryptAssignmentTokenGenerator.java | 4 ++--
.../assignment/EncryptInsertAssignmentTokenGenerator.java | 6 +++---
.../assignment/EncryptUpdateAssignmentTokenGenerator.java | 6 +++---
.../token/generator/ddl/EncryptAlterTableTokenGenerator.java | 4 ++--
.../token/generator/ddl/EncryptCreateTableTokenGenerator.java | 4 ++--
.../insert/EncryptInsertCipherNameTokenGenerator.java | 6 +++---
.../insert/EncryptInsertDefaultColumnsTokenGenerator.java | 8 ++++----
.../insert/EncryptInsertDerivedColumnsTokenGenerator.java | 4 ++--
.../generator/insert/EncryptInsertOnUpdateTokenGenerator.java | 4 ++--
.../generator/insert/EncryptInsertValuesTokenGenerator.java | 8 ++++----
.../predicate/EncryptInsertPredicateColumnTokenGenerator.java | 4 ++--
.../EncryptInsertPredicateRightValueTokenGenerator.java | 4 ++--
.../predicate/EncryptPredicateColumnTokenGenerator.java | 4 ++--
.../predicate/EncryptPredicateRightValueTokenGenerator.java | 4 ++--
.../EncryptInsertSelectProjectionTokenGenerator.java | 4 ++--
.../generator/projection/EncryptProjectionTokenGenerator.java | 6 +++---
.../projection/EncryptSelectProjectionTokenGenerator.java | 4 ++--
.../generator/select/EncryptGroupByItemTokenGenerator.java | 4 ++--
.../generator/select/EncryptIndexColumnTokenGenerator.java | 4 ++--
.../rewrite/context/ShardingSQLRewriteContextDecorator.java | 4 +++-
21 files changed, 54 insertions(+), 52 deletions(-)
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/context/EncryptSQLRewriteContextDecorator.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/context/EncryptSQLRewriteContextDecorator.java
index a37b41b5a73..a85849fc096 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/context/EncryptSQLRewriteContextDecorator.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/context/EncryptSQLRewriteContextDecorator.java
@@ -81,20 +81,20 @@ public final class EncryptSQLRewriteContextDecorator
implements SQLRewriteContex
SQLStatementContext sqlStatementContext =
sqlRewriteContext.getSqlStatementContext();
if (sqlStatementContext instanceof InsertStatementContext && null !=
((InsertStatementContext) sqlStatementContext).getInsertSelectContext()
&& !(((InsertStatementContext)
sqlStatementContext).getInsertSelectContext().getSelectStatementContext()).getWhereSegments().isEmpty())
{
- return doCreateEncryptConditions(rule, sqlRewriteContext,
((InsertStatementContext)
sqlStatementContext).getInsertSelectContext().getSelectStatementContext());
+ return createEncryptConditions(rule, sqlRewriteContext,
((InsertStatementContext)
sqlStatementContext).getInsertSelectContext().getSelectStatementContext());
}
- return doCreateEncryptConditions(rule, sqlRewriteContext,
sqlStatementContext);
+ return createEncryptConditions(rule, sqlRewriteContext,
sqlStatementContext);
}
- private Collection<EncryptCondition> doCreateEncryptConditions(final
EncryptRule rule, final SQLRewriteContext sqlRewriteContext, final
SQLStatementContext sqlStatementContext) {
+ private Collection<EncryptCondition> createEncryptConditions(final
EncryptRule rule, final SQLRewriteContext sqlRewriteContext, final
SQLStatementContext sqlStatementContext) {
if (!(sqlStatementContext instanceof WhereAvailable)) {
return Collections.emptyList();
}
Collection<SelectStatementContext> allSubqueryContexts =
SQLStatementContextExtractor.getAllSubqueryContexts(sqlStatementContext);
Collection<WhereSegment> whereSegments =
SQLStatementContextExtractor.getWhereSegments((WhereAvailable)
sqlStatementContext, allSubqueryContexts);
Collection<ColumnSegment> columnSegments =
SQLStatementContextExtractor.getColumnSegments((WhereAvailable)
sqlStatementContext, allSubqueryContexts);
- return new EncryptConditionEngine(rule,
sqlRewriteContext.getDatabase().getSchemas()).createEncryptConditions(whereSegments,
columnSegments, sqlStatementContext,
- sqlRewriteContext.getDatabase().getName());
+ return new EncryptConditionEngine(
+ rule,
sqlRewriteContext.getDatabase().getSchemas()).createEncryptConditions(whereSegments,
columnSegments, sqlStatementContext,
sqlRewriteContext.getDatabase().getName());
}
private void rewriteParameters(final SQLRewriteContext sqlRewriteContext,
final Collection<ParameterRewriter> parameterRewriters) {
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/assignment/EncryptAssignmentTokenGenerator.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/assignment/EncryptAssignmentTokenGenerator.java
index c441e49878e..f045d9b352a 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/assignment/EncryptAssignmentTokenGenerator.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/assignment/EncryptAssignmentTokenGenerator.java
@@ -46,7 +46,7 @@ import java.util.Optional;
@RequiredArgsConstructor
public final class EncryptAssignmentTokenGenerator {
- private final EncryptRule encryptRule;
+ private final EncryptRule rule;
private final String databaseName;
@@ -61,7 +61,7 @@ public final class EncryptAssignmentTokenGenerator {
*/
public Collection<SQLToken> generateSQLTokens(final TablesContext
tablesContext, final SetAssignmentSegment setAssignmentSegment) {
String tableName =
tablesContext.getSimpleTables().iterator().next().getTableName().getIdentifier().getValue();
- EncryptTable encryptTable = encryptRule.getEncryptTable(tableName);
+ EncryptTable encryptTable = rule.getEncryptTable(tableName);
Collection<SQLToken> result = new LinkedList<>();
String schemaName = tablesContext.getSchemaName().orElseGet(() -> new
DatabaseTypeRegistry(databaseType).getDefaultSchemaName(databaseName));
for (ColumnAssignmentSegment each :
setAssignmentSegment.getAssignments()) {
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/assignment/EncryptInsertAssignmentTokenGenerator.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/assignment/EncryptInsertAssignmentTokenGenerator.java
index 7b40480fe41..824c20c84ee 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/assignment/EncryptInsertAssignmentTokenGenerator.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/assignment/EncryptInsertAssignmentTokenGenerator.java
@@ -38,20 +38,20 @@ import java.util.Collection;
@Setter
public final class EncryptInsertAssignmentTokenGenerator implements
CollectionSQLTokenGenerator<InsertStatementContext>, DatabaseNameAware {
- private final EncryptRule encryptRule;
+ private final EncryptRule rule;
private String databaseName;
@Override
public boolean isGenerateSQLToken(final SQLStatementContext
sqlStatementContext) {
return sqlStatementContext instanceof InsertStatementContext &&
(((InsertStatementContext)
sqlStatementContext).getSqlStatement()).getSetAssignment().isPresent()
- && encryptRule.findEncryptTable(((TableAvailable)
sqlStatementContext).getTablesContext().getSimpleTables().iterator().next().getTableName().getIdentifier().getValue()).isPresent();
+ && rule.findEncryptTable(((TableAvailable)
sqlStatementContext).getTablesContext().getSimpleTables().iterator().next().getTableName().getIdentifier().getValue()).isPresent();
}
@SuppressWarnings("OptionalGetWithoutIsPresent")
@Override
public Collection<SQLToken> generateSQLTokens(final InsertStatementContext
sqlStatementContext) {
- return new EncryptAssignmentTokenGenerator(encryptRule, databaseName,
sqlStatementContext.getDatabaseType()).generateSQLTokens(
+ return new EncryptAssignmentTokenGenerator(rule, databaseName,
sqlStatementContext.getDatabaseType()).generateSQLTokens(
sqlStatementContext.getTablesContext(),
sqlStatementContext.getSqlStatement().getSetAssignment().get());
}
}
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/assignment/EncryptUpdateAssignmentTokenGenerator.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/assignment/EncryptUpdateAssignmentTokenGenerator.java
index 77248230f19..1c1333c9d1c 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/assignment/EncryptUpdateAssignmentTokenGenerator.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/assignment/EncryptUpdateAssignmentTokenGenerator.java
@@ -38,19 +38,19 @@ import java.util.Collection;
@Setter
public final class EncryptUpdateAssignmentTokenGenerator implements
CollectionSQLTokenGenerator<UpdateStatementContext>, DatabaseNameAware {
- private final EncryptRule encryptRule;
+ private final EncryptRule rule;
private String databaseName;
@Override
public boolean isGenerateSQLToken(final SQLStatementContext
sqlStatementContext) {
return sqlStatementContext instanceof UpdateStatementContext
- && encryptRule.findEncryptTable(((TableAvailable)
sqlStatementContext).getTablesContext().getSimpleTables().iterator().next().getTableName().getIdentifier().getValue()).isPresent();
+ && rule.findEncryptTable(((TableAvailable)
sqlStatementContext).getTablesContext().getSimpleTables().iterator().next().getTableName().getIdentifier().getValue()).isPresent();
}
@Override
public Collection<SQLToken> generateSQLTokens(final UpdateStatementContext
sqlStatementContext) {
- return new EncryptAssignmentTokenGenerator(encryptRule, databaseName,
sqlStatementContext.getDatabaseType())
+ return new EncryptAssignmentTokenGenerator(rule, databaseName,
sqlStatementContext.getDatabaseType())
.generateSQLTokens(sqlStatementContext.getTablesContext(),
sqlStatementContext.getSqlStatement().getSetAssignment());
}
}
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/ddl/EncryptAlterTableTokenGenerator.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/ddl/EncryptAlterTableTokenGenerator.java
index 096ce3ef87f..9215aec1f18 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/ddl/EncryptAlterTableTokenGenerator.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/ddl/EncryptAlterTableTokenGenerator.java
@@ -58,7 +58,7 @@ import java.util.Optional;
@Setter
public final class EncryptAlterTableTokenGenerator implements
CollectionSQLTokenGenerator<AlterTableStatementContext> {
- private final EncryptRule encryptRule;
+ private final EncryptRule rule;
@Override
public boolean isGenerateSQLToken(final SQLStatementContext
sqlStatementContext) {
@@ -68,7 +68,7 @@ public final class EncryptAlterTableTokenGenerator implements
CollectionSQLToken
@Override
public Collection<SQLToken> generateSQLTokens(final
AlterTableStatementContext sqlStatementContext) {
String tableName =
sqlStatementContext.getSqlStatement().getTable().getTableName().getIdentifier().getValue();
- EncryptTable encryptTable = encryptRule.getEncryptTable(tableName);
+ EncryptTable encryptTable = rule.getEncryptTable(tableName);
Collection<SQLToken> result = new
LinkedList<>(getAddColumnTokens(encryptTable,
sqlStatementContext.getSqlStatement().getAddColumnDefinitions()));
result.addAll(getModifyColumnTokens(encryptTable,
sqlStatementContext.getSqlStatement().getModifyColumnDefinitions()));
result.addAll(getChangeColumnTokens(encryptTable,
sqlStatementContext.getSqlStatement().getChangeColumnDefinitions()));
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/ddl/EncryptCreateTableTokenGenerator.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/ddl/EncryptCreateTableTokenGenerator.java
index 8e21a1b73b7..985ac8bdcb9 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/ddl/EncryptCreateTableTokenGenerator.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/ddl/EncryptCreateTableTokenGenerator.java
@@ -43,7 +43,7 @@ import java.util.Optional;
@RequiredArgsConstructor
public final class EncryptCreateTableTokenGenerator implements
CollectionSQLTokenGenerator<CreateTableStatementContext> {
- private final EncryptRule encryptRule;
+ private final EncryptRule rule;
@Override
public boolean isGenerateSQLToken(final SQLStatementContext
sqlStatementContext) {
@@ -54,7 +54,7 @@ public final class EncryptCreateTableTokenGenerator
implements CollectionSQLToke
public Collection<SQLToken> generateSQLTokens(final
CreateTableStatementContext sqlStatementContext) {
Collection<SQLToken> result = new LinkedList<>();
String tableName =
sqlStatementContext.getSqlStatement().getTable().getTableName().getIdentifier().getValue();
- EncryptTable encryptTable = encryptRule.getEncryptTable(tableName);
+ EncryptTable encryptTable = rule.getEncryptTable(tableName);
List<ColumnDefinitionSegment> columns = new
ArrayList<>(sqlStatementContext.getSqlStatement().getColumnDefinitions());
for (int index = 0; index < columns.size(); index++) {
ColumnDefinitionSegment each = columns.get(index);
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertCipherNameTokenGenerator.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertCipherNameTokenGenerator.java
index f6e6d7e8601..94722edbc19 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertCipherNameTokenGenerator.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertCipherNameTokenGenerator.java
@@ -50,7 +50,7 @@ import java.util.Optional;
@Setter
public final class EncryptInsertCipherNameTokenGenerator implements
CollectionSQLTokenGenerator<InsertStatementContext> {
- private final EncryptRule encryptRule;
+ private final EncryptRule rule;
@Override
public boolean isGenerateSQLToken(final SQLStatementContext
sqlStatementContext) {
@@ -69,7 +69,7 @@ public final class EncryptInsertCipherNameTokenGenerator
implements CollectionSQ
if (null != insertStatementContext.getInsertSelectContext()) {
checkInsertSelectEncryptor(insertStatementContext.getInsertSelectContext().getSelectStatementContext(),
insertColumns);
}
- EncryptTable encryptTable =
encryptRule.getEncryptTable(insertStatementContext.getSqlStatement().getTable().map(optional
-> optional.getTableName().getIdentifier().getValue()).orElse(""));
+ EncryptTable encryptTable =
rule.getEncryptTable(insertStatementContext.getSqlStatement().getTable().map(optional
-> optional.getTableName().getIdentifier().getValue()).orElse(""));
Collection<SQLToken> result = new LinkedList<>();
for (ColumnSegment each : insertColumns) {
String columnName = each.getIdentifier().getValue();
@@ -85,7 +85,7 @@ public final class EncryptInsertCipherNameTokenGenerator
implements CollectionSQ
private void checkInsertSelectEncryptor(final SelectStatementContext
selectStatementContext, final Collection<ColumnSegment> insertColumns) {
Collection<Projection> projections =
selectStatementContext.getProjectionsContext().getExpandProjections();
ShardingSpherePreconditions.checkState(insertColumns.size() ==
projections.size(), () -> new UnsupportedSQLOperationException("Column count
doesn't match value count."));
-
ShardingSpherePreconditions.checkState(InsertSelectColumnsEncryptorComparator.isSame(insertColumns,
projections, encryptRule),
+
ShardingSpherePreconditions.checkState(InsertSelectColumnsEncryptorComparator.isSame(insertColumns,
projections, rule),
() -> new UnsupportedSQLOperationException("Can not use
different encryptor in insert select columns"));
}
}
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertDefaultColumnsTokenGenerator.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertDefaultColumnsTokenGenerator.java
index 97cd5721f6c..fe5b24134e0 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertDefaultColumnsTokenGenerator.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertDefaultColumnsTokenGenerator.java
@@ -51,7 +51,7 @@ import java.util.Optional;
@Setter
public final class EncryptInsertDefaultColumnsTokenGenerator implements
OptionalSQLTokenGenerator<InsertStatementContext>, PreviousSQLTokensAware {
- private final EncryptRule encryptRule;
+ private final EncryptRule rule;
private List<SQLToken> previousSQLTokens;
@@ -81,7 +81,7 @@ public final class EncryptInsertDefaultColumnsTokenGenerator
implements Optional
}
private void processPreviousSQLToken(final UseDefaultInsertColumnsToken
previousSQLToken, final InsertStatementContext insertStatementContext, final
String tableName) {
- List<String> columnNames = getColumnNames(insertStatementContext,
encryptRule.getEncryptTable(tableName), previousSQLToken.getColumns());
+ List<String> columnNames = getColumnNames(insertStatementContext,
rule.getEncryptTable(tableName), previousSQLToken.getColumns());
previousSQLToken.getColumns().clear();
previousSQLToken.getColumns().addAll(columnNames);
}
@@ -93,11 +93,11 @@ public final class
EncryptInsertDefaultColumnsTokenGenerator implements Optional
Collection<ColumnSegment> derivedInsertColumns =
insertStatementContext.getSqlStatement().getDerivedInsertColumns();
Collection<Projection> projections =
insertStatementContext.getInsertSelectContext().getSelectStatementContext().getProjectionsContext().getExpandProjections();
ShardingSpherePreconditions.checkState(derivedInsertColumns.size()
== projections.size(), () -> new UnsupportedSQLOperationException("Column count
doesn't match value count."));
-
ShardingSpherePreconditions.checkState(InsertSelectColumnsEncryptorComparator.isSame(derivedInsertColumns,
projections, encryptRule),
+
ShardingSpherePreconditions.checkState(InsertSelectColumnsEncryptorComparator.isSame(derivedInsertColumns,
projections, rule),
() -> new UnsupportedSQLOperationException("Can not use
different encryptor in insert select columns"));
}
return new UseDefaultInsertColumnsToken(
- insertColumnsSegment.get().getStopIndex(),
getColumnNames(insertStatementContext, encryptRule.getEncryptTable(tableName),
insertStatementContext.getColumnNames()));
+ insertColumnsSegment.get().getStopIndex(),
getColumnNames(insertStatementContext, rule.getEncryptTable(tableName),
insertStatementContext.getColumnNames()));
}
private List<String> getColumnNames(final InsertStatementContext
sqlStatementContext, final EncryptTable encryptTable, final List<String>
currentColumnNames) {
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertDerivedColumnsTokenGenerator.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertDerivedColumnsTokenGenerator.java
index 52d06d7ffab..efd890e927e 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertDerivedColumnsTokenGenerator.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertDerivedColumnsTokenGenerator.java
@@ -43,7 +43,7 @@ import java.util.List;
@Setter
public final class EncryptInsertDerivedColumnsTokenGenerator implements
CollectionSQLTokenGenerator<InsertStatementContext> {
- private final EncryptRule encryptRule;
+ private final EncryptRule rule;
@Override
public boolean isGenerateSQLToken(final SQLStatementContext
sqlStatementContext) {
@@ -53,7 +53,7 @@ public final class EncryptInsertDerivedColumnsTokenGenerator
implements Collecti
@Override
public Collection<SQLToken> generateSQLTokens(final InsertStatementContext
insertStatementContext) {
Collection<SQLToken> result = new LinkedList<>();
- EncryptTable encryptTable =
encryptRule.getEncryptTable(insertStatementContext.getSqlStatement().getTable().map(optional
-> optional.getTableName().getIdentifier().getValue()).orElse(""));
+ EncryptTable encryptTable =
rule.getEncryptTable(insertStatementContext.getSqlStatement().getTable().map(optional
-> optional.getTableName().getIdentifier().getValue()).orElse(""));
for (ColumnSegment each :
insertStatementContext.getSqlStatement().getColumns()) {
List<String> derivedColumnNames =
getDerivedColumnNames(encryptTable, each);
if (!derivedColumnNames.isEmpty()) {
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertOnUpdateTokenGenerator.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertOnUpdateTokenGenerator.java
index 631fcde77bb..6c33f06c0aa 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertOnUpdateTokenGenerator.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertOnUpdateTokenGenerator.java
@@ -58,7 +58,7 @@ import java.util.Optional;
@Setter
public final class EncryptInsertOnUpdateTokenGenerator implements
CollectionSQLTokenGenerator<InsertStatementContext>, DatabaseNameAware {
- private final EncryptRule encryptRule;
+ private final EncryptRule rule;
private String databaseName;
@@ -78,7 +78,7 @@ public final class EncryptInsertOnUpdateTokenGenerator
implements CollectionSQLT
String schemaName =
insertStatementContext.getTablesContext().getSchemaName()
.orElseGet(() -> new
DatabaseTypeRegistry(insertStatementContext.getDatabaseType()).getDefaultSchemaName(databaseName));
String tableName = insertStatement.getTable().map(optional ->
optional.getTableName().getIdentifier().getValue()).orElse("");
- EncryptTable encryptTable = encryptRule.getEncryptTable(tableName);
+ EncryptTable encryptTable = rule.getEncryptTable(tableName);
Collection<SQLToken> result = new LinkedList<>();
for (ColumnAssignmentSegment each : onDuplicateKeyColumnsSegments) {
boolean leftColumnIsEncrypt =
encryptTable.isEncryptColumn(each.getColumns().get(0).getIdentifier().getValue());
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertValuesTokenGenerator.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertValuesTokenGenerator.java
index c6ec5114336..c6a64eb842e 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertValuesTokenGenerator.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertValuesTokenGenerator.java
@@ -59,7 +59,7 @@ import java.util.Optional;
@Setter
public final class EncryptInsertValuesTokenGenerator implements
OptionalSQLTokenGenerator<InsertStatementContext>, PreviousSQLTokensAware,
DatabaseNameAware {
- private final EncryptRule encryptRule;
+ private final EncryptRule rule;
private List<SQLToken> previousSQLTokens;
@@ -91,7 +91,7 @@ public final class EncryptInsertValuesTokenGenerator
implements OptionalSQLToken
private void processPreviousSQLToken(final InsertStatementContext
insertStatementContext, final InsertValuesToken insertValuesToken) {
String tableName =
insertStatementContext.getSqlStatement().getTable().map(optional ->
optional.getTableName().getIdentifier().getValue()).orElse("");
- EncryptTable encryptTable = encryptRule.getEncryptTable(tableName);
+ EncryptTable encryptTable = rule.getEncryptTable(tableName);
int count = 0;
String schemaName =
insertStatementContext.getTablesContext().getSchemaName()
.orElseGet(() -> new
DatabaseTypeRegistry(insertStatementContext.getDatabaseType()).getDefaultSchemaName(databaseName));
@@ -105,7 +105,7 @@ public final class EncryptInsertValuesTokenGenerator
implements OptionalSQLToken
String tableName =
insertStatementContext.getSqlStatement().getTable().map(optional ->
optional.getTableName().getIdentifier().getValue()).orElse("");
Collection<InsertValuesSegment> insertValuesSegments =
insertStatementContext.getSqlStatement().getValues();
InsertValuesToken result = new
EncryptInsertValuesToken(getStartIndex(insertValuesSegments),
getStopIndex(insertValuesSegments));
- EncryptTable encryptTable = encryptRule.getEncryptTable(tableName);
+ EncryptTable encryptTable = rule.getEncryptTable(tableName);
String schemaName =
insertStatementContext.getTablesContext().getSchemaName()
.orElseGet(() -> new
DatabaseTypeRegistry(insertStatementContext.getDatabaseType()).getDefaultSchemaName(databaseName));
for (InsertValueContext each :
insertStatementContext.getInsertValueContexts()) {
@@ -142,7 +142,7 @@ public final class EncryptInsertValuesTokenGenerator
implements OptionalSQLToken
if (!encryptTable.isEncryptColumn(columnName)) {
continue;
}
- EncryptColumn encryptColumn =
encryptRule.getEncryptTable(tableName).getEncryptColumn(columnName);
+ EncryptColumn encryptColumn =
rule.getEncryptTable(tableName).getEncryptColumn(columnName);
int columnIndex = useDefaultInsertColumnsToken
.map(optional -> ((UseDefaultInsertColumnsToken)
optional).getColumns().indexOf(columnName)).orElseGet(() ->
insertStatementContext.getColumnNames().indexOf(columnName));
Object originalValue =
insertValueContext.getLiteralValue(columnIndex).orElse(null);
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/predicate/EncryptInsertPredicateColumnTokenGenerator.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/predicate/EncryptInsertPredicateColumnTokenGenerator.java
index f7a490cdd0f..609c050a10d 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/predicate/EncryptInsertPredicateColumnTokenGenerator.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/predicate/EncryptInsertPredicateColumnTokenGenerator.java
@@ -39,7 +39,7 @@ import java.util.Map;
@Setter
public final class EncryptInsertPredicateColumnTokenGenerator implements
CollectionSQLTokenGenerator<SQLStatementContext>, SchemaMetaDataAware {
- private final EncryptRule encryptRule;
+ private final EncryptRule rule;
private Map<String, ShardingSphereSchema> schemas;
@@ -53,7 +53,7 @@ public final class EncryptInsertPredicateColumnTokenGenerator
implements Collect
@Override
public Collection<SQLToken> generateSQLTokens(final SQLStatementContext
sqlStatementContext) {
- EncryptPredicateColumnTokenGenerator generator = new
EncryptPredicateColumnTokenGenerator(encryptRule);
+ EncryptPredicateColumnTokenGenerator generator = new
EncryptPredicateColumnTokenGenerator(rule);
generator.setSchemas(schemas);
generator.setDefaultSchema(defaultSchema);
return generator.generateSQLTokens(((InsertStatementContext)
sqlStatementContext).getInsertSelectContext().getSelectStatementContext());
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/predicate/EncryptInsertPredicateRightValueTokenGenerator.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/predicate/EncryptInsertPredicateRightValueTokenGenerator.java
index 88eee2b8522..cb4fa9e1c12 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/predicate/EncryptInsertPredicateRightValueTokenGenerator.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/predicate/EncryptInsertPredicateRightValueTokenGenerator.java
@@ -41,7 +41,7 @@ import java.util.List;
@Setter
public final class EncryptInsertPredicateRightValueTokenGenerator implements
CollectionSQLTokenGenerator<SQLStatementContext>, ParametersAware,
EncryptConditionsAware, DatabaseNameAware {
- private final EncryptRule encryptRule;
+ private final EncryptRule rule;
private List<Object> parameters;
@@ -57,7 +57,7 @@ public final class
EncryptInsertPredicateRightValueTokenGenerator implements Col
@Override
public Collection<SQLToken> generateSQLTokens(final SQLStatementContext
sqlStatementContext) {
- EncryptPredicateRightValueTokenGenerator generator = new
EncryptPredicateRightValueTokenGenerator(encryptRule);
+ EncryptPredicateRightValueTokenGenerator generator = new
EncryptPredicateRightValueTokenGenerator(rule);
generator.setParameters(parameters);
generator.setEncryptConditions(encryptConditions);
generator.setDatabaseName(databaseName);
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/predicate/EncryptPredicateColumnTokenGenerator.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/predicate/EncryptPredicateColumnTokenGenerator.java
index b1b9c1b6906..191380747b5 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/predicate/EncryptPredicateColumnTokenGenerator.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/predicate/EncryptPredicateColumnTokenGenerator.java
@@ -61,7 +61,7 @@ import java.util.Optional;
@Setter
public final class EncryptPredicateColumnTokenGenerator implements
CollectionSQLTokenGenerator<SQLStatementContext>, SchemaMetaDataAware {
- private final EncryptRule encryptRule;
+ private final EncryptRule rule;
private Map<String, ShardingSphereSchema> schemas;
@@ -87,7 +87,7 @@ public final class EncryptPredicateColumnTokenGenerator
implements CollectionSQL
Collection<SQLToken> result = new LinkedList<>();
for (ColumnSegment each : columnSegments) {
String tableName =
columnExpressionTableNames.getOrDefault(each.getExpression(), "");
- Optional<EncryptTable> encryptTable =
encryptRule.findEncryptTable(tableName);
+ Optional<EncryptTable> encryptTable =
rule.findEncryptTable(tableName);
if (encryptTable.isPresent() &&
encryptTable.get().isEncryptColumn(each.getIdentifier().getValue())) {
result.add(buildSubstitutableColumnNameToken(encryptTable.get().getEncryptColumn(each.getIdentifier().getValue()),
each, whereSegments, databaseType));
}
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/predicate/EncryptPredicateRightValueTokenGenerator.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/predicate/EncryptPredicateRightValueTokenGenerator.java
index e5a221b20c2..9d83fa7d758 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/predicate/EncryptPredicateRightValueTokenGenerator.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/predicate/EncryptPredicateRightValueTokenGenerator.java
@@ -57,7 +57,7 @@ import java.util.Map;
@Setter
public final class EncryptPredicateRightValueTokenGenerator implements
CollectionSQLTokenGenerator<SQLStatementContext>, ParametersAware,
EncryptConditionsAware, DatabaseNameAware {
- private final EncryptRule encryptRule;
+ private final EncryptRule rule;
private List<Object> parameters;
@@ -76,7 +76,7 @@ public final class EncryptPredicateRightValueTokenGenerator
implements Collectio
String schemaName = ((TableAvailable)
sqlStatementContext).getTablesContext().getSchemaName()
.orElseGet(() -> new
DatabaseTypeRegistry(sqlStatementContext.getDatabaseType()).getDefaultSchemaName(databaseName));
for (EncryptCondition each : encryptConditions) {
-
encryptRule.findEncryptTable(each.getTableName()).ifPresent(optional ->
result.add(generateSQLToken(schemaName, optional, each)));
+ rule.findEncryptTable(each.getTableName()).ifPresent(optional ->
result.add(generateSQLToken(schemaName, optional, each)));
}
return result;
}
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/projection/EncryptInsertSelectProjectionTokenGenerator.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/projection/EncryptInsertSelectProjectionTokenGenerator.java
index a77a7633a66..4a271a30002 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/projection/EncryptInsertSelectProjectionTokenGenerator.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/projection/EncryptInsertSelectProjectionTokenGenerator.java
@@ -40,7 +40,7 @@ import java.util.List;
@Setter
public final class EncryptInsertSelectProjectionTokenGenerator implements
CollectionSQLTokenGenerator<InsertStatementContext>, PreviousSQLTokensAware,
DatabaseTypeAware {
- private final EncryptRule encryptRule;
+ private final EncryptRule rule;
private List<SQLToken> previousSQLTokens;
@@ -53,6 +53,6 @@ public final class
EncryptInsertSelectProjectionTokenGenerator implements Collec
@Override
public Collection<SQLToken> generateSQLTokens(final InsertStatementContext
sqlStatementContext) {
- return new EncryptProjectionTokenGenerator(previousSQLTokens,
encryptRule,
databaseType).generateSQLTokens(sqlStatementContext.getInsertSelectContext().getSelectStatementContext());
+ return new EncryptProjectionTokenGenerator(previousSQLTokens, rule,
databaseType).generateSQLTokens(sqlStatementContext.getInsertSelectContext().getSelectStatementContext());
}
}
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/projection/EncryptProjectionTokenGenerator.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/projection/EncryptProjectionTokenGenerator.java
index dc2dc317113..bcd099fdaff 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/projection/EncryptProjectionTokenGenerator.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/projection/EncryptProjectionTokenGenerator.java
@@ -64,7 +64,7 @@ public final class EncryptProjectionTokenGenerator {
private final List<SQLToken> previousSQLTokens;
- private final EncryptRule encryptRule;
+ private final EncryptRule rule;
private final DatabaseType databaseType;
@@ -103,7 +103,7 @@ public final class EncryptProjectionTokenGenerator {
ColumnProjection columnProjection =
buildColumnProjection(columnSegment);
String columnName = columnProjection.getOriginalColumn().getValue();
boolean newAddedColumn =
existColumnNames.add(columnProjection.getOriginalTable().getValue() + "." +
columnName);
- Optional<EncryptTable> encryptTable =
encryptRule.findEncryptTable(columnProjection.getOriginalTable().getValue());
+ Optional<EncryptTable> encryptTable =
rule.findEncryptTable(columnProjection.getOriginalTable().getValue());
if (encryptTable.isPresent() &&
encryptTable.get().isEncryptColumn(columnName) &&
isNeedRewrite(selectStatementContext, columnSegment)) {
EncryptColumn encryptColumn =
encryptTable.get().getEncryptColumn(columnName);
Collection<Projection> projections =
generateProjections(encryptColumn, columnProjection,
selectStatementContext.getSubqueryType(), newAddedColumn);
@@ -122,7 +122,7 @@ public final class EncryptProjectionTokenGenerator {
if (each instanceof ColumnProjection) {
ColumnProjection columnProjection = (ColumnProjection) each;
boolean newAddedColumn =
existColumnNames.add(columnProjection.getOriginalTable().getValue() + "." +
columnProjection.getOriginalColumn().getValue());
- Optional<EncryptTable> encryptTable =
encryptRule.findEncryptTable(columnProjection.getOriginalTable().getValue());
+ Optional<EncryptTable> encryptTable =
rule.findEncryptTable(columnProjection.getOriginalTable().getValue());
if (encryptTable.isPresent() &&
encryptTable.get().isEncryptColumn(columnProjection.getOriginalColumn().getValue())
&& isNeedRewrite(selectStatementContext, subqueryType)) {
EncryptColumn encryptColumn =
encryptTable.get().getEncryptColumn(columnProjection.getOriginalColumn().getValue());
projections.addAll(generateProjections(encryptColumn,
columnProjection, subqueryType, newAddedColumn));
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/projection/EncryptSelectProjectionTokenGenerator.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/projection/EncryptSelectProjectionTokenGenerator.java
index d199ce3d3bd..13544939be0 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/projection/EncryptSelectProjectionTokenGenerator.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/projection/EncryptSelectProjectionTokenGenerator.java
@@ -40,7 +40,7 @@ import java.util.List;
@Setter
public final class EncryptSelectProjectionTokenGenerator implements
CollectionSQLTokenGenerator<SelectStatementContext>, PreviousSQLTokensAware,
DatabaseTypeAware {
- private final EncryptRule encryptRule;
+ private final EncryptRule rule;
private List<SQLToken> previousSQLTokens;
@@ -53,6 +53,6 @@ public final class EncryptSelectProjectionTokenGenerator
implements CollectionSQ
@Override
public Collection<SQLToken> generateSQLTokens(final SelectStatementContext
sqlStatementContext) {
- return new EncryptProjectionTokenGenerator(previousSQLTokens,
encryptRule, databaseType).generateSQLTokens(sqlStatementContext);
+ return new EncryptProjectionTokenGenerator(previousSQLTokens, rule,
databaseType).generateSQLTokens(sqlStatementContext);
}
}
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/select/EncryptGroupByItemTokenGenerator.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/select/EncryptGroupByItemTokenGenerator.java
index 1c0ead50733..2815c7b5728 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/select/EncryptGroupByItemTokenGenerator.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/select/EncryptGroupByItemTokenGenerator.java
@@ -54,7 +54,7 @@ import java.util.Optional;
@Setter
public final class EncryptGroupByItemTokenGenerator implements
CollectionSQLTokenGenerator<SelectStatementContext>, SchemaMetaDataAware,
DatabaseTypeAware {
- private final EncryptRule encryptRule;
+ private final EncryptRule rule;
private Map<String, ShardingSphereSchema> schemas;
@@ -95,7 +95,7 @@ public final class EncryptGroupByItemTokenGenerator
implements CollectionSQLToke
private Optional<SubstitutableColumnNameToken> generateSQLToken(final
ColumnSegment columnSegment, final Map<String, String> columnTableNames) {
String tableName =
columnTableNames.getOrDefault(columnSegment.getExpression(), "");
- Optional<EncryptTable> encryptTable =
encryptRule.findEncryptTable(tableName);
+ Optional<EncryptTable> encryptTable = rule.findEncryptTable(tableName);
String columnName = columnSegment.getIdentifier().getValue();
if (!encryptTable.isPresent() ||
!encryptTable.get().isEncryptColumn(columnName)) {
return Optional.empty();
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/select/EncryptIndexColumnTokenGenerator.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/select/EncryptIndexColumnTokenGenerator.java
index 17c6e230b1c..4ff9e998e08 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/select/EncryptIndexColumnTokenGenerator.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/select/EncryptIndexColumnTokenGenerator.java
@@ -50,7 +50,7 @@ import java.util.Optional;
@Setter
public final class EncryptIndexColumnTokenGenerator implements
CollectionSQLTokenGenerator<SQLStatementContext>, DatabaseTypeAware {
- private final EncryptRule encryptRule;
+ private final EncryptRule rule;
private DatabaseType databaseType;
@@ -63,7 +63,7 @@ public final class EncryptIndexColumnTokenGenerator
implements CollectionSQLToke
@Override
public Collection<SQLToken> generateSQLTokens(final SQLStatementContext
sqlStatementContext) {
String tableName = ((TableAvailable)
sqlStatementContext).getTablesContext().getTableNames().iterator().next();
- EncryptTable encryptTable = encryptRule.getEncryptTable(tableName);
+ EncryptTable encryptTable = rule.getEncryptTable(tableName);
Collection<SQLToken> result = new LinkedList<>();
for (ColumnSegment each : ((IndexAvailable)
sqlStatementContext).getIndexColumns()) {
if (encryptTable.isEncryptColumn(each.getIdentifier().getValue()))
{
diff --git
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/context/ShardingSQLRewriteContextDecorator.java
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/context/ShardingSQLRewriteContextDecorator.java
index 5b204da5cdc..1adc833c279 100644
---
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/context/ShardingSQLRewriteContextDecorator.java
+++
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/context/ShardingSQLRewriteContextDecorator.java
@@ -28,6 +28,7 @@ import
org.apache.shardingsphere.infra.rewrite.context.SQLRewriteContext;
import
org.apache.shardingsphere.infra.rewrite.context.SQLRewriteContextDecorator;
import
org.apache.shardingsphere.infra.rewrite.parameter.rewriter.ParameterRewriter;
import
org.apache.shardingsphere.infra.rewrite.parameter.rewriter.ParameterRewritersBuilder;
+import
org.apache.shardingsphere.infra.rewrite.sql.token.common.generator.builder.SQLTokenGeneratorBuilder;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.sharding.constant.ShardingOrder;
import
org.apache.shardingsphere.sharding.rewrite.parameter.ShardingParameterRewritersRegistry;
@@ -53,7 +54,8 @@ public final class ShardingSQLRewriteContextDecorator
implements SQLRewriteConte
Collection<ParameterRewriter> parameterRewriters = new
ParameterRewritersBuilder(sqlStatementContext).build(new
ShardingParameterRewritersRegistry(routeContext));
rewriteParameters(sqlRewriteContext, parameterRewriters);
}
- sqlRewriteContext.addSQLTokenGenerators(new
ShardingTokenGenerateBuilder(rule, routeContext,
sqlStatementContext).getSQLTokenGenerators());
+ SQLTokenGeneratorBuilder sqlTokenGeneratorBuilder = new
ShardingTokenGenerateBuilder(rule, routeContext, sqlStatementContext);
+
sqlRewriteContext.addSQLTokenGenerators(sqlTokenGeneratorBuilder.getSQLTokenGenerators());
}
private boolean isAlterOrDropIndexStatement(final SQLStatementContext
sqlStatementContext) {