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 c5926e22744 Refactor DatabaseNameAware to DatabaseAware (#33868)
c5926e22744 is described below

commit c5926e22744915bbe4383146c0a8416b600a8338
Author: Liang Zhang <zhangli...@apache.org>
AuthorDate: Sun Dec 1 21:09:08 2024 +0800

    Refactor DatabaseNameAware to DatabaseAware (#33868)
    
    * Refactor DatabaseNameAware to DatabaseAware
    
    * Refactor DatabaseNameAware to DatabaseAware
---
 .../{DatabaseNameAware.java => DatabaseAware.java}     | 12 +++++++-----
 .../context/EncryptSQLRewriteContextDecorator.java     |  6 +++---
 .../rewrite/token/EncryptTokenGenerateBuilder.java     |  9 +++++----
 .../EncryptInsertAssignmentTokenGenerator.java         |  9 +++++----
 .../EncryptUpdateAssignmentTokenGenerator.java         |  9 +++++----
 .../insert/EncryptInsertOnUpdateTokenGenerator.java    | 15 ++++++++-------
 .../insert/EncryptInsertValuesTokenGenerator.java      | 18 ++++++++++--------
 ...EncryptInsertPredicateRightValueTokenGenerator.java |  9 +++++----
 .../EncryptPredicateRightValueTokenGenerator.java      | 15 ++++++++-------
 .../rewrite/token/EncryptTokenGenerateBuilderTest.java |  6 +++---
 .../EncryptInsertOnUpdateTokenGeneratorTest.java       |  2 ++
 .../insert/EncryptInsertValuesTokenGeneratorTest.java  | 15 ++++++++++++---
 .../EncryptPredicateRightValueTokenGeneratorTest.java  |  8 ++++++--
 13 files changed, 79 insertions(+), 54 deletions(-)

diff --git 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/aware/DatabaseNameAware.java
 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/aware/DatabaseAware.java
similarity index 78%
rename from 
features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/aware/DatabaseNameAware.java
rename to 
features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/aware/DatabaseAware.java
index 4d17c55012a..3670849b209 100644
--- 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/aware/DatabaseNameAware.java
+++ 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/aware/DatabaseAware.java
@@ -17,15 +17,17 @@
 
 package org.apache.shardingsphere.encrypt.rewrite.aware;
 
+import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
+
 /**
- * Database name aware.
+ * Database aware.
  */
-public interface DatabaseNameAware {
+public interface DatabaseAware {
     
     /**
-     * Set database name.
+     * Set database.
      *
-     * @param databaseName database name
+     * @param database database
      */
-    void setDatabaseName(String databaseName);
+    void setDatabase(ShardingSphereDatabase database);
 }
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 6d9a24a1e8d..c79fe379b8a 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
@@ -56,12 +56,12 @@ public final class EncryptSQLRewriteContextDecorator 
implements SQLRewriteContex
             return;
         }
         Collection<EncryptCondition> encryptConditions = 
createEncryptConditions(rule, sqlRewriteContext);
-        String databaseName = sqlRewriteContext.getDatabase().getName();
         if (!sqlRewriteContext.getParameters().isEmpty()) {
-            Collection<ParameterRewriter> parameterRewriters = new 
ParameterRewritersBuilder(sqlStatementContext).build(new 
EncryptParameterRewritersRegistry(rule, databaseName, encryptConditions));
+            Collection<ParameterRewriter> parameterRewriters = new 
ParameterRewritersBuilder(sqlStatementContext)
+                    .build(new EncryptParameterRewritersRegistry(rule, 
sqlRewriteContext.getDatabase().getName(), encryptConditions));
             rewriteParameters(sqlRewriteContext, parameterRewriters);
         }
-        SQLTokenGeneratorBuilder sqlTokenGeneratorBuilder = new 
EncryptTokenGenerateBuilder(rule, sqlStatementContext, encryptConditions, 
databaseName);
+        SQLTokenGeneratorBuilder sqlTokenGeneratorBuilder = new 
EncryptTokenGenerateBuilder(rule, sqlStatementContext, encryptConditions, 
sqlRewriteContext.getDatabase());
         
sqlRewriteContext.addSQLTokenGenerators(sqlTokenGeneratorBuilder.getSQLTokenGenerators());
     }
     
diff --git 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/EncryptTokenGenerateBuilder.java
 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/EncryptTokenGenerateBuilder.java
index b4d015c323e..b3b42278fd3 100644
--- 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/EncryptTokenGenerateBuilder.java
+++ 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/EncryptTokenGenerateBuilder.java
@@ -18,7 +18,7 @@
 package org.apache.shardingsphere.encrypt.rewrite.token;
 
 import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.encrypt.rewrite.aware.DatabaseNameAware;
+import org.apache.shardingsphere.encrypt.rewrite.aware.DatabaseAware;
 import org.apache.shardingsphere.encrypt.rewrite.aware.DatabaseTypeAware;
 import org.apache.shardingsphere.encrypt.rewrite.aware.EncryptConditionsAware;
 import org.apache.shardingsphere.encrypt.rewrite.condition.EncryptCondition;
@@ -41,6 +41,7 @@ import 
org.apache.shardingsphere.encrypt.rewrite.token.generator.select.EncryptG
 import 
org.apache.shardingsphere.encrypt.rewrite.token.generator.select.EncryptIndexColumnTokenGenerator;
 import org.apache.shardingsphere.encrypt.rule.EncryptRule;
 import 
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
+import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.rewrite.sql.token.common.generator.SQLTokenGenerator;
 import 
org.apache.shardingsphere.infra.rewrite.sql.token.common.generator.builder.SQLTokenGeneratorBuilder;
 
@@ -59,7 +60,7 @@ public final class EncryptTokenGenerateBuilder implements 
SQLTokenGeneratorBuild
     
     private final Collection<EncryptCondition> encryptConditions;
     
-    private final String databaseName;
+    private final ShardingSphereDatabase database;
     
     @Override
     public Collection<SQLTokenGenerator> getSQLTokenGenerators() {
@@ -95,8 +96,8 @@ public final class EncryptTokenGenerateBuilder implements 
SQLTokenGeneratorBuild
         if (toBeAddedSQLTokenGenerator instanceof EncryptConditionsAware) {
             ((EncryptConditionsAware) 
toBeAddedSQLTokenGenerator).setEncryptConditions(encryptConditions);
         }
-        if (toBeAddedSQLTokenGenerator instanceof DatabaseNameAware) {
-            ((DatabaseNameAware) 
toBeAddedSQLTokenGenerator).setDatabaseName(databaseName);
+        if (toBeAddedSQLTokenGenerator instanceof DatabaseAware) {
+            ((DatabaseAware) toBeAddedSQLTokenGenerator).setDatabase(database);
         }
         if (toBeAddedSQLTokenGenerator instanceof DatabaseTypeAware) {
             ((DatabaseTypeAware) 
toBeAddedSQLTokenGenerator).setDatabaseType(sqlStatementContext.getDatabaseType());
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 824c20c84ee..1526918bd93 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
@@ -19,12 +19,13 @@ package 
org.apache.shardingsphere.encrypt.rewrite.token.generator.assignment;
 
 import lombok.RequiredArgsConstructor;
 import lombok.Setter;
-import org.apache.shardingsphere.encrypt.rewrite.aware.DatabaseNameAware;
+import org.apache.shardingsphere.encrypt.rewrite.aware.DatabaseAware;
 import org.apache.shardingsphere.encrypt.rule.EncryptRule;
 import org.apache.shardingsphere.infra.annotation.HighFrequencyInvocation;
 import 
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
 import 
org.apache.shardingsphere.infra.binder.context.statement.dml.InsertStatementContext;
 import org.apache.shardingsphere.infra.binder.context.type.TableAvailable;
+import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.rewrite.sql.token.common.generator.CollectionSQLTokenGenerator;
 import org.apache.shardingsphere.infra.rewrite.sql.token.common.pojo.SQLToken;
 
@@ -36,11 +37,11 @@ import java.util.Collection;
 @HighFrequencyInvocation
 @RequiredArgsConstructor
 @Setter
-public final class EncryptInsertAssignmentTokenGenerator implements 
CollectionSQLTokenGenerator<InsertStatementContext>, DatabaseNameAware {
+public final class EncryptInsertAssignmentTokenGenerator implements 
CollectionSQLTokenGenerator<InsertStatementContext>, DatabaseAware {
     
     private final EncryptRule rule;
     
-    private String databaseName;
+    private ShardingSphereDatabase database;
     
     @Override
     public boolean isGenerateSQLToken(final SQLStatementContext 
sqlStatementContext) {
@@ -51,7 +52,7 @@ public final class EncryptInsertAssignmentTokenGenerator 
implements CollectionSQ
     @SuppressWarnings("OptionalGetWithoutIsPresent")
     @Override
     public Collection<SQLToken> generateSQLTokens(final InsertStatementContext 
sqlStatementContext) {
-        return new EncryptAssignmentTokenGenerator(rule, databaseName, 
sqlStatementContext.getDatabaseType()).generateSQLTokens(
+        return new EncryptAssignmentTokenGenerator(rule, database.getName(), 
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 1c1333c9d1c..4dc4d5c226c 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
@@ -19,12 +19,13 @@ package 
org.apache.shardingsphere.encrypt.rewrite.token.generator.assignment;
 
 import lombok.RequiredArgsConstructor;
 import lombok.Setter;
-import org.apache.shardingsphere.encrypt.rewrite.aware.DatabaseNameAware;
+import org.apache.shardingsphere.encrypt.rewrite.aware.DatabaseAware;
 import org.apache.shardingsphere.encrypt.rule.EncryptRule;
 import org.apache.shardingsphere.infra.annotation.HighFrequencyInvocation;
 import 
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
 import 
org.apache.shardingsphere.infra.binder.context.statement.dml.UpdateStatementContext;
 import org.apache.shardingsphere.infra.binder.context.type.TableAvailable;
+import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.rewrite.sql.token.common.generator.CollectionSQLTokenGenerator;
 import org.apache.shardingsphere.infra.rewrite.sql.token.common.pojo.SQLToken;
 
@@ -36,11 +37,11 @@ import java.util.Collection;
 @HighFrequencyInvocation
 @RequiredArgsConstructor
 @Setter
-public final class EncryptUpdateAssignmentTokenGenerator implements 
CollectionSQLTokenGenerator<UpdateStatementContext>, DatabaseNameAware {
+public final class EncryptUpdateAssignmentTokenGenerator implements 
CollectionSQLTokenGenerator<UpdateStatementContext>, DatabaseAware {
     
     private final EncryptRule rule;
     
-    private String databaseName;
+    private ShardingSphereDatabase database;
     
     @Override
     public boolean isGenerateSQLToken(final SQLStatementContext 
sqlStatementContext) {
@@ -50,7 +51,7 @@ public final class EncryptUpdateAssignmentTokenGenerator 
implements CollectionSQ
     
     @Override
     public Collection<SQLToken> generateSQLTokens(final UpdateStatementContext 
sqlStatementContext) {
-        return new EncryptAssignmentTokenGenerator(rule, databaseName, 
sqlStatementContext.getDatabaseType())
+        return new EncryptAssignmentTokenGenerator(rule, database.getName(), 
sqlStatementContext.getDatabaseType())
                 .generateSQLTokens(sqlStatementContext.getTablesContext(), 
sqlStatementContext.getSqlStatement().getSetAssignment());
     }
 }
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 6c33f06c0aa..664e2925518 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
@@ -21,7 +21,7 @@ import com.google.common.base.Preconditions;
 import lombok.RequiredArgsConstructor;
 import lombok.Setter;
 import 
org.apache.shardingsphere.encrypt.exception.syntax.UnsupportedEncryptSQLException;
-import org.apache.shardingsphere.encrypt.rewrite.aware.DatabaseNameAware;
+import org.apache.shardingsphere.encrypt.rewrite.aware.DatabaseAware;
 import 
org.apache.shardingsphere.encrypt.rewrite.token.pojo.EncryptAssignmentToken;
 import 
org.apache.shardingsphere.encrypt.rewrite.token.pojo.EncryptFunctionAssignmentToken;
 import 
org.apache.shardingsphere.encrypt.rewrite.token.pojo.EncryptLiteralAssignmentToken;
@@ -35,6 +35,7 @@ import 
org.apache.shardingsphere.infra.annotation.HighFrequencyInvocation;
 import 
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
 import 
org.apache.shardingsphere.infra.binder.context.statement.dml.InsertStatementContext;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
+import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.rewrite.sql.token.common.generator.CollectionSQLTokenGenerator;
 import org.apache.shardingsphere.infra.rewrite.sql.token.common.pojo.SQLToken;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.assignment.ColumnAssignmentSegment;
@@ -56,11 +57,11 @@ import java.util.Optional;
 @HighFrequencyInvocation
 @RequiredArgsConstructor
 @Setter
-public final class EncryptInsertOnUpdateTokenGenerator implements 
CollectionSQLTokenGenerator<InsertStatementContext>, DatabaseNameAware {
+public final class EncryptInsertOnUpdateTokenGenerator implements 
CollectionSQLTokenGenerator<InsertStatementContext>, DatabaseAware {
     
     private final EncryptRule rule;
     
-    private String databaseName;
+    private ShardingSphereDatabase database;
     
     @Override
     public boolean isGenerateSQLToken(final SQLStatementContext 
sqlStatementContext) {
@@ -76,7 +77,7 @@ public final class EncryptInsertOnUpdateTokenGenerator 
implements CollectionSQLT
             return Collections.emptyList();
         }
         String schemaName = 
insertStatementContext.getTablesContext().getSchemaName()
-                .orElseGet(() -> new 
DatabaseTypeRegistry(insertStatementContext.getDatabaseType()).getDefaultSchemaName(databaseName));
+                .orElseGet(() -> new 
DatabaseTypeRegistry(insertStatementContext.getDatabaseType()).getDefaultSchemaName(database.getName()));
         String tableName = insertStatement.getTable().map(optional -> 
optional.getTableName().getIdentifier().getValue()).orElse("");
         EncryptTable encryptTable = rule.getEncryptTable(tableName);
         Collection<SQLToken> result = new LinkedList<>();
@@ -173,7 +174,7 @@ public final class EncryptInsertOnUpdateTokenGenerator 
implements CollectionSQLT
     private void addCipherAssignment(final String schemaName, final String 
tableName, final EncryptColumn encryptColumn,
                                      final ColumnAssignmentSegment 
assignmentSegment, final EncryptLiteralAssignmentToken token) {
         Object originalValue = ((LiteralExpressionSegment) 
assignmentSegment.getValue()).getLiterals();
-        Object cipherValue = encryptColumn.getCipher().encrypt(databaseName, 
schemaName, tableName, 
assignmentSegment.getColumns().get(0).getIdentifier().getValue(),
+        Object cipherValue = 
encryptColumn.getCipher().encrypt(database.getName(), schemaName, tableName, 
assignmentSegment.getColumns().get(0).getIdentifier().getValue(),
                 Collections.singletonList(originalValue)).iterator().next();
         token.addAssignment(encryptColumn.getCipher().getName(), cipherValue);
     }
@@ -183,7 +184,7 @@ public final class EncryptInsertOnUpdateTokenGenerator 
implements CollectionSQLT
         encryptColumn.getAssistedQuery().ifPresent(optional -> {
             Object originalValue = ((LiteralExpressionSegment) 
assignmentSegment.getValue()).getLiterals();
             Object assistedQueryValue = optional.encrypt(
-                    databaseName, schemaName, tableName, 
assignmentSegment.getColumns().get(0).getIdentifier().getValue(), 
Collections.singletonList(originalValue)).iterator().next();
+                    database.getName(), schemaName, tableName, 
assignmentSegment.getColumns().get(0).getIdentifier().getValue(), 
Collections.singletonList(originalValue)).iterator().next();
             token.addAssignment(optional.getName(), assistedQueryValue);
         });
     }
@@ -193,7 +194,7 @@ public final class EncryptInsertOnUpdateTokenGenerator 
implements CollectionSQLT
         encryptColumn.getLikeQuery().ifPresent(optional -> {
             Object originalValue = ((LiteralExpressionSegment) 
assignmentSegment.getValue()).getLiterals();
             Object likeValue = optional.encrypt(
-                    databaseName, schemaName, tableName, 
assignmentSegment.getColumns().get(0).getIdentifier().getValue(), 
Collections.singletonList(originalValue)).iterator().next();
+                    database.getName(), schemaName, tableName, 
assignmentSegment.getColumns().get(0).getIdentifier().getValue(), 
Collections.singletonList(originalValue)).iterator().next();
             token.addAssignment(optional.getName(), likeValue);
         });
     }
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 c6a64eb842e..138dba2ced8 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
@@ -20,7 +20,7 @@ package 
org.apache.shardingsphere.encrypt.rewrite.token.generator.insert;
 import com.google.common.base.Preconditions;
 import lombok.RequiredArgsConstructor;
 import lombok.Setter;
-import org.apache.shardingsphere.encrypt.rewrite.aware.DatabaseNameAware;
+import org.apache.shardingsphere.encrypt.rewrite.aware.DatabaseAware;
 import 
org.apache.shardingsphere.encrypt.rewrite.token.pojo.EncryptInsertValuesToken;
 import org.apache.shardingsphere.encrypt.rule.EncryptRule;
 import org.apache.shardingsphere.encrypt.rule.column.EncryptColumn;
@@ -33,6 +33,7 @@ import 
org.apache.shardingsphere.infra.binder.context.segment.insert.values.expr
 import 
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
 import 
org.apache.shardingsphere.infra.binder.context.statement.dml.InsertStatementContext;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
+import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.rewrite.sql.token.common.generator.OptionalSQLTokenGenerator;
 import 
org.apache.shardingsphere.infra.rewrite.sql.token.common.generator.aware.PreviousSQLTokensAware;
 import org.apache.shardingsphere.infra.rewrite.sql.token.common.pojo.SQLToken;
@@ -57,13 +58,13 @@ import java.util.Optional;
  */
 @RequiredArgsConstructor
 @Setter
-public final class EncryptInsertValuesTokenGenerator implements 
OptionalSQLTokenGenerator<InsertStatementContext>, PreviousSQLTokensAware, 
DatabaseNameAware {
+public final class EncryptInsertValuesTokenGenerator implements 
OptionalSQLTokenGenerator<InsertStatementContext>, PreviousSQLTokensAware, 
DatabaseAware {
     
     private final EncryptRule rule;
     
     private List<SQLToken> previousSQLTokens;
     
-    private String databaseName;
+    private ShardingSphereDatabase database;
     
     @Override
     public boolean isGenerateSQLToken(final SQLStatementContext 
sqlStatementContext) {
@@ -94,7 +95,7 @@ public final class EncryptInsertValuesTokenGenerator 
implements OptionalSQLToken
         EncryptTable encryptTable = rule.getEncryptTable(tableName);
         int count = 0;
         String schemaName = 
insertStatementContext.getTablesContext().getSchemaName()
-                .orElseGet(() -> new 
DatabaseTypeRegistry(insertStatementContext.getDatabaseType()).getDefaultSchemaName(databaseName));
+                .orElseGet(() -> new 
DatabaseTypeRegistry(insertStatementContext.getDatabaseType()).getDefaultSchemaName(database.getName()));
         for (InsertValueContext each : 
insertStatementContext.getInsertValueContexts()) {
             encryptToken(insertValuesToken.getInsertValues().get(count), 
schemaName, encryptTable, insertStatementContext, each);
             count++;
@@ -107,7 +108,7 @@ public final class EncryptInsertValuesTokenGenerator 
implements OptionalSQLToken
         InsertValuesToken result = new 
EncryptInsertValuesToken(getStartIndex(insertValuesSegments), 
getStopIndex(insertValuesSegments));
         EncryptTable encryptTable = rule.getEncryptTable(tableName);
         String schemaName = 
insertStatementContext.getTablesContext().getSchemaName()
-                .orElseGet(() -> new 
DatabaseTypeRegistry(insertStatementContext.getDatabaseType()).getDefaultSchemaName(databaseName));
+                .orElseGet(() -> new 
DatabaseTypeRegistry(insertStatementContext.getDatabaseType()).getDefaultSchemaName(database.getName()));
         for (InsertValueContext each : 
insertStatementContext.getInsertValueContexts()) {
             InsertValue insertValueToken = new InsertValue(new 
LinkedList<>(each.getValueExpressions()));
             encryptToken(insertValueToken, schemaName, encryptTable, 
insertStatementContext, each);
@@ -163,7 +164,8 @@ public final class EncryptInsertValuesTokenGenerator 
implements OptionalSQLToken
                                  final InsertValue insertValueToken, final 
ExpressionSegment valueExpression, final int columnIndex, final Object 
originalValue) {
         if (valueExpression instanceof LiteralExpressionSegment) {
             insertValueToken.getValues().set(columnIndex, new 
LiteralExpressionSegment(
-                    valueExpression.getStartIndex(), 
valueExpression.getStopIndex(), encryptColumn.getCipher().encrypt(databaseName, 
schemaName, tableName, encryptColumn.getName(), originalValue)));
+                    valueExpression.getStartIndex(), 
valueExpression.getStopIndex(),
+                    encryptColumn.getCipher().encrypt(database.getName(), 
schemaName, tableName, encryptColumn.getName(), originalValue)));
         }
     }
     
@@ -171,7 +173,7 @@ public final class EncryptInsertValuesTokenGenerator 
implements OptionalSQLToken
                                         final ExpressionSegment 
valueExpression, final int columnIndex, final int indexDelta, final Object 
originalValue) {
         Optional<AssistedQueryColumnItem> assistedQueryColumnItem = 
encryptColumn.getAssistedQuery();
         Preconditions.checkState(assistedQueryColumnItem.isPresent());
-        Object derivedValue = 
assistedQueryColumnItem.get().encrypt(databaseName, schemaName, tableName, 
encryptColumn.getName(), originalValue);
+        Object derivedValue = 
assistedQueryColumnItem.get().encrypt(database.getName(), schemaName, 
tableName, encryptColumn.getName(), originalValue);
         addDerivedColumn(insertValueToken, valueExpression, columnIndex, 
indexDelta, derivedValue, assistedQueryColumnItem.get().getName());
     }
     
@@ -179,7 +181,7 @@ public final class EncryptInsertValuesTokenGenerator 
implements OptionalSQLToken
                                     final ExpressionSegment valueExpression, 
final int columnIndex, final int indexDelta, final Object originalValue) {
         Optional<LikeQueryColumnItem> likeQueryColumnItem = 
encryptColumn.getLikeQuery();
         Preconditions.checkState(likeQueryColumnItem.isPresent());
-        Object derivedValue = likeQueryColumnItem.get().encrypt(databaseName, 
schemaName, tableName, encryptColumn.getName(), originalValue);
+        Object derivedValue = 
likeQueryColumnItem.get().encrypt(database.getName(), schemaName, tableName, 
encryptColumn.getName(), originalValue);
         addDerivedColumn(insertValueToken, valueExpression, columnIndex, 
indexDelta, derivedValue, likeQueryColumnItem.get().getName());
     }
     
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 cb4fa9e1c12..d5d933ca01d 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
@@ -19,13 +19,14 @@ package 
org.apache.shardingsphere.encrypt.rewrite.token.generator.predicate;
 
 import lombok.RequiredArgsConstructor;
 import lombok.Setter;
-import org.apache.shardingsphere.encrypt.rewrite.aware.DatabaseNameAware;
+import org.apache.shardingsphere.encrypt.rewrite.aware.DatabaseAware;
 import org.apache.shardingsphere.encrypt.rewrite.aware.EncryptConditionsAware;
 import org.apache.shardingsphere.encrypt.rewrite.condition.EncryptCondition;
 import org.apache.shardingsphere.encrypt.rule.EncryptRule;
 import org.apache.shardingsphere.infra.annotation.HighFrequencyInvocation;
 import 
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
 import 
org.apache.shardingsphere.infra.binder.context.statement.dml.InsertStatementContext;
+import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.rewrite.sql.token.common.generator.CollectionSQLTokenGenerator;
 import 
org.apache.shardingsphere.infra.rewrite.sql.token.common.generator.aware.ParametersAware;
 import org.apache.shardingsphere.infra.rewrite.sql.token.common.pojo.SQLToken;
@@ -39,7 +40,7 @@ import java.util.List;
 @HighFrequencyInvocation
 @RequiredArgsConstructor
 @Setter
-public final class EncryptInsertPredicateRightValueTokenGenerator implements 
CollectionSQLTokenGenerator<SQLStatementContext>, ParametersAware, 
EncryptConditionsAware, DatabaseNameAware {
+public final class EncryptInsertPredicateRightValueTokenGenerator implements 
CollectionSQLTokenGenerator<SQLStatementContext>, ParametersAware, 
EncryptConditionsAware, DatabaseAware {
     
     private final EncryptRule rule;
     
@@ -47,7 +48,7 @@ public final class 
EncryptInsertPredicateRightValueTokenGenerator implements Col
     
     private Collection<EncryptCondition> encryptConditions;
     
-    private String databaseName;
+    private ShardingSphereDatabase database;
     
     @Override
     public boolean isGenerateSQLToken(final SQLStatementContext 
sqlStatementContext) {
@@ -60,7 +61,7 @@ public final class 
EncryptInsertPredicateRightValueTokenGenerator implements Col
         EncryptPredicateRightValueTokenGenerator generator = new 
EncryptPredicateRightValueTokenGenerator(rule);
         generator.setParameters(parameters);
         generator.setEncryptConditions(encryptConditions);
-        generator.setDatabaseName(databaseName);
+        generator.setDatabase(database);
         return generator.generateSQLTokens(((InsertStatementContext) 
sqlStatementContext).getInsertSelectContext().getSelectStatementContext());
     }
 }
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 9d83fa7d758..efe01a79457 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
@@ -20,7 +20,7 @@ package 
org.apache.shardingsphere.encrypt.rewrite.token.generator.predicate;
 import lombok.RequiredArgsConstructor;
 import lombok.Setter;
 import 
org.apache.shardingsphere.encrypt.exception.metadata.MissingMatchedEncryptQueryAlgorithmException;
-import org.apache.shardingsphere.encrypt.rewrite.aware.DatabaseNameAware;
+import org.apache.shardingsphere.encrypt.rewrite.aware.DatabaseAware;
 import org.apache.shardingsphere.encrypt.rewrite.aware.EncryptConditionsAware;
 import org.apache.shardingsphere.encrypt.rewrite.condition.EncryptCondition;
 import 
org.apache.shardingsphere.encrypt.rewrite.condition.EncryptConditionValues;
@@ -38,6 +38,7 @@ import 
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementCont
 import org.apache.shardingsphere.infra.binder.context.type.TableAvailable;
 import org.apache.shardingsphere.infra.binder.context.type.WhereAvailable;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
+import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.rewrite.sql.token.common.generator.CollectionSQLTokenGenerator;
 import 
org.apache.shardingsphere.infra.rewrite.sql.token.common.generator.aware.ParametersAware;
 import org.apache.shardingsphere.infra.rewrite.sql.token.common.pojo.SQLToken;
@@ -55,7 +56,7 @@ import java.util.Map;
 @HighFrequencyInvocation
 @RequiredArgsConstructor
 @Setter
-public final class EncryptPredicateRightValueTokenGenerator implements 
CollectionSQLTokenGenerator<SQLStatementContext>, ParametersAware, 
EncryptConditionsAware, DatabaseNameAware {
+public final class EncryptPredicateRightValueTokenGenerator implements 
CollectionSQLTokenGenerator<SQLStatementContext>, ParametersAware, 
EncryptConditionsAware, DatabaseAware {
     
     private final EncryptRule rule;
     
@@ -63,7 +64,7 @@ public final class EncryptPredicateRightValueTokenGenerator 
implements Collectio
     
     private Collection<EncryptCondition> encryptConditions;
     
-    private String databaseName;
+    private ShardingSphereDatabase database;
     
     @Override
     public boolean isGenerateSQLToken(final SQLStatementContext 
sqlStatementContext) {
@@ -74,7 +75,7 @@ public final class EncryptPredicateRightValueTokenGenerator 
implements Collectio
     public Collection<SQLToken> generateSQLTokens(final SQLStatementContext 
sqlStatementContext) {
         Collection<SQLToken> result = new 
LinkedHashSet<>(encryptConditions.size(), 1F);
         String schemaName = ((TableAvailable) 
sqlStatementContext).getTablesContext().getSchemaName()
-                .orElseGet(() -> new 
DatabaseTypeRegistry(sqlStatementContext.getDatabaseType()).getDefaultSchemaName(databaseName));
+                .orElseGet(() -> new 
DatabaseTypeRegistry(sqlStatementContext.getDatabaseType()).getDefaultSchemaName(database.getName()));
         for (EncryptCondition each : encryptConditions) {
             rule.findEncryptTable(each.getTableName()).ifPresent(optional -> 
result.add(generateSQLToken(schemaName, optional, each)));
         }
@@ -101,11 +102,11 @@ public final class 
EncryptPredicateRightValueTokenGenerator implements Collectio
         if (encryptCondition instanceof EncryptBinaryCondition && 
"LIKE".equalsIgnoreCase(((EncryptBinaryCondition) 
encryptCondition).getOperator())) {
             LikeQueryColumnItem likeQueryColumnItem = 
encryptColumn.getLikeQuery()
                     .orElseThrow(() -> new 
MissingMatchedEncryptQueryAlgorithmException(encryptTable.getTable(), 
encryptCondition.getColumnName(), "LIKE"));
-            return likeQueryColumnItem.encrypt(databaseName, schemaName, 
encryptCondition.getTableName(), encryptCondition.getColumnName(), 
originalValues);
+            return likeQueryColumnItem.encrypt(database.getName(), schemaName, 
encryptCondition.getTableName(), encryptCondition.getColumnName(), 
originalValues);
         }
         return encryptColumn.getAssistedQuery()
-                .map(optional -> optional.encrypt(databaseName, schemaName, 
encryptCondition.getTableName(), encryptCondition.getColumnName(), 
originalValues))
-                .orElseGet(() -> 
encryptColumn.getCipher().encrypt(databaseName, schemaName, 
encryptCondition.getTableName(), encryptCondition.getColumnName(), 
originalValues));
+                .map(optional -> optional.encrypt(database.getName(), 
schemaName, encryptCondition.getTableName(), encryptCondition.getColumnName(), 
originalValues))
+                .orElseGet(() -> 
encryptColumn.getCipher().encrypt(database.getName(), schemaName, 
encryptCondition.getTableName(), encryptCondition.getColumnName(), 
originalValues));
     }
     
     private Map<Integer, Object> getPositionValues(final Collection<Integer> 
valuePositions, final List<Object> encryptValues) {
diff --git 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/EncryptTokenGenerateBuilderTest.java
 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/EncryptTokenGenerateBuilderTest.java
index 749be212eb3..f5087709ffc 100644
--- 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/EncryptTokenGenerateBuilderTest.java
+++ 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/EncryptTokenGenerateBuilderTest.java
@@ -21,7 +21,7 @@ import 
org.apache.shardingsphere.encrypt.rewrite.token.generator.projection.Encr
 import org.apache.shardingsphere.encrypt.rule.EncryptRule;
 import 
org.apache.shardingsphere.infra.binder.context.segment.select.orderby.OrderByItem;
 import 
org.apache.shardingsphere.infra.binder.context.statement.dml.SelectStatementContext;
-import org.apache.shardingsphere.infra.database.core.DefaultDatabase;
+import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.rewrite.sql.token.common.generator.SQLTokenGenerator;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -44,7 +44,7 @@ import static org.mockito.Mockito.when;
 class EncryptTokenGenerateBuilderTest {
     
     @Mock(answer = Answers.RETURNS_DEEP_STUBS)
-    private EncryptRule encryptRule;
+    private EncryptRule rule;
     
     @Test
     void assertGetSQLTokenGenerators() {
@@ -54,7 +54,7 @@ class EncryptTokenGenerateBuilderTest {
         
when(selectStatementContext.getOrderByContext().getItems()).thenReturn(Collections.singleton(mock(OrderByItem.class)));
         
when(selectStatementContext.getGroupByContext().getItems()).thenReturn(Collections.emptyList());
         
when(selectStatementContext.getWhereSegments()).thenReturn(Collections.emptyList());
-        EncryptTokenGenerateBuilder encryptTokenGenerateBuilder = new 
EncryptTokenGenerateBuilder(encryptRule, selectStatementContext, 
Collections.emptyList(), DefaultDatabase.LOGIC_NAME);
+        EncryptTokenGenerateBuilder encryptTokenGenerateBuilder = new 
EncryptTokenGenerateBuilder(rule, selectStatementContext, 
Collections.emptyList(), mock(ShardingSphereDatabase.class));
         Collection<SQLTokenGenerator> sqlTokenGenerators = 
encryptTokenGenerateBuilder.getSQLTokenGenerators();
         assertThat(sqlTokenGenerators.size(), is(1));
         Iterator<SQLTokenGenerator> iterator = sqlTokenGenerators.iterator();
diff --git 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertOnUpdateTokenGeneratorTest.java
 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertOnUpdateTokenGeneratorTest.java
index 3d32fe987d1..a84e756620d 100644
--- 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertOnUpdateTokenGeneratorTest.java
+++ 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertOnUpdateTokenGeneratorTest.java
@@ -23,6 +23,7 @@ import 
org.apache.shardingsphere.encrypt.rule.column.EncryptColumn;
 import org.apache.shardingsphere.encrypt.rule.table.EncryptTable;
 import 
org.apache.shardingsphere.infra.binder.context.statement.dml.InsertStatementContext;
 import 
org.apache.shardingsphere.infra.binder.context.statement.dml.SelectStatementContext;
+import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.rewrite.sql.token.common.pojo.SQLToken;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.assignment.ColumnAssignmentSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.column.ColumnSegment;
@@ -59,6 +60,7 @@ class EncryptInsertOnUpdateTokenGeneratorTest {
     @BeforeEach
     void setup() {
         generator = new EncryptInsertOnUpdateTokenGenerator(mockEncryptRule());
+        generator.setDatabase(mock(ShardingSphereDatabase.class));
     }
     
     private EncryptRule mockEncryptRule() {
diff --git 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertValuesTokenGeneratorTest.java
 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertValuesTokenGeneratorTest.java
index c9e92255309..a1437d6caca 100644
--- 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertValuesTokenGeneratorTest.java
+++ 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertValuesTokenGeneratorTest.java
@@ -18,6 +18,7 @@
 package org.apache.shardingsphere.encrypt.rewrite.token.generator.insert;
 
 import 
org.apache.shardingsphere.encrypt.rewrite.token.generator.fixture.EncryptGeneratorFixtureBuilder;
+import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
@@ -27,6 +28,8 @@ import java.util.Collections;
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
 
 class EncryptInsertValuesTokenGeneratorTest {
     
@@ -45,15 +48,21 @@ class EncryptInsertValuesTokenGeneratorTest {
     @Test
     void assertGenerateSQLTokenFromGenerateNewSQLToken() {
         generator.setPreviousSQLTokens(Collections.emptyList());
-        generator.setDatabaseName("db_schema");
+        ShardingSphereDatabase database = mock(ShardingSphereDatabase.class);
+        when(database.getName()).thenReturn("db_schema");
+        generator.setDatabase(database);
         
assertThat(generator.generateSQLToken(EncryptGeneratorFixtureBuilder.createInsertStatementContext(Arrays.asList(1,
 "Tom", 0, "123456"))).toString(), is("(?, ?, ?, ?, ?, ?)"));
     }
     
     @Test
     void assertGenerateSQLTokenFromPreviousSQLTokens() {
-        generator.setDatabaseName("db-001");
+        ShardingSphereDatabase database = mock(ShardingSphereDatabase.class);
+        when(database.getName()).thenReturn("db-001");
+        generator.setDatabase(database);
         
generator.setPreviousSQLTokens(EncryptGeneratorFixtureBuilder.getPreviousSQLTokens());
-        generator.setDatabaseName("db_schema");
+        database = mock(ShardingSphereDatabase.class);
+        when(database.getName()).thenReturn("db_schema");
+        generator.setDatabase(database);
         
assertThat(generator.generateSQLToken(EncryptGeneratorFixtureBuilder.createInsertStatementContext(Arrays.asList(1,
 "Tom", 0, "123456"))).toString(), is("(?, ?, ?, ?, ?, ?)"));
     }
 }
diff --git 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/predicate/EncryptPredicateRightValueTokenGeneratorTest.java
 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/predicate/EncryptPredicateRightValueTokenGeneratorTest.java
index 00043ff32fa..9c076acf788 100644
--- 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/predicate/EncryptPredicateRightValueTokenGeneratorTest.java
+++ 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/predicate/EncryptPredicateRightValueTokenGeneratorTest.java
@@ -47,14 +47,18 @@ class EncryptPredicateRightValueTokenGeneratorTest {
     
     @Test
     void assertIsGenerateSQLToken() {
-        generator.setDatabaseName(DefaultDatabase.LOGIC_NAME);
+        ShardingSphereDatabase database = mock(ShardingSphereDatabase.class);
+        when(database.getName()).thenReturn(DefaultDatabase.LOGIC_NAME);
+        generator.setDatabase(database);
         
assertTrue(generator.isGenerateSQLToken(EncryptGeneratorFixtureBuilder.createUpdateStatementContext()));
     }
     
     @Test
     void assertGenerateSQLTokenFromGenerateNewSQLToken() {
         UpdateStatementContext updateStatementContext = 
EncryptGeneratorFixtureBuilder.createUpdateStatementContext();
-        generator.setDatabaseName(DefaultDatabase.LOGIC_NAME);
+        ShardingSphereDatabase database = mock(ShardingSphereDatabase.class);
+        when(database.getName()).thenReturn(DefaultDatabase.LOGIC_NAME);
+        generator.setDatabase(database);
         
generator.setEncryptConditions(getEncryptConditions(updateStatementContext));
         Collection<SQLToken> sqlTokens = 
generator.generateSQLTokens(updateStatementContext);
         assertThat(sqlTokens.size(), is(1));


Reply via email to