This is an automated email from the ASF dual-hosted git repository.

zhaojinchao 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 3ef41236543 Refactor SchemaMetaDataAware (#32380)
3ef41236543 is described below

commit 3ef412365436e30e2e89802ff6b8b6e51654755c
Author: Liang Zhang <[email protected]>
AuthorDate: Sat Aug 3 17:49:25 2024 +0800

    Refactor SchemaMetaDataAware (#32380)
    
    * Refactor SchemaMetaDataAware
    
    * Refactor SchemaMetaDataAware
---
 .../rewrite/parameter/EncryptParameterRewriterBuilder.java   |  2 ++
 .../token/generator/EncryptGroupByItemTokenGenerator.java    | 12 +++++-------
 .../token/generator/EncryptOrderByItemTokenGenerator.java    | 10 ++++------
 .../predicate/EncryptPredicateColumnTokenGenerator.java      | 10 ++++------
 .../generator/EncryptGroupByItemTokenGeneratorTest.java      |  1 -
 .../generator/EncryptOrderByItemTokenGeneratorTest.java      |  1 -
 .../predicate/EncryptPredicateColumnTokenGeneratorTest.java  |  4 ----
 .../rewrite/token/generator/impl/IndexTokenGenerator.java    |  8 +++-----
 .../rewrite/token/generator/IndexTokenGeneratorTest.java     |  1 -
 .../rewrite/sql/token/generator/SQLTokenGenerators.java      |  8 +++++---
 .../sql/token/generator/aware/SchemaMetaDataAware.java       | 12 ++++++------
 11 files changed, 29 insertions(+), 40 deletions(-)

diff --git 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/parameter/EncryptParameterRewriterBuilder.java
 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/parameter/EncryptParameterRewriterBuilder.java
index edc11b5e1f5..abe4990b7fe 100644
--- 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/parameter/EncryptParameterRewriterBuilder.java
+++ 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/parameter/EncryptParameterRewriterBuilder.java
@@ -29,6 +29,7 @@ import 
org.apache.shardingsphere.encrypt.rewrite.parameter.rewriter.EncryptInser
 import 
org.apache.shardingsphere.encrypt.rewrite.parameter.rewriter.EncryptPredicateParameterRewriter;
 import org.apache.shardingsphere.encrypt.rule.EncryptRule;
 import 
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
 import 
org.apache.shardingsphere.infra.rewrite.parameter.rewriter.ParameterRewriter;
 import 
org.apache.shardingsphere.infra.rewrite.parameter.rewriter.ParameterRewriterBuilder;
@@ -74,6 +75,7 @@ public final class EncryptParameterRewriterBuilder implements 
ParameterRewriterB
     private void setUpParameterRewriter(final ParameterRewriter 
toBeAddedParamRewriter) {
         if (toBeAddedParamRewriter instanceof SchemaMetaDataAware) {
             ((SchemaMetaDataAware) toBeAddedParamRewriter).setSchemas(schemas);
+            ((SchemaMetaDataAware) 
toBeAddedParamRewriter).setDefaultSchema(schemas.get(new 
DatabaseTypeRegistry(sqlStatementContext.getDatabaseType()).getDefaultSchemaName(databaseName)));
         }
         if (toBeAddedParamRewriter instanceof EncryptRuleAware) {
             ((EncryptRuleAware) 
toBeAddedParamRewriter).setEncryptRule(encryptRule);
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 006942113a6..b747cd8d9c2 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
@@ -21,8 +21,8 @@ import lombok.Setter;
 import org.apache.shardingsphere.encrypt.rewrite.aware.DatabaseTypeAware;
 import org.apache.shardingsphere.encrypt.rewrite.aware.EncryptRuleAware;
 import org.apache.shardingsphere.encrypt.rule.EncryptRule;
-import org.apache.shardingsphere.encrypt.rule.table.EncryptTable;
 import org.apache.shardingsphere.encrypt.rule.column.EncryptColumn;
+import org.apache.shardingsphere.encrypt.rule.table.EncryptTable;
 import org.apache.shardingsphere.infra.annotation.HighFrequencyInvocation;
 import 
org.apache.shardingsphere.infra.binder.context.segment.select.orderby.OrderByItem;
 import 
org.apache.shardingsphere.infra.binder.context.segment.select.projection.Projection;
@@ -32,7 +32,6 @@ import 
org.apache.shardingsphere.infra.binder.context.statement.dml.SelectStatem
 import org.apache.shardingsphere.infra.binder.context.type.TableAvailable;
 import 
org.apache.shardingsphere.infra.database.core.metadata.database.enums.QuoteCharacter;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
 import 
org.apache.shardingsphere.infra.rewrite.sql.token.generator.CollectionSQLTokenGenerator;
 import 
org.apache.shardingsphere.infra.rewrite.sql.token.generator.aware.SchemaMetaDataAware;
@@ -54,13 +53,13 @@ import java.util.Optional;
  */
 @HighFrequencyInvocation
 @Setter
-public final class EncryptGroupByItemTokenGenerator implements 
CollectionSQLTokenGenerator<SQLStatementContext>, SchemaMetaDataAware, 
EncryptRuleAware, DatabaseTypeAware {
+public final class EncryptGroupByItemTokenGenerator implements 
CollectionSQLTokenGenerator<SQLStatementContext>, EncryptRuleAware, 
SchemaMetaDataAware, DatabaseTypeAware {
     
-    private String databaseName;
+    private EncryptRule encryptRule;
     
     private Map<String, ShardingSphereSchema> schemas;
     
-    private EncryptRule encryptRule;
+    private ShardingSphereSchema defaultSchema;
     
     private DatabaseType databaseType;
     
@@ -72,8 +71,7 @@ public final class EncryptGroupByItemTokenGenerator 
implements CollectionSQLToke
     @Override
     public Collection<SQLToken> generateSQLTokens(final SQLStatementContext 
sqlStatementContext) {
         Collection<SQLToken> result = new LinkedHashSet<>();
-        String defaultSchema = new 
DatabaseTypeRegistry(sqlStatementContext.getDatabaseType()).getDefaultSchemaName(databaseName);
-        ShardingSphereSchema schema = ((TableAvailable) 
sqlStatementContext).getTablesContext().getSchemaName().map(schemas::get).orElseGet(()
 -> schemas.get(defaultSchema));
+        ShardingSphereSchema schema = ((TableAvailable) 
sqlStatementContext).getTablesContext().getSchemaName().map(schemas::get).orElseGet(()
 -> defaultSchema);
         for (OrderByItem each : getGroupByItems(sqlStatementContext)) {
             if (each.getSegment() instanceof ColumnOrderByItemSegment) {
                 ColumnSegment columnSegment = ((ColumnOrderByItemSegment) 
each.getSegment()).getColumn();
diff --git 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptOrderByItemTokenGenerator.java
 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptOrderByItemTokenGenerator.java
index 7dffe3b0518..be13ab16961 100644
--- 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptOrderByItemTokenGenerator.java
+++ 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptOrderByItemTokenGenerator.java
@@ -27,7 +27,6 @@ import 
org.apache.shardingsphere.infra.binder.context.segment.select.orderby.Ord
 import 
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
 import 
org.apache.shardingsphere.infra.binder.context.statement.dml.SelectStatementContext;
 import org.apache.shardingsphere.infra.binder.context.type.TableAvailable;
-import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
 import 
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
 import 
org.apache.shardingsphere.infra.rewrite.sql.token.generator.CollectionSQLTokenGenerator;
@@ -49,13 +48,13 @@ import java.util.Optional;
  */
 @HighFrequencyInvocation
 @Setter
-public final class EncryptOrderByItemTokenGenerator implements 
CollectionSQLTokenGenerator<SQLStatementContext>, SchemaMetaDataAware, 
EncryptRuleAware {
+public final class EncryptOrderByItemTokenGenerator implements 
CollectionSQLTokenGenerator<SQLStatementContext>, EncryptRuleAware, 
SchemaMetaDataAware {
     
-    private String databaseName;
+    private EncryptRule encryptRule;
     
     private Map<String, ShardingSphereSchema> schemas;
     
-    private EncryptRule encryptRule;
+    private ShardingSphereSchema defaultSchema;
     
     @Override
     public boolean isGenerateSQLToken(final SQLStatementContext 
sqlStatementContext) {
@@ -65,8 +64,7 @@ public final class EncryptOrderByItemTokenGenerator 
implements CollectionSQLToke
     @Override
     public Collection<SQLToken> generateSQLTokens(final SQLStatementContext 
sqlStatementContext) {
         Collection<SQLToken> result = new LinkedHashSet<>();
-        String defaultSchema = new 
DatabaseTypeRegistry(sqlStatementContext.getDatabaseType()).getDefaultSchemaName(databaseName);
-        ShardingSphereSchema schema = ((TableAvailable) 
sqlStatementContext).getTablesContext().getSchemaName().map(schemas::get).orElseGet(()
 -> schemas.get(defaultSchema));
+        ShardingSphereSchema schema = ((TableAvailable) 
sqlStatementContext).getTablesContext().getSchemaName().map(schemas::get).orElseGet(()
 -> defaultSchema);
         for (OrderByItem each : getOrderByItems(sqlStatementContext)) {
             if (each.getSegment() instanceof ColumnOrderByItemSegment) {
                 ColumnSegment columnSegment = ((ColumnOrderByItemSegment) 
each.getSegment()).getColumn();
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 2770b4be3c6..16081afb5b6 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
@@ -33,7 +33,6 @@ 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.metadata.database.enums.QuoteCharacter;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
 import 
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
 import 
org.apache.shardingsphere.infra.exception.generic.UnsupportedSQLOperationException;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
@@ -60,13 +59,13 @@ import java.util.Optional;
  */
 @HighFrequencyInvocation
 @Setter
-public final class EncryptPredicateColumnTokenGenerator implements 
CollectionSQLTokenGenerator<SQLStatementContext>, SchemaMetaDataAware, 
EncryptRuleAware {
+public final class EncryptPredicateColumnTokenGenerator implements 
CollectionSQLTokenGenerator<SQLStatementContext>, EncryptRuleAware, 
SchemaMetaDataAware {
     
-    private String databaseName;
+    private EncryptRule encryptRule;
     
     private Map<String, ShardingSphereSchema> schemas;
     
-    private EncryptRule encryptRule;
+    private ShardingSphereSchema defaultSchema;
     
     @Override
     public boolean isGenerateSQLToken(final SQLStatementContext 
sqlStatementContext) {
@@ -79,8 +78,7 @@ public final class EncryptPredicateColumnTokenGenerator 
implements CollectionSQL
                 () -> new UnsupportedSQLOperationException("Can not use 
different encryptor in join condition"));
         Collection<ColumnSegment> columnSegments = ((WhereAvailable) 
sqlStatementContext).getColumnSegments();
         Collection<WhereSegment> whereSegments = ((WhereAvailable) 
sqlStatementContext).getWhereSegments();
-        String defaultSchema = new 
DatabaseTypeRegistry(sqlStatementContext.getDatabaseType()).getDefaultSchemaName(databaseName);
-        ShardingSphereSchema schema = ((TableAvailable) 
sqlStatementContext).getTablesContext().getSchemaName().map(schemas::get).orElseGet(()
 -> schemas.get(defaultSchema));
+        ShardingSphereSchema schema = ((TableAvailable) 
sqlStatementContext).getTablesContext().getSchemaName().map(schemas::get).orElseGet(()
 -> defaultSchema);
         Map<String, String> columnExpressionTableNames = ((TableAvailable) 
sqlStatementContext).getTablesContext().findTableNames(columnSegments, schema);
         return generateSQLTokens(columnSegments, columnExpressionTableNames, 
whereSegments, sqlStatementContext.getDatabaseType());
     }
diff --git 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptGroupByItemTokenGeneratorTest.java
 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptGroupByItemTokenGeneratorTest.java
index c65b5462126..c3e339c813d 100644
--- 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptGroupByItemTokenGeneratorTest.java
+++ 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptGroupByItemTokenGeneratorTest.java
@@ -57,7 +57,6 @@ class EncryptGroupByItemTokenGeneratorTest {
     @BeforeEach
     void setup() {
         generator.setEncryptRule(mockEncryptRule());
-        generator.setDatabaseName("db_schema");
         generator.setSchemas(Collections.singletonMap("test", 
mock(ShardingSphereSchema.class)));
         generator.setDatabaseType(databaseType);
     }
diff --git 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptOrderByItemTokenGeneratorTest.java
 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptOrderByItemTokenGeneratorTest.java
index 0cc36f7c0ca..24e9c7fe7fd 100644
--- 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptOrderByItemTokenGeneratorTest.java
+++ 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptOrderByItemTokenGeneratorTest.java
@@ -57,7 +57,6 @@ class EncryptOrderByItemTokenGeneratorTest {
     @BeforeEach
     void setup() {
         generator.setEncryptRule(mockEncryptRule());
-        generator.setDatabaseName("db_schema");
         generator.setSchemas(Collections.singletonMap("test", 
mock(ShardingSphereSchema.class)));
     }
     
diff --git 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/predicate/EncryptPredicateColumnTokenGeneratorTest.java
 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/predicate/EncryptPredicateColumnTokenGeneratorTest.java
index 8c1206d76a6..606e21d6656 100644
--- 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/predicate/EncryptPredicateColumnTokenGeneratorTest.java
+++ 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/predicate/EncryptPredicateColumnTokenGeneratorTest.java
@@ -18,7 +18,6 @@
 package org.apache.shardingsphere.encrypt.rewrite.token.generator.predicate;
 
 import 
org.apache.shardingsphere.encrypt.rewrite.token.generator.fixture.EncryptGeneratorFixtureBuilder;
-import org.apache.shardingsphere.infra.database.core.DefaultDatabase;
 import 
org.apache.shardingsphere.infra.exception.generic.UnsupportedSQLOperationException;
 import org.apache.shardingsphere.infra.rewrite.sql.token.pojo.SQLToken;
 import 
org.apache.shardingsphere.infra.rewrite.sql.token.pojo.generic.SubstitutableColumnNameToken;
@@ -44,14 +43,12 @@ class EncryptPredicateColumnTokenGeneratorTest {
     
     @Test
     void assertIsGenerateSQLToken() {
-        generator.setDatabaseName(DefaultDatabase.LOGIC_NAME);
         generator.setSchemas(Collections.emptyMap());
         
assertTrue(generator.isGenerateSQLToken(EncryptGeneratorFixtureBuilder.createUpdateStatementContext()));
     }
     
     @Test
     void assertGenerateSQLTokenFromGenerateNewSQLToken() {
-        generator.setDatabaseName(DefaultDatabase.LOGIC_NAME);
         generator.setSchemas(Collections.emptyMap());
         Collection<SQLToken> substitutableColumnNameTokens = 
generator.generateSQLTokens(EncryptGeneratorFixtureBuilder.createUpdateStatementContext());
         assertThat(substitutableColumnNameTokens.size(), is(1));
@@ -60,7 +57,6 @@ class EncryptPredicateColumnTokenGeneratorTest {
     
     @Test
     void assertGenerateSQLTokensWhenJoinConditionUseDifferentEncryptor() {
-        generator.setDatabaseName(DefaultDatabase.LOGIC_NAME);
         generator.setSchemas(Collections.emptyMap());
         assertThrows(UnsupportedSQLOperationException.class, () -> 
generator.generateSQLTokens(EncryptGeneratorFixtureBuilder.createSelectStatementContext()));
     }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/IndexTokenGenerator.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/IndexTokenGenerator.java
index cc6acaaf42d..7e8f93a9257 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/IndexTokenGenerator.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/IndexTokenGenerator.java
@@ -23,7 +23,6 @@ import 
org.apache.shardingsphere.infra.binder.context.type.IndexAvailable;
 import 
org.apache.shardingsphere.infra.database.core.metadata.database.object.DialectObjectUniquenessLevelProvider;
 import 
org.apache.shardingsphere.infra.database.core.metadata.database.object.DialectObjectUniquenessLevelProvider.UniquenessLevel;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
 import 
org.apache.shardingsphere.infra.rewrite.sql.token.generator.CollectionSQLTokenGenerator;
 import 
org.apache.shardingsphere.infra.rewrite.sql.token.generator.aware.SchemaMetaDataAware;
@@ -46,10 +45,10 @@ public final class IndexTokenGenerator implements 
CollectionSQLTokenGenerator<SQ
     
     private ShardingRule shardingRule;
     
-    private String databaseName;
-    
     private Map<String, ShardingSphereSchema> schemas;
     
+    private ShardingSphereSchema defaultSchema;
+    
     @Override
     public boolean isGenerateSQLToken(final SQLStatementContext 
sqlStatementContext) {
         return sqlStatementContext instanceof IndexAvailable && 
!((IndexAvailable) sqlStatementContext).getIndexes().isEmpty() && 
isSchemaUniquenessLevelIndex(sqlStatementContext.getDatabaseType());
@@ -62,10 +61,9 @@ public final class IndexTokenGenerator implements 
CollectionSQLTokenGenerator<SQ
     @Override
     public Collection<SQLToken> generateSQLTokens(final SQLStatementContext 
sqlStatementContext) {
         Collection<SQLToken> result = new LinkedList<>();
-        String defaultSchemaName = new 
DatabaseTypeRegistry(sqlStatementContext.getDatabaseType()).getDefaultSchemaName(databaseName);
         if (sqlStatementContext instanceof IndexAvailable) {
             for (IndexSegment each : ((IndexAvailable) 
sqlStatementContext).getIndexes()) {
-                ShardingSphereSchema schema = each.getOwner().isPresent() ? 
schemas.get(each.getOwner().get().getIdentifier().getValue()) : 
schemas.get(defaultSchemaName);
+                ShardingSphereSchema schema = each.getOwner().isPresent() ? 
schemas.get(each.getOwner().get().getIdentifier().getValue()) : defaultSchema;
                 result.add(new IndexToken(each.getIndexName().getStartIndex(), 
each.getStopIndex(), each.getIndexName().getIdentifier(), sqlStatementContext, 
shardingRule, schema));
             }
         }
diff --git 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/generator/IndexTokenGeneratorTest.java
 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/generator/IndexTokenGeneratorTest.java
index f9dc599a331..6690d5cbb53 100644
--- 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/generator/IndexTokenGeneratorTest.java
+++ 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/generator/IndexTokenGeneratorTest.java
@@ -72,7 +72,6 @@ class IndexTokenGeneratorTest {
         IndexTokenGenerator generator = new IndexTokenGenerator();
         generator.setShardingRule(mock(ShardingRule.class));
         generator.setSchemas(Collections.singletonMap("test", 
mock(ShardingSphereSchema.class)));
-        generator.setDatabaseName("test");
         Collection<SQLToken> actual = 
generator.generateSQLTokens(alterIndexStatementContext);
         assertThat(actual.size(), is(1));
         assertThat((new LinkedList<>(actual)).get(0).getStartIndex(), is(1));
diff --git 
a/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/generator/SQLTokenGenerators.java
 
b/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/generator/SQLTokenGenerators.java
index 6a755ae4dc3..f91375006a1 100644
--- 
a/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/generator/SQLTokenGenerators.java
+++ 
b/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/generator/SQLTokenGenerators.java
@@ -18,6 +18,7 @@
 package org.apache.shardingsphere.infra.rewrite.sql.token.generator;
 
 import 
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
 import 
org.apache.shardingsphere.infra.rewrite.sql.token.generator.aware.ConnectionContextAware;
 import 
org.apache.shardingsphere.infra.rewrite.sql.token.generator.aware.ParametersAware;
@@ -62,7 +63,7 @@ public final class SQLTokenGenerators {
                                             final SQLStatementContext 
sqlStatementContext, final List<Object> params, final ConnectionContext 
connectionContext) {
         List<SQLToken> result = new LinkedList<>();
         for (SQLTokenGenerator each : generators) {
-            setUpSQLTokenGenerator(each, params, databaseName, schemas, 
result, connectionContext);
+            setUpSQLTokenGenerator(each, params, databaseName, schemas, 
sqlStatementContext, result, connectionContext);
             if (each instanceof OptionalSQLTokenGenerator) {
                 SQLToken sqlToken = ((OptionalSQLTokenGenerator) 
each).generateSQLToken(sqlStatementContext);
                 if (!result.contains(sqlToken)) {
@@ -76,13 +77,14 @@ public final class SQLTokenGenerators {
     }
     
     private void setUpSQLTokenGenerator(final SQLTokenGenerator 
sqlTokenGenerator, final List<Object> params,
-                                        final String databaseName, final 
Map<String, ShardingSphereSchema> schemas, final List<SQLToken> 
previousSQLTokens, final ConnectionContext connectionContext) {
+                                        final String databaseName, final 
Map<String, ShardingSphereSchema> schemas,
+                                        final SQLStatementContext 
sqlStatementContext, final List<SQLToken> previousSQLTokens, final 
ConnectionContext connectionContext) {
         if (sqlTokenGenerator instanceof ParametersAware) {
             ((ParametersAware) sqlTokenGenerator).setParameters(params);
         }
         if (sqlTokenGenerator instanceof SchemaMetaDataAware) {
             ((SchemaMetaDataAware) sqlTokenGenerator).setSchemas(schemas);
-            ((SchemaMetaDataAware) 
sqlTokenGenerator).setDatabaseName(databaseName);
+            ((SchemaMetaDataAware) 
sqlTokenGenerator).setDefaultSchema(schemas.get(new 
DatabaseTypeRegistry(sqlStatementContext.getDatabaseType()).getDefaultSchemaName(databaseName)));
         }
         if (sqlTokenGenerator instanceof PreviousSQLTokensAware) {
             ((PreviousSQLTokensAware) 
sqlTokenGenerator).setPreviousSQLTokens(previousSQLTokens);
diff --git 
a/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/generator/aware/SchemaMetaDataAware.java
 
b/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/generator/aware/SchemaMetaDataAware.java
index bcbf5f487be..f11d95cb313 100644
--- 
a/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/generator/aware/SchemaMetaDataAware.java
+++ 
b/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/generator/aware/SchemaMetaDataAware.java
@@ -27,16 +27,16 @@ import java.util.Map;
 public interface SchemaMetaDataAware {
     
     /**
-     * Set database name.
+     * Set schema meta data.
      *
-     * @param databaseName database name
+     * @param schemas schema meta data map
      */
-    void setDatabaseName(String databaseName);
+    void setSchemas(Map<String, ShardingSphereSchema> schemas);
     
     /**
-     * Set schema meta data.
+     * Set default schema.
      *
-     * @param schemas schema meta data map
+     * @param defaultSchema default schema
      */
-    void setSchemas(Map<String, ShardingSphereSchema> schemas);
+    void setDefaultSchema(ShardingSphereSchema defaultSchema);
 }

Reply via email to