You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by ji...@apache.org on 2022/10/28 01:27:43 UTC
[shardingsphere] branch master updated: Added check for empty rule configuration to export syntax. (#21809)
This is an automated email from the ASF dual-hosted git repository.
jianglongtao 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 c37d8b8deac Added check for empty rule configuration to export syntax. (#21809)
c37d8b8deac is described below
commit c37d8b8deac5d3386beebf69005d316e6136958a
Author: yx9o <ya...@163.com>
AuthorDate: Fri Oct 28 09:27:36 2022 +0800
Added check for empty rule configuration to export syntax. (#21809)
---
.../ExportDatabaseConfigurationHandler.java | 29 +++++++++++++++++++++-
1 file changed, 28 insertions(+), 1 deletion(-)
diff --git a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ExportDatabaseConfigurationHandler.java b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ExportDatabaseConfigurationHandler.java
index 57d67bc62cd..1edbd051496 100644
--- a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ExportDatabaseConfigurationHandler.java
+++ b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ExportDatabaseConfigurationHandler.java
@@ -18,9 +18,11 @@
package org.apache.shardingsphere.proxy.backend.handler.distsql.ral.queryable;
import com.google.common.base.Strings;
+import org.apache.shardingsphere.dbdiscovery.api.config.DatabaseDiscoveryRuleConfiguration;
import org.apache.shardingsphere.dialect.exception.syntax.database.NoDatabaseSelectedException;
import org.apache.shardingsphere.dialect.exception.syntax.database.UnknownDatabaseException;
import org.apache.shardingsphere.distsql.parser.statement.ral.queryable.ExportDatabaseConfigurationStatement;
+import org.apache.shardingsphere.encrypt.api.config.EncryptRuleConfiguration;
import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
import org.apache.shardingsphere.infra.datasource.props.DataSourceProperties;
import org.apache.shardingsphere.infra.datasource.props.DataSourcePropertiesCreator;
@@ -33,6 +35,10 @@ import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.exception.FileIOException;
import org.apache.shardingsphere.proxy.backend.handler.distsql.ral.QueryableRALBackendHandler;
+import org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
+import org.apache.shardingsphere.shadow.api.config.ShadowRuleConfiguration;
+import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
+import org.apache.shardingsphere.singletable.config.SingleTableRuleConfiguration;
import javax.sql.DataSource;
import java.io.File;
@@ -84,7 +90,7 @@ public final class ExportDatabaseConfigurationHandler extends QueryableRALBacken
}
private void appendDatabaseName(final String databaseName, final StringBuilder stringBuilder) {
- stringBuilder.append("databaseName").append(": ").append(databaseName).append(System.lineSeparator());
+ stringBuilder.append("databaseName: ").append(databaseName).append(System.lineSeparator());
}
private void appendDataSourceConfigurations(final ShardingSphereDatabase database, final StringBuilder stringBuilder) {
@@ -112,10 +118,31 @@ public final class ExportDatabaseConfigurationHandler extends QueryableRALBacken
}
stringBuilder.append("rules:").append(System.lineSeparator());
for (Entry<RuleConfiguration, YamlRuleConfigurationSwapper> entry : YamlRuleConfigurationSwapperFactory.getInstanceMapByRuleConfigurations(ruleConfigs).entrySet()) {
+ if (checkRuleConfigIsEmpty(entry.getKey())) {
+ continue;
+ }
stringBuilder.append(YamlEngine.marshal(Collections.singletonList(entry.getValue().swapToYamlConfiguration(entry.getKey()))));
}
}
+ private boolean checkRuleConfigIsEmpty(final RuleConfiguration ruleConfig) {
+ if (ruleConfig instanceof ShardingRuleConfiguration) {
+ ShardingRuleConfiguration shardingRuleConfig = (ShardingRuleConfiguration) ruleConfig;
+ return shardingRuleConfig.getTables().isEmpty() && shardingRuleConfig.getAutoTables().isEmpty();
+ } else if (ruleConfig instanceof ReadwriteSplittingRuleConfiguration) {
+ return ((ReadwriteSplittingRuleConfiguration) ruleConfig).getDataSources().isEmpty();
+ } else if (ruleConfig instanceof DatabaseDiscoveryRuleConfiguration) {
+ return ((DatabaseDiscoveryRuleConfiguration) ruleConfig).getDataSources().isEmpty();
+ } else if (ruleConfig instanceof EncryptRuleConfiguration) {
+ return ((EncryptRuleConfiguration) ruleConfig).getTables().isEmpty();
+ } else if (ruleConfig instanceof ShadowRuleConfiguration) {
+ return ((ShadowRuleConfiguration) ruleConfig).getTables().isEmpty();
+ } else if (ruleConfig instanceof SingleTableRuleConfiguration) {
+ return !((SingleTableRuleConfiguration) ruleConfig).getDefaultDataSource().isPresent();
+ }
+ return false;
+ }
+
@SuppressWarnings("ResultOfMethodCallIgnored")
private void exportToFile(final String filePath, final String exportedData) {
File file = new File(filePath);