You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2022/08/25 07:54:32 UTC
[shardingsphere] branch master updated: Fix wrong schema metadata caused by schema capitalized (#20512)
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 <du...@apache.org>
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;
}