You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by ch...@apache.org on 2024/08/16 02:20:19 UTC

(shardingsphere) branch master updated: Throw necessary exception for metadata refreshers (#32536)

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

chengzhang 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 50ede7b294d Throw necessary exception for metadata refreshers (#32536)
50ede7b294d is described below

commit 50ede7b294dd47c8dde2892c6935564c1227a268
Author: Haoran Meng <me...@gmail.com>
AuthorDate: Fri Aug 16 10:20:11 2024 +0800

    Throw necessary exception for metadata refreshers (#32536)
---
 .../index/AlterIndexStatementSchemaRefresher.java   | 21 ++++++++++-----------
 .../index/CreateIndexStatementSchemaRefresher.java  |  5 ++---
 .../schema/AlterSchemaStatementSchemaRefresher.java |  5 ++---
 .../table/CreateTableStatementSchemaRefresher.java  | 10 +++++-----
 .../view/CreateViewStatementSchemaRefresher.java    | 12 ++++++------
 5 files changed, 25 insertions(+), 28 deletions(-)

diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/index/AlterIndexStatementSchemaRefresher.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/index/AlterIndexStatementSchemaRefresher.java
index f5e28071e91..45e600bb1b0 100644
--- a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/index/AlterIndexStatementSchemaRefresher.java
+++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/index/AlterIndexStatementSchemaRefresher.java
@@ -48,17 +48,16 @@ public final class AlterIndexStatementSchemaRefresher implements MetaDataRefresh
         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()) {
-            ShardingSphereTable table = database.getSchema(actualSchemaName).getTable(logicTableName.get());
-            Preconditions.checkNotNull(table, "Can not get the table '%s' meta data!", logicTableName.get());
-            ShardingSphereTable newTable = newShardingSphereTable(table);
-            newTable.removeIndex(indexName);
-            String renameIndexName = renameIndex.get().getIndexName().getIdentifier().getValue();
-            newTable.putIndex(new ShardingSphereIndex(renameIndexName));
-            AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new AlterSchemaMetaDataPOJO(database.getName(), actualSchemaName);
-            alterSchemaMetaDataPOJO.getAlteredTables().add(newTable);
-            metaDataManagerPersistService.alterSchemaMetaData(alterSchemaMetaDataPOJO);
-        }
+        Preconditions.checkState(logicTableName.isPresent(), String.format("Can not find logic table by index '%s' of schema '%s'.", indexName, schemaName));
+        ShardingSphereTable table = database.getSchema(actualSchemaName).getTable(logicTableName.get());
+        Preconditions.checkNotNull(table, "Can not get the table '%s' meta data!", logicTableName.get());
+        ShardingSphereTable newTable = newShardingSphereTable(table);
+        newTable.removeIndex(indexName);
+        String renameIndexName = renameIndex.get().getIndexName().getIdentifier().getValue();
+        newTable.putIndex(new ShardingSphereIndex(renameIndexName));
+        AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new AlterSchemaMetaDataPOJO(database.getName(), actualSchemaName);
+        alterSchemaMetaDataPOJO.getAlteredTables().add(newTable);
+        metaDataManagerPersistService.alterSchemaMetaData(alterSchemaMetaDataPOJO);
     }
     
     private Optional<String> findLogicTableName(final ShardingSphereSchema schema, final String indexName) {
diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/index/CreateIndexStatementSchemaRefresher.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/index/CreateIndexStatementSchemaRefresher.java
index d16566f23ef..7e79573c7dc 100644
--- a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/index/CreateIndexStatementSchemaRefresher.java
+++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/index/CreateIndexStatementSchemaRefresher.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.mode.metadata.refresher.type.index;
 
+import com.google.common.base.Preconditions;
 import com.google.common.base.Strings;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
@@ -42,9 +43,7 @@ public final class CreateIndexStatementSchemaRefresher implements MetaDataRefres
         String indexName = null == sqlStatement.getIndex()
                 ? IndexMetaDataUtils.getGeneratedLogicIndexName(sqlStatement.getColumns())
                 : sqlStatement.getIndex().getIndexName().getIdentifier().getValue();
-        if (Strings.isNullOrEmpty(indexName)) {
-            return;
-        }
+        Preconditions.checkArgument(!Strings.isNullOrEmpty(indexName), "Index name is not exist.");
         String tableName = sqlStatement.getTable().getTableName().getIdentifier().getValue();
         ShardingSphereTable table = newShardingSphereTable(database.getSchema(schemaName).getTable(tableName));
         table.putIndex(new ShardingSphereIndex(indexName));
diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/schema/AlterSchemaStatementSchemaRefresher.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/schema/AlterSchemaStatementSchemaRefresher.java
index 230c291c590..7286e9ae78b 100644
--- a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/schema/AlterSchemaStatementSchemaRefresher.java
+++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/schema/AlterSchemaStatementSchemaRefresher.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.mode.metadata.refresher.type.schema;
 
+import com.google.common.base.Preconditions;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
 import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
@@ -38,9 +39,7 @@ public final class AlterSchemaStatementSchemaRefresher implements MetaDataRefres
     public void refresh(final MetaDataManagerPersistService metaDataManagerPersistService, final ShardingSphereDatabase database, final Collection<String> logicDataSourceNames,
                         final String schemaName, final DatabaseType databaseType, final AlterSchemaStatement sqlStatement, final ConfigurationProperties props) throws SQLException {
         Optional<String> renameSchemaName = sqlStatement.getRenameSchema().map(optional -> optional.getValue().toLowerCase());
-        if (!renameSchemaName.isPresent()) {
-            return;
-        }
+        Preconditions.checkArgument(renameSchemaName.isPresent(), String.format("The renamed schema is not exist of schema '%s'.", schemaName));
         metaDataManagerPersistService.alterSchema(new AlterSchemaPOJO(database.getName(), sqlStatement.getSchemaName().getValue().toLowerCase(),
                 renameSchemaName.get(), logicDataSourceNames));
     }
diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/table/CreateTableStatementSchemaRefresher.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/table/CreateTableStatementSchemaRefresher.java
index 2ecaac3481b..4b87d73cabf 100644
--- a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/table/CreateTableStatementSchemaRefresher.java
+++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/table/CreateTableStatementSchemaRefresher.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.mode.metadata.refresher.type.table;
 
+import com.google.common.base.Preconditions;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
 import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
@@ -56,11 +57,10 @@ public final class CreateTableStatementSchemaRefresher implements MetaDataRefres
                 database.getProtocolType(), database.getResourceMetaData().getStorageUnits(), ruleMetaData.getRules(), props, schemaName);
         Map<String, ShardingSphereSchema> schemaMap = GenericSchemaBuilder.build(Collections.singletonList(tableName), material);
         Optional<ShardingSphereTable> actualTableMetaData = Optional.ofNullable(schemaMap.get(schemaName)).map(optional -> optional.getTable(tableName));
-        if (actualTableMetaData.isPresent()) {
-            metaDataManagerPersistService.createTable(database.getName(), schemaName, actualTableMetaData.get(), logicDataSourceNames.isEmpty() ? null : logicDataSourceNames.iterator().next());
-            if (isSingleTable && TableRefreshUtils.isRuleRefreshRequired(ruleMetaData, schemaName, tableName)) {
-                metaDataManagerPersistService.alterSingleRuleConfiguration(database.getName(), ruleMetaData.getConfigurations());
-            }
+        Preconditions.checkState(actualTableMetaData.isPresent(), String.format("Load actual table metadata '%s' failed.", tableName));
+        metaDataManagerPersistService.createTable(database.getName(), schemaName, actualTableMetaData.get(), logicDataSourceNames.isEmpty() ? null : logicDataSourceNames.iterator().next());
+        if (isSingleTable && TableRefreshUtils.isRuleRefreshRequired(ruleMetaData, schemaName, tableName)) {
+            metaDataManagerPersistService.alterSingleRuleConfiguration(database.getName(), ruleMetaData.getConfigurations());
         }
     }
     
diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/view/CreateViewStatementSchemaRefresher.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/view/CreateViewStatementSchemaRefresher.java
index 69f64a7a44f..17be8da5144 100644
--- a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/view/CreateViewStatementSchemaRefresher.java
+++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/view/CreateViewStatementSchemaRefresher.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.mode.metadata.refresher.type.view;
 
+import com.google.common.base.Preconditions;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
 import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
@@ -57,12 +58,11 @@ public final class CreateViewStatementSchemaRefresher implements MetaDataRefresh
                 database.getProtocolType(), database.getResourceMetaData().getStorageUnits(), ruleMetaData.getRules(), props, schemaName);
         Map<String, ShardingSphereSchema> schemaMap = GenericSchemaBuilder.build(Collections.singletonList(viewName), material);
         Optional<ShardingSphereTable> actualTableMetaData = Optional.ofNullable(schemaMap.get(schemaName)).map(optional -> optional.getTable(viewName));
-        if (actualTableMetaData.isPresent()) {
-            AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new AlterSchemaMetaDataPOJO(database.getName(), schemaName, logicDataSourceNames);
-            alterSchemaMetaDataPOJO.getAlteredTables().add(actualTableMetaData.get());
-            alterSchemaMetaDataPOJO.getAlteredViews().add(new ShardingSphereView(viewName, sqlStatement.getViewDefinition()));
-            metaDataManagerPersistService.alterSchemaMetaData(alterSchemaMetaDataPOJO);
-        }
+        Preconditions.checkState(actualTableMetaData.isPresent(), String.format("Load actual view metadata '%s' failed.", viewName));
+        AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new AlterSchemaMetaDataPOJO(database.getName(), schemaName, logicDataSourceNames);
+        alterSchemaMetaDataPOJO.getAlteredTables().add(actualTableMetaData.get());
+        alterSchemaMetaDataPOJO.getAlteredViews().add(new ShardingSphereView(viewName, sqlStatement.getViewDefinition()));
+        metaDataManagerPersistService.alterSchemaMetaData(alterSchemaMetaDataPOJO);
     }
     
     @Override