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/02/15 08:42:22 UTC
[shardingsphere] branch master updated: Show error message when altering sharding configuration if scaling is not enabled (#15407)
This is an automated email from the ASF dual-hosted git repository.
zhonghongsheng 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 67e9afb Show error message when altering sharding configuration if scaling is not enabled (#15407)
67e9afb is described below
commit 67e9afb23a313504da0834268651b9dcd31141fc
Author: ReyYang <yi...@163.com>
AuthorDate: Tue Feb 15 16:41:00 2022 +0800
Show error message when altering sharding configuration if scaling is not enabled (#15407)
---
.../distsql/rdl/rule/RuleDefinitionBackendHandler.java | 16 +++++++++++++++-
.../resources/cases/rdl/rdl-integration-test-cases.xml | 9 ++++++---
2 files changed, 21 insertions(+), 4 deletions(-)
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/rule/RuleDefinitionBackendHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/rule/RuleDefinitionBackendHandler.java
index f4e4b9c..365f051 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/rule/RuleDefinitionBackendHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/rule/RuleDefinitionBackendHandler.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.proxy.backend.text.distsql.rdl.rule;
+import com.google.common.collect.Sets;
import lombok.extern.slf4j.Slf4j;
import org.apache.shardingsphere.data.pipeline.scenario.rulealtered.RuleAlteredJobWorker;
import org.apache.shardingsphere.distsql.parser.statement.rdl.RuleDefinitionStatement;
@@ -33,6 +34,11 @@ import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
import org.apache.shardingsphere.proxy.backend.response.header.update.UpdateResponseHeader;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
import org.apache.shardingsphere.proxy.backend.text.SchemaRequiredBackendHandler;
+import org.apache.shardingsphere.sharding.distsql.parser.statement.AlterDefaultShardingStrategyStatement;
+import org.apache.shardingsphere.sharding.distsql.parser.statement.AlterShardingAlgorithmStatement;
+import org.apache.shardingsphere.sharding.distsql.parser.statement.AlterShardingBindingTableRulesStatement;
+import org.apache.shardingsphere.sharding.distsql.parser.statement.AlterShardingBroadcastTableRulesStatement;
+import org.apache.shardingsphere.sharding.distsql.parser.statement.AlterShardingTableRuleStatement;
import org.apache.shardingsphere.spi.ShardingSphereServiceLoader;
import org.apache.shardingsphere.spi.typed.TypedSPIRegistry;
@@ -40,6 +46,7 @@ import java.util.Collection;
import java.util.LinkedList;
import java.util.Optional;
import java.util.Properties;
+import java.util.Set;
/**
* Rule definition backend handler.
@@ -54,6 +61,9 @@ public final class RuleDefinitionBackendHandler<T extends RuleDefinitionStatemen
ShardingSphereServiceLoader.register(RuleDefinitionAlterPreprocessor.class);
}
+ private static final Set<String> RULE_ALTERED_ACTION_LIST = Sets.newHashSet(AlterShardingTableRuleStatement.class.getName(), AlterShardingAlgorithmStatement.class.getName(),
+ AlterDefaultShardingStrategyStatement.class.getName(), AlterShardingBindingTableRulesStatement.class.getName(), AlterShardingBroadcastTableRulesStatement.class.getName());
+
public RuleDefinitionBackendHandler(final T sqlStatement, final ConnectionSession connectionSession) {
super(sqlStatement, connectionSession);
}
@@ -68,7 +78,11 @@ public final class RuleDefinitionBackendHandler<T extends RuleDefinitionStatemen
ruleDefinitionUpdater.checkSQLStatement(shardingSphereMetaData, sqlStatement, currentRuleConfig);
Optional<RuleDefinitionAlterPreprocessor> preprocessor = TypedSPIRegistry.findRegisteredService(RuleDefinitionAlterPreprocessor.class, sqlStatement.getClass().getCanonicalName(),
new Properties());
- if (RuleAlteredJobWorker.isOnRuleAlteredActionEnabled(currentRuleConfig) && preprocessor.isPresent()) {
+ if (!RuleAlteredJobWorker.isOnRuleAlteredActionEnabled(currentRuleConfig)) {
+ if (RULE_ALTERED_ACTION_LIST.contains(sqlStatement.getClass().getCanonicalName())) {
+ throw new RuntimeException("scaling is not enabled");
+ }
+ } else if (preprocessor.isPresent()) {
processCache(shardingSphereMetaData, sqlStatement, (RuleDefinitionAlterUpdater) ruleDefinitionUpdater, currentRuleConfig, preprocessor.get());
return new UpdateResponseHeader(sqlStatement);
}
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/rdl/rdl-integration-test-cases.xml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/rdl/rdl-integration-test-cases.xml
index e1db09b..adbd71d 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/rdl/rdl-integration-test-cases.xml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/rdl/rdl-integration-test-cases.xml
@@ -90,8 +90,9 @@
<initial-sql sql="CREATE SHARDING TABLE RULE t_user (
RESOURCES("encrypt_write_ds_${0..9}"),
SHARDING_COLUMN=user_id, TYPE(NAME=MOD, PROPERTIES("sharding-count"=40)))));
+ CREATE SHARDING SCALING RULE default_scaling;
ALTER SHARDING BINDING TABLE RULES (t_user,t_user_item);"/>
- <destroy-sql sql="DROP SHARDING BINDING TABLE RULES;DROP SHARDING TABLE RULE t_user" />
+ <destroy-sql sql="DROP SHARDING BINDING TABLE RULES;DROP SHARDING TABLE RULE t_user;DROP SHARDING SCALING RULE default_scaling" />
</assertion>
</test-case>
@@ -132,9 +133,10 @@
<assertion expected-data-file="alter_encrypt_rule.xml">
<initial-sql sql="CREATE ENCRYPT RULE t_user (COLUMNS ((
NAME=pwd, PLAIN=pwd_plain, CIPHER=pwd_cipher, TYPE(NAME=AES, PROPERTIES("aes-key-value"='123456abc')))));
+ CREATE SHARDING SCALING RULE default_scaling;
ALTER ENCRYPT RULE t_user (COLUMNS ((NAME=pwd, PLAIN=pwd_plain, CIPHER=pwd_cipher, TYPE(NAME=AES,
PROPERTIES("aes-key-value"='123abc')))))"/>
- <destroy-sql sql="DROP ENCRYPT RULE t_user" />
+ <destroy-sql sql="DROP ENCRYPT RULE t_user;DROP SHARDING SCALING RULE default_scaling" />
</assertion>
</test-case>
@@ -159,9 +161,10 @@
<assertion expected-data-file="alter_readwrite_splitting_rules.xml">
<initial-sql sql="CREATE READWRITE_SPLITTING RULE readwrite_ds_1 (WRITE_RESOURCE=encrypt_write_ds_1,
READ_RESOURCES(encrypt_read_ds_1), TYPE(NAME=ROUND_ROBIN));
+ CREATE SHARDING SCALING RULE default_scaling;
ALTER READWRITE_SPLITTING RULE readwrite_ds_1 (WRITE_RESOURCE=encrypt_write_ds_1,
READ_RESOURCES(encrypt_read_ds_1, encrypt_read_ds_2), TYPE(NAME=RANDOM,PROPERTIES(read_weight='2:1')))"/>
- <destroy-sql sql="DROP READWRITE_SPLITTING RULE readwrite_ds_1" />
+ <destroy-sql sql="DROP READWRITE_SPLITTING RULE readwrite_ds_1;DROP SHARDING SCALING RULE default_scaling" />
</assertion>
</test-case>