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