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