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 eff86d6cb17 Add default sharding strategy for
`ConvertYamlConfigurationExecutor` (#24306)
eff86d6cb17 is described below
commit eff86d6cb178ac35610355cd2e24417f3aa01381
Author: Zichao <[email protected]>
AuthorDate: Wed Feb 22 22:47:49 2023 +0800
Add default sharding strategy for `ConvertYamlConfigurationExecutor`
(#24306)
---
.../ral/common/constant/DistSQLScriptConstants.java | 4 ++++
.../queryable/ConvertYamlConfigurationExecutor.java | 21 +++++++++++++++++++--
.../src/test/resources/expected/convert-mix.yaml | 2 ++
.../test/resources/expected/convert-sharding.yaml | 4 ++++
4 files changed, 29 insertions(+), 2 deletions(-)
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/common/constant/DistSQLScriptConstants.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/common/constant/DistSQLScriptConstants.java
index 64067021e12..54750085155 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/common/constant/DistSQLScriptConstants.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/common/constant/DistSQLScriptConstants.java
@@ -123,6 +123,10 @@ public final class DistSQLScriptConstants {
public static final String BROADCAST_TABLE_RULE = "CREATE BROADCAST TABLE
RULE %s";
+ public static final String DEFAULT_DATABASE_STRATEGY = "CREATE DEFAULT
SHARDING DATABASE STRATEGY";
+
+ public static final String DEFAULT_TABLE_STRATEGY = "CREATE DEFAULT
SHARDING TABLE STRATEGY";
+
public static final String CREATE_READWRITE_SPLITTING_RULE = "CREATE
READWRITE_SPLITTING RULE";
public static final String READWRITE_SPLITTING_FOR_STATIC = " %s ("
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ConvertYamlConfigurationExecutor.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ConvertYamlConfigurationExecutor.java
index 6a0604b3d6d..88d7bb5a71b 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ConvertYamlConfigurationExecutor.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ConvertYamlConfigurationExecutor.java
@@ -81,6 +81,7 @@ import java.util.Comparator;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
+import java.util.Objects;
import java.util.Properties;
import java.util.TreeMap;
@@ -225,7 +226,7 @@ public final class ConvertYamlConfigurationExecutor
implements QueryableRALExecu
appendShardingTableRules(ruleConfig, result);
appendShardingBindingTableRules(ruleConfig, result);
appendShardingBroadcastTableRules(ruleConfig, result);
- // TODO append defaultStrategy
+ appendDefaultShardingStrategy(ruleConfig, result);
}
private void appendShardingTableRules(final ShardingRuleConfiguration
ruleConfig, final StringBuilder result) {
@@ -327,7 +328,9 @@ public final class ConvertYamlConfigurationExecutor
implements QueryableRALExecu
if (null == strategyConfig) {
return;
}
-
result.append(DistSQLScriptConstants.COMMA).append(System.lineSeparator());
+ if (Objects.equals(strategyType,
DistSQLScriptConstants.DATABASE_STRATEGY) || Objects.equals(strategyType,
DistSQLScriptConstants.TABLE_STRATEGY)) {
+
result.append(DistSQLScriptConstants.COMMA).append(System.lineSeparator());
+ }
String type = strategyConfig.getType().toLowerCase();
String algorithmDefinition =
getAlgorithmType(shardingAlgorithms.get(strategyConfig.getShardingAlgorithmName()));
switch (type) {
@@ -374,6 +377,20 @@ public final class ConvertYamlConfigurationExecutor
implements QueryableRALExecu
result.append(DistSQLScriptConstants.SEMI).append(System.lineSeparator()).append(System.lineSeparator());
}
+ private void appendDefaultShardingStrategy(final ShardingRuleConfiguration
ruleConfig, final StringBuilder result) {
+ if (null == ruleConfig.getDefaultDatabaseShardingStrategy() && null ==
ruleConfig.getDefaultTableShardingStrategy()) {
+ return;
+ }
+ if (null != ruleConfig.getDefaultDatabaseShardingStrategy()) {
+ appendStrategy(ruleConfig.getDefaultDatabaseShardingStrategy(),
DistSQLScriptConstants.DEFAULT_DATABASE_STRATEGY, result,
ruleConfig.getShardingAlgorithms());
+
result.append(DistSQLScriptConstants.SEMI).append(System.lineSeparator()).append(System.lineSeparator());
+ }
+ if (null != ruleConfig.getDefaultTableShardingStrategy()) {
+ appendStrategy(ruleConfig.getDefaultTableShardingStrategy(),
DistSQLScriptConstants.DEFAULT_TABLE_STRATEGY, result,
ruleConfig.getShardingAlgorithms());
+
result.append(DistSQLScriptConstants.SEMI).append(System.lineSeparator()).append(System.lineSeparator());
+ }
+ }
+
private void appendReadWriteSplittingDistSQL(final
ReadwriteSplittingRuleConfiguration ruleConfig, final StringBuilder result) {
if (ruleConfig.getDataSources().isEmpty()) {
return;
diff --git a/proxy/backend/core/src/test/resources/expected/convert-mix.yaml
b/proxy/backend/core/src/test/resources/expected/convert-mix.yaml
index 66df564c746..d92dbcb03b3 100644
--- a/proxy/backend/core/src/test/resources/expected/convert-mix.yaml
+++ b/proxy/backend/core/src/test/resources/expected/convert-mix.yaml
@@ -78,3 +78,5 @@ DATANODES('replica_ds_${0..1}.t_order_${0..1}'),
TABLE_STRATEGY(TYPE='standard', SHARDING_COLUMN=order_id,
SHARDING_ALGORITHM(TYPE(NAME='inline',
PROPERTIES('algorithm-expression'='t_order_${order_id % 2}')))),
KEY_GENERATE_STRATEGY(COLUMN=order_id, TYPE(NAME='snowflake'))
);
+
+CREATE DEFAULT SHARDING DATABASE STRATEGY(TYPE='standard',
SHARDING_COLUMN=user_id, SHARDING_ALGORITHM(TYPE(NAME='inline',
PROPERTIES('algorithm-expression'='replica_ds_${user_id % 2}'))));
diff --git
a/proxy/backend/core/src/test/resources/expected/convert-sharding.yaml
b/proxy/backend/core/src/test/resources/expected/convert-sharding.yaml
index c6041420d97..0cfec0b4545 100644
--- a/proxy/backend/core/src/test/resources/expected/convert-sharding.yaml
+++ b/proxy/backend/core/src/test/resources/expected/convert-sharding.yaml
@@ -43,3 +43,7 @@ AUDIT_STRATEGY(TYPE(NAME='dml_sharding_conditions'),
ALLOW_HINT_DISABLE=true)
);
CREATE BROADCAST TABLE RULE t_address;
+
+CREATE DEFAULT SHARDING DATABASE STRATEGY(TYPE='standard',
SHARDING_COLUMN=user_id, SHARDING_ALGORITHM(TYPE(NAME='inline',
PROPERTIES('algorithm-expression'='ds_${user_id % 2}',
'datetime-lower'='2022-01-01 00:00:00'))));
+
+CREATE DEFAULT SHARDING TABLE STRATEGY(TYPE='none');