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 dc853fddba9 Fix wrong schema metadata caused by schema capitalized
(#20512)
dc853fddba9 is described below
commit dc853fddba9be51fafbe316ac33f85231abdef4b
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Thu Aug 25 15:54:20 2022 +0800
Fix wrong schema metadata caused by schema capitalized (#20512)
---
.../infra/context/refresher/MetaDataRefreshEngine.java | 2 +-
.../refresher/type/AlterIndexStatementSchemaRefresher.java | 2 +-
.../refresher/type/AlterSchemaStatementSchemaRefresher.java | 10 ++++------
.../refresher/type/CreateSchemaStatementSchemaRefresher.java | 2 +-
.../refresher/type/DropIndexStatementSchemaRefresher.java | 2 +-
.../refresher/type/DropSchemaStatementSchemaRefresher.java | 2 +-
6 files changed, 9 insertions(+), 11 deletions(-)
diff --git
a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/MetaDataRefreshEngine.java
b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/MetaDataRefreshEngine.java
index cff82409f9b..ce33960556c 100644
---
a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/MetaDataRefreshEngine.java
+++
b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/MetaDataRefreshEngine.java
@@ -62,7 +62,7 @@ public final class MetaDataRefreshEngine {
Optional<MetaDataRefresher> schemaRefresher =
MetaDataRefresherFactory.findInstance(sqlStatementClass);
if (schemaRefresher.isPresent()) {
String schemaName =
sqlStatementContext.getTablesContext().getSchemaName()
- .orElseGet(() ->
DatabaseTypeEngine.getDefaultSchemaName(sqlStatementContext.getDatabaseType(),
database.getName()));
+ .orElseGet(() ->
DatabaseTypeEngine.getDefaultSchemaName(sqlStatementContext.getDatabaseType(),
database.getName())).toLowerCase();
Collection<String> logicDataSourceNames =
routeUnits.stream().map(each ->
each.getDataSourceMapper().getLogicName()).collect(Collectors.toList());
return schemaRefresher.get().refresh(database,
logicDataSourceNames, schemaName, sqlStatementContext.getSqlStatement(), props);
}
diff --git
a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/AlterIndexStatementSchemaRefresher.java
b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/AlterIndexStatementSchemaRefresher.java
index eb0ef27a778..aff5781645c 100644
---
a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/AlterIndexStatementSchemaRefresher.java
+++
b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/AlterIndexStatementSchemaRefresher.java
@@ -46,7 +46,7 @@ public final class AlterIndexStatementSchemaRefresher
implements MetaDataRefresh
if (!sqlStatement.getIndex().isPresent() || !renameIndex.isPresent()) {
return Optional.empty();
}
- String actualSchemaName =
sqlStatement.getIndex().get().getOwner().map(optional ->
optional.getIdentifier().getValue()).orElse(schemaName);
+ String actualSchemaName =
sqlStatement.getIndex().get().getOwner().map(optional ->
optional.getIdentifier().getValue().toLowerCase()).orElse(schemaName);
String indexName =
sqlStatement.getIndex().get().getIndexName().getIdentifier().getValue();
Optional<String> logicTableName =
findLogicTableName(database.getSchema(actualSchemaName), indexName);
if (logicTableName.isPresent()) {
diff --git
a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/AlterSchemaStatementSchemaRefresher.java
b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/AlterSchemaStatementSchemaRefresher.java
index 887f7ed0c71..c9921af76d2 100644
---
a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/AlterSchemaStatementSchemaRefresher.java
+++
b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/AlterSchemaStatementSchemaRefresher.java
@@ -26,7 +26,6 @@ import
org.apache.shardingsphere.infra.metadata.database.schema.event.MetaDataRe
import
org.apache.shardingsphere.infra.rule.identifier.type.DataNodeContainedRule;
import
org.apache.shardingsphere.infra.rule.identifier.type.MutableDataNodeRule;
import
org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.AlterSchemaStatement;
-import
org.apache.shardingsphere.sql.parser.sql.common.value.identifier.IdentifierValue;
import
org.apache.shardingsphere.sql.parser.sql.dialect.handler.ddl.AlterSchemaStatementHandler;
import java.sql.SQLException;
@@ -41,15 +40,14 @@ public final class AlterSchemaStatementSchemaRefresher
implements MetaDataRefres
@Override
public Optional<MetaDataRefreshedEvent> refresh(final
ShardingSphereDatabase database, final Collection<String> logicDataSourceNames,
final String schemaName,
final AlterSchemaStatement sqlStatement, final ConfigurationProperties props)
throws SQLException {
- Optional<IdentifierValue> renameSchemaName =
AlterSchemaStatementHandler.getRenameSchema(sqlStatement);
+ Optional<String> renameSchemaName =
AlterSchemaStatementHandler.getRenameSchema(sqlStatement).map(optional ->
optional.getValue().toLowerCase());
if (!renameSchemaName.isPresent()) {
return Optional.empty();
}
- String actualSchemaName = sqlStatement.getSchemaName().getValue();
- putSchemaMetaData(database, actualSchemaName,
renameSchemaName.get().getValue(), logicDataSourceNames);
+ String actualSchemaName =
sqlStatement.getSchemaName().getValue().toLowerCase();
+ putSchemaMetaData(database, actualSchemaName, renameSchemaName.get(),
logicDataSourceNames);
removeSchemaMetaData(database, actualSchemaName);
- AlterSchemaEvent event = new AlterSchemaEvent(
- database.getName(), actualSchemaName,
renameSchemaName.get().getValue(),
database.getSchema(renameSchemaName.get().getValue()));
+ AlterSchemaEvent event = new AlterSchemaEvent(database.getName(),
actualSchemaName, renameSchemaName.get(),
database.getSchema(renameSchemaName.get()));
return Optional.of(event);
}
diff --git
a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/CreateSchemaStatementSchemaRefresher.java
b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/CreateSchemaStatementSchemaRefresher.java
index 1353f14b36f..97a73d40008 100644
---
a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/CreateSchemaStatementSchemaRefresher.java
+++
b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/CreateSchemaStatementSchemaRefresher.java
@@ -43,7 +43,7 @@ public final class CreateSchemaStatementSchemaRefresher
implements MetaDataRefre
if (!schema.isPresent()) {
return Optional.empty();
}
- String actualSchemaName = schema.get().getValue();
+ String actualSchemaName = schema.get().getValue().toLowerCase();
database.putSchema(actualSchemaName, new ShardingSphereSchema());
AddSchemaEvent event = new AddSchemaEvent(database.getName(),
actualSchemaName);
return Optional.of(event);
diff --git
a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/DropIndexStatementSchemaRefresher.java
b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/DropIndexStatementSchemaRefresher.java
index e2654ee4a29..6d12c6568e7 100644
---
a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/DropIndexStatementSchemaRefresher.java
+++
b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/DropIndexStatementSchemaRefresher.java
@@ -46,7 +46,7 @@ public final class DropIndexStatementSchemaRefresher
implements MetaDataRefreshe
final String schemaName,
final DropIndexStatement sqlStatement, final ConfigurationProperties props)
throws SQLException {
DropIndexEvent event = new DropIndexEvent();
for (IndexSegment each : sqlStatement.getIndexes()) {
- String actualSchemaName = each.getOwner().map(optional ->
optional.getIdentifier().getValue()).orElse(schemaName);
+ String actualSchemaName = each.getOwner().map(optional ->
optional.getIdentifier().getValue().toLowerCase()).orElse(schemaName);
Optional<String> logicTableName = findLogicTableName(database,
sqlStatement, Collections.singletonList(each));
if (!logicTableName.isPresent()) {
continue;
diff --git
a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/DropSchemaStatementSchemaRefresher.java
b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/DropSchemaStatementSchemaRefresher.java
index 91b7768d145..7fb7c4453af 100644
---
a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/DropSchemaStatementSchemaRefresher.java
+++
b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/DropSchemaStatementSchemaRefresher.java
@@ -60,7 +60,7 @@ public final class DropSchemaStatementSchemaRefresher
implements MetaDataRefresh
private Collection<String> getSchemaNames(final DropSchemaStatement
sqlStatement) {
Collection<String> result = new LinkedList<>();
for (IdentifierValue each : sqlStatement.getSchemaNames()) {
- result.add(each.getValue());
+ result.add(each.getValue().toLowerCase());
}
return result;
}