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