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 48fdfdd8748 Optimize SHARDING TABLE RULE related syntax (#21745)
48fdfdd8748 is described below
commit 48fdfdd8748feeac91257eb1222024e2facad3cb
Author: ChenJiaHao <[email protected]>
AuthorDate: Wed Oct 26 08:16:58 2022 +0800
Optimize SHARDING TABLE RULE related syntax (#21745)
* Remove DistSQL CREATE SHARDING KEY GENERATOR & ALTER SHARDING KEY
GENERATOR & CREATE SHARDING ALGORITHM & ALTER SHARDING ALGORITHM
* Refactor DistSQL create/alter ShardingTableRule, only retain cohesive way
* Remove CREATE SHARDING ALGORITHM in IT
---
.../checker/ShardingTableRuleStatementChecker.java | 29 ++++----
.../ShardingTableRuleStatementConverter.java | 3 +-
...terDefaultShardingStrategyStatementUpdater.java | 10 +--
...ateDefaultShardingStrategyStatementUpdater.java | 10 +--
.../checker/ShardingRuleStatementCheckerTest.java | 19 ++---
.../ShardingRuleStatementConverterTest.java | 8 +--
...efaultShardingStrategyStatementUpdaterTest.java | 15 ++--
...AlterShardingTableRuleStatementUpdaterTest.java | 10 +--
...efaultShardingStrategyStatementUpdaterTest.java | 16 +++--
...reateShardingTableRuleStatementUpdaterTest.java | 6 +-
.../main/antlr4/imports/sharding/RDLStatement.g4 | 40 +----------
.../parser/autogen/ShardingDistSQLStatement.g4 | 4 --
.../core/ShardingDistSQLStatementVisitor.java | 80 +++-------------------
.../parser/segment/ShardingStrategySegment.java | 2 -
.../AlterDefaultShardingStrategyStatement.java | 2 -
.../CreateDefaultShardingStrategyStatement.java | 2 -
.../handler/ProxyBackendHandlerFactoryTest.java | 2 +-
.../engine/base/BaseTransactionITCase.java | 10 ---
.../engine/command/CommonSQLCommand.java | 15 ----
.../src/test/resources/env/common/command.xml | 42 ++----------
.../asserts/segment/distsql/TableRuleAssert.java | 4 +-
.../distsql/rdl/ShardingKeyGeneratorAssert.java | 2 +-
...lterDefaultShardingStrategyStatementAssert.java | 2 +-
...eateDefaultShardingStrategyStatementAssert.java | 2 +-
.../jaxb/cases/domain/SQLParserTestCases.java | 16 -----
.../rdl/ExpectedDefaultShardingStrategy.java | 6 +-
.../distsql/rdl/ExpectedShardingKeyGenerator.java | 4 --
.../impl/distsql/rdl/ExpectedShardingStrategy.java | 3 -
test/parser/src/main/resources/case/rdl/alter.xml | 32 ++++-----
test/parser/src/main/resources/case/rdl/create.xml | 69 ++++++++++++-------
.../src/main/resources/sql/supported/rdl/alter.xml | 10 ++-
.../main/resources/sql/supported/rdl/create.xml | 16 ++---
32 files changed, 159 insertions(+), 332 deletions(-)
diff --git
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/checker/ShardingTableRuleStatementChecker.java
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/checker/ShardingTableRuleStatementChecker.java
index 376603c37ac..fb38b0ed693 100644
---
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/checker/ShardingTableRuleStatementChecker.java
+++
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/checker/ShardingTableRuleStatementChecker.java
@@ -131,7 +131,7 @@ public final class ShardingTableRuleStatementChecker {
checkAuditors(rules, currentRuleConfig);
Map<String, List<AbstractTableRuleSegment>> groupedTableRule =
groupingByClassType(rules);
checkAutoTableRule(groupedTableRule.getOrDefault(AutoTableRuleSegment.class.getSimpleName(),
Collections.emptyList()));
- checkTableRule(databaseName, currentRuleConfig,
groupedTableRule.getOrDefault(TableRuleSegment.class.getSimpleName(),
Collections.emptyList()));
+ checkTableRule(databaseName,
groupedTableRule.getOrDefault(TableRuleSegment.class.getSimpleName(),
Collections.emptyList()));
if (!isCreate) {
checkBindingTableRules(rules, currentRuleConfig);
}
@@ -301,34 +301,31 @@ public final class ShardingTableRuleStatementChecker {
ShardingSpherePreconditions.checkState(invalidShardingAlgorithms.isEmpty(), ()
-> new InvalidAlgorithmConfigurationException("sharding",
invalidShardingAlgorithms));
}
- private static void checkTableRule(final String databaseName, final
ShardingRuleConfiguration currentRuleConfig, final
Collection<AbstractTableRuleSegment> rules) {
+ private static void checkTableRule(final String databaseName, final
Collection<AbstractTableRuleSegment> rules) {
Collection<TableRuleSegment> tableRules = rules.stream().map(each ->
(TableRuleSegment) each).collect(Collectors.toList());
Optional<ShardingStrategySegment> anyTableRule =
tableRules.stream().map(each ->
Arrays.asList(each.getDatabaseStrategySegment(),
each.getTableStrategySegment()))
.flatMap(Collection::stream).filter(Objects::nonNull).findAny();
if (anyTableRule.isPresent()) {
- checkStrategy(databaseName, currentRuleConfig, tableRules);
+ checkStrategy(databaseName, tableRules);
}
}
- private static void checkStrategy(final String databaseName, final
ShardingRuleConfiguration currentRuleConfig, final Collection<TableRuleSegment>
rules) {
- Collection<String> currentAlgorithms = null == currentRuleConfig ?
Collections.emptySet() : currentRuleConfig.getShardingAlgorithms().keySet();
- Collection<String> invalidAlgorithms = rules.stream().map(each ->
Arrays.asList(each.getDatabaseStrategySegment(),
each.getTableStrategySegment()))
-
.flatMap(Collection::stream).filter(Objects::nonNull).filter(each ->
isInvalidStrategy(currentAlgorithms, each))
-
.map(ShardingStrategySegment::getShardingAlgorithmName).collect(Collectors.toList());
- ShardingSpherePreconditions.checkState(invalidAlgorithms.isEmpty(), ()
-> new InvalidAlgorithmConfigurationException(databaseName, invalidAlgorithms));
+ private static void checkStrategy(final String databaseName, final
Collection<TableRuleSegment> rules) {
+ Collection<AlgorithmSegment> invalidAlgorithms =
rules.stream().map(each -> Arrays.asList(each.getDatabaseStrategySegment(),
each.getTableStrategySegment()))
+
.flatMap(Collection::stream).filter(Objects::nonNull).filter(ShardingTableRuleStatementChecker::isInvalidStrategy)
+
.map(ShardingStrategySegment::getAlgorithmSegment).collect(Collectors.toList());
+ Collection<String> invalidAlgorithmNames =
invalidAlgorithms.stream().filter(Objects::nonNull).map(AlgorithmSegment::getName).collect(Collectors.toList());
+ ShardingSpherePreconditions.checkState(invalidAlgorithms.isEmpty(), ()
-> new InvalidAlgorithmConfigurationException(databaseName,
invalidAlgorithmNames));
}
- private static boolean isInvalidStrategy(final Collection<String>
currentAlgorithms, final ShardingStrategySegment shardingStrategySegment) {
+ private static boolean isInvalidStrategy(final ShardingStrategySegment
shardingStrategySegment) {
return !ShardingStrategyType.contain(shardingStrategySegment.getType())
||
!ShardingStrategyType.getValueOf(shardingStrategySegment.getType()).isValid(shardingStrategySegment.getShardingColumn())
- || !isAlgorithmExists(currentAlgorithms,
shardingStrategySegment);
+ || !isAlgorithmExists(shardingStrategySegment);
}
- private static boolean isAlgorithmExists(final Collection<String>
currentAlgorithms, final ShardingStrategySegment shardingStrategySegment) {
- if (null == shardingStrategySegment.getShardingAlgorithmName() && null
!= shardingStrategySegment.getAlgorithmSegment()) {
- return true;
- }
- return
currentAlgorithms.contains(shardingStrategySegment.getShardingAlgorithmName());
+ private static boolean isAlgorithmExists(final ShardingStrategySegment
shardingStrategySegment) {
+ return null != shardingStrategySegment.getAlgorithmSegment();
}
private static Map<String, List<AbstractTableRuleSegment>>
groupingByClassType(final Collection<AbstractTableRuleSegment> rules) {
diff --git
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/converter/ShardingTableRuleStatementConverter.java
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/converter/ShardingTableRuleStatementConverter.java
index 68b14d368c9..b58d9579977 100644
---
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/converter/ShardingTableRuleStatementConverter.java
+++
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/converter/ShardingTableRuleStatementConverter.java
@@ -158,8 +158,7 @@ public final class ShardingTableRuleStatementConverter {
private static ShardingStrategyConfiguration
createShardingStrategyConfiguration(final String logicTable, final
ShardingStrategyLevelType strategyLevel, final String type,
final ShardingStrategySegment segment) {
- String shardingAlgorithmName = null ==
segment.getShardingAlgorithmName() ? getTableShardingAlgorithmName(logicTable,
strategyLevel, segment.getAlgorithmSegment().getName())
- : segment.getShardingAlgorithmName();
+ String shardingAlgorithmName =
getTableShardingAlgorithmName(logicTable, strategyLevel,
segment.getAlgorithmSegment().getName());
return
createStrategyConfiguration(ShardingStrategyType.getValueOf(type).name(),
segment.getShardingColumn(), shardingAlgorithmName);
}
diff --git
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AlterDefaultShardingStrategyStatementUpdater.java
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AlterDefaultShardingStrategyStatementUpdater.java
index a96b69a0e07..1f3b6b02f6f 100644
---
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AlterDefaultShardingStrategyStatementUpdater.java
+++
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AlterDefaultShardingStrategyStatementUpdater.java
@@ -32,7 +32,6 @@ import
org.apache.shardingsphere.sharding.distsql.handler.enums.ShardingStrategy
import
org.apache.shardingsphere.sharding.distsql.handler.enums.ShardingStrategyType;
import
org.apache.shardingsphere.sharding.distsql.parser.statement.AlterDefaultShardingStrategyStatement;
-import java.util.Collections;
import java.util.Optional;
/**
@@ -57,15 +56,10 @@ public final class
AlterDefaultShardingStrategyStatementUpdater implements RuleD
ShardingSpherePreconditions.checkState(ShardingStrategyType.getValueOf(sqlStatement.getStrategyType()).isValid(sqlStatement.getShardingColumn()),
() -> new
InvalidAlgorithmConfigurationException(sqlStatement.getStrategyType()));
ShardingSpherePreconditions.checkState(isAlgorithmDefinitionExists(sqlStatement),
MissingRequiredAlgorithmException::new);
- if (null == sqlStatement.getShardingAlgorithmName() && null !=
sqlStatement.getAlgorithmSegment()) {
- return;
- }
- boolean isAlgorithmExist =
currentRuleConfig.getShardingAlgorithms().containsKey(sqlStatement.getShardingAlgorithmName());
- ShardingSpherePreconditions.checkState(isAlgorithmExist, () -> new
MissingRequiredAlgorithmException(databaseName,
Collections.singleton(sqlStatement.getShardingAlgorithmName())));
}
private boolean isAlgorithmDefinitionExists(final
AlterDefaultShardingStrategyStatement sqlStatement) {
- return null != sqlStatement.getShardingAlgorithmName() || null !=
sqlStatement.getAlgorithmSegment();
+ return null != sqlStatement.getAlgorithmSegment();
}
private void checkExist(final String databaseName, final
AlterDefaultShardingStrategyStatement sqlStatement, final
ShardingRuleConfiguration currentRuleConfig) {
@@ -92,7 +86,7 @@ public final class
AlterDefaultShardingStrategyStatementUpdater implements RuleD
}
private String getShardingAlgorithmName(final
AlterDefaultShardingStrategyStatement sqlStatement, final
ShardingRuleConfiguration shardingRuleConfig) {
- return null == sqlStatement.getShardingAlgorithmName() ?
createDefaultAlgorithm(sqlStatement, shardingRuleConfig) :
sqlStatement.getShardingAlgorithmName();
+ return createDefaultAlgorithm(sqlStatement, shardingRuleConfig);
}
private String createDefaultAlgorithm(final
AlterDefaultShardingStrategyStatement sqlStatement, final
ShardingRuleConfiguration shardingRuleConfig) {
diff --git
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/CreateDefaultShardingStrategyStatementUpdater.java
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/CreateDefaultShardingStrategyStatementUpdater.java
index 5feab9b3486..642d32d1aef 100644
---
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/CreateDefaultShardingStrategyStatementUpdater.java
+++
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/CreateDefaultShardingStrategyStatementUpdater.java
@@ -33,7 +33,6 @@ import
org.apache.shardingsphere.sharding.distsql.handler.enums.ShardingStrategy
import
org.apache.shardingsphere.sharding.distsql.handler.enums.ShardingStrategyType;
import
org.apache.shardingsphere.sharding.distsql.parser.statement.CreateDefaultShardingStrategyStatement;
-import java.util.Collections;
import java.util.Optional;
/**
@@ -58,15 +57,10 @@ public final class
CreateDefaultShardingStrategyStatementUpdater implements Rule
ShardingSpherePreconditions.checkState(ShardingStrategyType.getValueOf(sqlStatement.getStrategyType())
.isValid(sqlStatement.getShardingColumn()), () -> new
InvalidAlgorithmConfigurationException(sqlStatement.getStrategyType()));
ShardingSpherePreconditions.checkState(isAlgorithmDefinitionExists(sqlStatement),
MissingRequiredAlgorithmException::new);
- if (null == sqlStatement.getShardingAlgorithmName() && null !=
sqlStatement.getAlgorithmSegment()) {
- return;
- }
- boolean isAlgorithmExist =
currentRuleConfig.getShardingAlgorithms().containsKey(sqlStatement.getShardingAlgorithmName());
- ShardingSpherePreconditions.checkState(isAlgorithmExist, () -> new
MissingRequiredAlgorithmException(databaseName,
Collections.singleton(sqlStatement.getShardingAlgorithmName())));
}
private boolean isAlgorithmDefinitionExists(final
CreateDefaultShardingStrategyStatement sqlStatement) {
- return null != sqlStatement.getShardingAlgorithmName() || null !=
sqlStatement.getAlgorithmSegment();
+ return null != sqlStatement.getAlgorithmSegment();
}
private void checkExist(final String databaseName, final
CreateDefaultShardingStrategyStatement sqlStatement, final
ShardingRuleConfiguration currentRuleConfig) {
@@ -93,7 +87,7 @@ public final class
CreateDefaultShardingStrategyStatementUpdater implements Rule
}
private String getShardingAlgorithmName(final
CreateDefaultShardingStrategyStatement sqlStatement, final
ShardingRuleConfiguration ruleConfig) {
- return null == sqlStatement.getShardingAlgorithmName() ?
createDefaultAlgorithm(sqlStatement, ruleConfig) :
sqlStatement.getShardingAlgorithmName();
+ return createDefaultAlgorithm(sqlStatement, ruleConfig);
}
private String createDefaultAlgorithm(final
CreateDefaultShardingStrategyStatement sqlStatement, final
ShardingRuleConfiguration ruleConfig) {
diff --git
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/checker/ShardingRuleStatementCheckerTest.java
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/checker/ShardingRuleStatementCheckerTest.java
index a815eddb012..c735c7ee014 100644
---
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/checker/ShardingRuleStatementCheckerTest.java
+++
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/checker/ShardingRuleStatementCheckerTest.java
@@ -176,7 +176,7 @@ public final class ShardingRuleStatementCheckerTest {
@Test(expected = InvalidAlgorithmConfigurationException.class)
public void assertCheckTableWithInvalidShardingStrategyType() {
TableRuleSegment tableRuleSegment = new TableRuleSegment("t_product",
Arrays.asList("ds_0", "ds_1"));
- tableRuleSegment.setTableStrategySegment(new
ShardingStrategySegment("invalid", "product_id", "t_order_algorithm", null));
+ tableRuleSegment.setTableStrategySegment(new
ShardingStrategySegment("invalid", "product_id", null));
List<AbstractTableRuleSegment> rules =
Collections.singletonList(tableRuleSegment);
ShardingTableRuleStatementChecker.checkCreation(database, rules,
shardingRuleConfig);
}
@@ -184,7 +184,7 @@ public final class ShardingRuleStatementCheckerTest {
@Test(expected = InvalidAlgorithmConfigurationException.class)
public void assertCheckTableWithUnmatchedShardingStrategyType1() {
TableRuleSegment tableRuleSegment = new TableRuleSegment("t_product",
Arrays.asList("ds_0", "ds_1"));
- tableRuleSegment.setTableStrategySegment(new
ShardingStrategySegment("complex", "product_id", "t_order_algorithm", null));
+ tableRuleSegment.setTableStrategySegment(new
ShardingStrategySegment("complex", "product_id", null));
List<AbstractTableRuleSegment> rules =
Collections.singletonList(tableRuleSegment);
ShardingTableRuleStatementChecker.checkCreation(database, rules,
shardingRuleConfig);
}
@@ -192,7 +192,7 @@ public final class ShardingRuleStatementCheckerTest {
@Test(expected = InvalidAlgorithmConfigurationException.class)
public void assertCheckTableWithUnmatchedShardingStrategyType2() {
TableRuleSegment tableRuleSegment = new TableRuleSegment("t_product",
Arrays.asList("ds_0", "ds_1"));
- tableRuleSegment.setTableStrategySegment(new
ShardingStrategySegment("standard", "product_id,user_id", "t_order_algorithm",
null));
+ tableRuleSegment.setTableStrategySegment(new
ShardingStrategySegment("standard", "product_id,user_id", null));
List<AbstractTableRuleSegment> rules =
Collections.singletonList(tableRuleSegment);
ShardingTableRuleStatementChecker.checkCreation(database, rules,
shardingRuleConfig);
}
@@ -200,7 +200,7 @@ public final class ShardingRuleStatementCheckerTest {
@Test(expected = InvalidAlgorithmConfigurationException.class)
public void assertCheckTableWithInvalidAlgorithmName() {
TableRuleSegment tableRuleSegment = new TableRuleSegment("t_product",
Arrays.asList("ds_0", "ds_1"));
- tableRuleSegment.setTableStrategySegment(new
ShardingStrategySegment("hint", "product_id", "invalid", null));
+ tableRuleSegment.setTableStrategySegment(new
ShardingStrategySegment("hint", "product_id", null));
List<AbstractTableRuleSegment> rules =
Collections.singletonList(tableRuleSegment);
ShardingTableRuleStatementChecker.checkCreation(database, rules,
shardingRuleConfig);
}
@@ -208,7 +208,7 @@ public final class ShardingRuleStatementCheckerTest {
@Test(expected = InvalidAlgorithmConfigurationException.class)
public void
assertCheckTableWithInvalidAlgorithmNameWhenCurrentRuleConfigIsNull() {
TableRuleSegment tableRuleSegment = new TableRuleSegment("t_product",
Arrays.asList("ds_0", "ds_1"));
- tableRuleSegment.setTableStrategySegment(new
ShardingStrategySegment("hint", "product_id", "invalid", null));
+ tableRuleSegment.setTableStrategySegment(new
ShardingStrategySegment("hint", "product_id", null));
List<AbstractTableRuleSegment> rules =
Collections.singletonList(tableRuleSegment);
ShardingTableRuleStatementChecker.checkCreation(database, rules, null);
}
@@ -217,7 +217,7 @@ public final class ShardingRuleStatementCheckerTest {
public void assertCheckNullAlgorithmNameAndAlgorithmSegment() {
TableRuleSegment tableRuleSegment = new TableRuleSegment("t_product",
Arrays.asList("ds_0", "ds_1"));
AlgorithmSegment databaseAlgorithmSegment = new
AlgorithmSegment("inline", newProperties("algorithm-expression",
"ds_${product_id% 2}"));
- tableRuleSegment.setTableStrategySegment(new
ShardingStrategySegment("standard", "product_id", null,
databaseAlgorithmSegment));
+ tableRuleSegment.setTableStrategySegment(new
ShardingStrategySegment("standard", "product_id", databaseAlgorithmSegment));
List<AbstractTableRuleSegment> rules =
Collections.singletonList(tableRuleSegment);
ShardingTableRuleStatementChecker.checkCreation(database, rules,
shardingRuleConfig);
}
@@ -225,7 +225,7 @@ public final class ShardingRuleStatementCheckerTest {
@Test(expected = InvalidAlgorithmConfigurationException.class)
public void assertCheckNullAlgorithmNameAndNullAlgorithmSegment() {
TableRuleSegment tableRuleSegment = new TableRuleSegment("t_product",
Arrays.asList("ds_0", "ds_1"));
- tableRuleSegment.setTableStrategySegment(new
ShardingStrategySegment("standard", "product_id", null, null));
+ tableRuleSegment.setTableStrategySegment(new
ShardingStrategySegment("standard", "product_id", null));
List<AbstractTableRuleSegment> rules =
Collections.singletonList(tableRuleSegment);
ShardingTableRuleStatementChecker.checkCreation(database, rules,
shardingRuleConfig);
}
@@ -268,8 +268,9 @@ public final class ShardingRuleStatementCheckerTest {
private TableRuleSegment createCompleteTableRule() {
TableRuleSegment result = new TableRuleSegment("t_product_1",
Collections.singletonList("ds_${0..1}.t_order${0..1}"));
- result.setTableStrategySegment(new ShardingStrategySegment("hint",
"product_id", "t_order_algorithm", null));
- result.setDatabaseStrategySegment(new ShardingStrategySegment("hint",
"product_id", "t_order_algorithm", null));
+ Properties props = new Properties();
+ result.setTableStrategySegment(new ShardingStrategySegment("hint",
"product_id", new AlgorithmSegment("algorithm", props)));
+ result.setDatabaseStrategySegment(new ShardingStrategySegment("hint",
"product_id", new AlgorithmSegment("algorithm", props)));
result.setKeyGenerateStrategySegment(new
KeyGenerateStrategySegment("product_id", new
AlgorithmSegment("DISTSQL.FIXTURE", new Properties())));
return result;
}
diff --git
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/converter/ShardingRuleStatementConverterTest.java
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/converter/ShardingRuleStatementConverterTest.java
index f9e181010e6..89d403723ce 100644
---
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/converter/ShardingRuleStatementConverterTest.java
+++
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/converter/ShardingRuleStatementConverterTest.java
@@ -51,7 +51,7 @@ public final class ShardingRuleStatementConverterTest {
assertThat(tableRule.getLogicTable(), is("t_order"));
assertThat(tableRule.getActualDataNodes(), is("ds0,ds1"));
assertThat(tableRule.getDatabaseShardingStrategy().getShardingAlgorithmName(),
is("t_order_database_inline"));
-
assertThat(tableRule.getTableShardingStrategy().getShardingAlgorithmName(),
is("order_id_algorithm"));
+
assertThat(tableRule.getTableShardingStrategy().getShardingAlgorithmName(),
is("t_order_table_order_id_algorithm"));
assertThat(tableRule.getKeyGenerateStrategy().getKeyGeneratorName(),
is("t_order_snowflake"));
assertThat(tableRule.getKeyGenerateStrategy().getColumn(),
is("order_id"));
assertThat(config.getAutoTables().size(), is(2));
@@ -64,7 +64,7 @@ public final class ShardingRuleStatementConverterTest {
assertThat(tableRule.getKeyGenerateStrategy().getColumn(),
is("order_id"));
autoTableRule = autoTableConfigs.next();
assertThat(autoTableRule.getKeyGenerateStrategy().getKeyGeneratorName(),
is("snowflake_algorithm"));
- assertThat(config.getShardingAlgorithms().size(), is(3));
+ assertThat(config.getShardingAlgorithms().size(), is(4));
assertThat(config.getShardingAlgorithms().get("t_order_mod").getType(),
is("mod"));
assertThat(config.getShardingAlgorithms().get("t_order_mod").getProps().getProperty("sharding_count"),
is("2"));
assertThat(config.getKeyGenerators().size(), is(1));
@@ -84,8 +84,8 @@ public final class ShardingRuleStatementConverterTest {
new
AuditStrategySegment(Collections.singleton("sharding_key_required_auditor"),
Collections.singleton(new
ShardingAuditorSegment("sharding_key_required_auditor",
new AlgorithmSegment("DML_SHARDING_CONDITIONS", new
Properties()))), true));
TableRuleSegment tableRuleSegment = new TableRuleSegment("t_order",
Arrays.asList("ds0", "ds1"),
- new ShardingStrategySegment("standard", "order_id", null,
databaseAlgorithmSegment),
- new ShardingStrategySegment("standard", "order_id",
"order_id_algorithm", null),
+ new ShardingStrategySegment("standard", "order_id",
databaseAlgorithmSegment),
+ new ShardingStrategySegment("standard", "order_id", new
AlgorithmSegment("order_id_algorithm", new Properties())),
new KeyGenerateStrategySegment("order_id", new
AlgorithmSegment("snowflake", newProperties("", ""))),
new
AuditStrategySegment(Collections.singleton("sharding_key_required_auditor"),
Collections.singleton(new
ShardingAuditorSegment("sharding_key_required_auditor",
new AlgorithmSegment("DML_SHARDING_CONDITIONS", new
Properties()))), true));
diff --git
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/AlterDefaultShardingStrategyStatementUpdaterTest.java
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/AlterDefaultShardingStrategyStatementUpdaterTest.java
index 7ae0b94351a..1550672b17d 100644
---
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/AlterDefaultShardingStrategyStatementUpdaterTest.java
+++
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/AlterDefaultShardingStrategyStatementUpdaterTest.java
@@ -54,18 +54,18 @@ public final class
AlterDefaultShardingStrategyStatementUpdaterTest {
@Test(expected = InvalidAlgorithmConfigurationException.class)
public void assertExecuteWithInvalidStrategyType() {
- updater.checkSQLStatement(database, new
AlterDefaultShardingStrategyStatement("TABLE", "invalidType", null,
"order_id_algorithm", null), new ShardingRuleConfiguration());
+ updater.checkSQLStatement(database, new
AlterDefaultShardingStrategyStatement("TABLE", "invalidType", null, null), new
ShardingRuleConfiguration());
}
@Test(expected = MissingRequiredRuleException.class)
public void assertExecuteWithoutCurrentConfiguration() {
- AlterDefaultShardingStrategyStatement statement = new
AlterDefaultShardingStrategyStatement("TABLE", "standard", "order_id",
"order_id_algorithm", null);
+ AlterDefaultShardingStrategyStatement statement = new
AlterDefaultShardingStrategyStatement("TABLE", "standard", "order_id", null);
updater.checkSQLStatement(database, statement, null);
}
@Test(expected = MissingRequiredAlgorithmException.class)
public void assertExecuteWithNotExist() {
- AlterDefaultShardingStrategyStatement statement = new
AlterDefaultShardingStrategyStatement("TABLE", "standard", "order_id",
"order_id_algorithm", null);
+ AlterDefaultShardingStrategyStatement statement = new
AlterDefaultShardingStrategyStatement("TABLE", "standard", "order_id", null);
ShardingRuleConfiguration currentRuleConfig = new
ShardingRuleConfiguration();
currentRuleConfig.setDefaultTableShardingStrategy(new
StandardShardingStrategyConfiguration("order_id", "orderAlgorithm"));
currentRuleConfig.getShardingAlgorithms().put("not_exist_algorithm",
null);
@@ -74,7 +74,7 @@ public final class
AlterDefaultShardingStrategyStatementUpdaterTest {
@Test(expected = InvalidAlgorithmConfigurationException.class)
public void assertExecuteWithUnmatchedStrategy() {
- AlterDefaultShardingStrategyStatement statement = new
AlterDefaultShardingStrategyStatement("TABLE", "standard", "order_id,user_id",
"order_id_algorithm", null);
+ AlterDefaultShardingStrategyStatement statement = new
AlterDefaultShardingStrategyStatement("TABLE", "standard", "order_id,user_id",
null);
ShardingRuleConfiguration currentRuleConfig = new
ShardingRuleConfiguration();
currentRuleConfig.setDefaultTableShardingStrategy(new
StandardShardingStrategyConfiguration("order_id", "orderAlgorithm"));
currentRuleConfig.getShardingAlgorithms().put("order_id_algorithm",
null);
@@ -83,7 +83,8 @@ public final class
AlterDefaultShardingStrategyStatementUpdaterTest {
@Test
public void assertAlterDefaultTableShardingStrategy() {
- AlterDefaultShardingStrategyStatement statement = new
AlterDefaultShardingStrategyStatement("TABLE", "standard", "order_id",
"order_id_algorithm", null);
+ AlgorithmSegment algorithm = new
AlgorithmSegment("order_id_algorithm", new Properties());
+ AlterDefaultShardingStrategyStatement statement = new
AlterDefaultShardingStrategyStatement("TABLE", "standard", "order_id",
algorithm);
ShardingRuleConfiguration currentRuleConfig = new
ShardingRuleConfiguration();
currentRuleConfig.setDefaultTableShardingStrategy(new
StandardShardingStrategyConfiguration("order_id", "orderAlgorithm"));
currentRuleConfig.getShardingAlgorithms().put("order_id_algorithm",
null);
@@ -91,14 +92,14 @@ public final class
AlterDefaultShardingStrategyStatementUpdaterTest {
ShardingRuleConfiguration toBeAlteredRuleConfig =
updater.buildToBeAlteredRuleConfiguration(statement);
updater.updateCurrentRuleConfiguration(currentRuleConfig,
toBeAlteredRuleConfig);
StandardShardingStrategyConfiguration defaultTableShardingStrategy =
(StandardShardingStrategyConfiguration)
currentRuleConfig.getDefaultTableShardingStrategy();
- assertThat(defaultTableShardingStrategy.getShardingAlgorithmName(),
is("order_id_algorithm"));
+ assertThat(defaultTableShardingStrategy.getShardingAlgorithmName(),
is("default_table_order_id_algorithm"));
assertThat(defaultTableShardingStrategy.getShardingColumn(),
is("order_id"));
}
@Test
public void assertAlterDefaultDatabaseShardingStrategy() {
AlgorithmSegment databaseAlgorithmSegment =
getAutoCreativeAlgorithmSegment("inline", newProperties("algorithm-expression",
"ds_${user_id% 2}"));
- AlterDefaultShardingStrategyStatement statement = new
AlterDefaultShardingStrategyStatement("DATABASE", "standard", "user_id", null,
databaseAlgorithmSegment);
+ AlterDefaultShardingStrategyStatement statement = new
AlterDefaultShardingStrategyStatement("DATABASE", "standard", "user_id",
databaseAlgorithmSegment);
ShardingRuleConfiguration currentRuleConfig = new
ShardingRuleConfiguration();
currentRuleConfig.setDefaultDatabaseShardingStrategy(new
StandardShardingStrategyConfiguration("order_id", "orderAlgorithm"));
updater.checkSQLStatement(database, statement, currentRuleConfig);
diff --git
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/AlterShardingTableRuleStatementUpdaterTest.java
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/AlterShardingTableRuleStatementUpdaterTest.java
index ece087d89e4..52dd959ee1e 100644
---
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/AlterShardingTableRuleStatementUpdaterTest.java
+++
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/AlterShardingTableRuleStatementUpdaterTest.java
@@ -88,7 +88,7 @@ public final class AlterShardingTableRuleStatementUpdaterTest
{
assertThat(tableRule.getActualDataNodes(),
is("ds_${0..1}.t_order${0..1}"));
assertThat(tableRule.getTableShardingStrategy(),
instanceOf(StandardShardingStrategyConfiguration.class));
assertThat(((StandardShardingStrategyConfiguration)
tableRule.getTableShardingStrategy()).getShardingColumn(), is("product_id"));
-
assertThat(tableRule.getTableShardingStrategy().getShardingAlgorithmName(),
is("t_order_algorithm"));
+
assertThat(tableRule.getTableShardingStrategy().getShardingAlgorithmName(),
is("t_order_table_algorithm"));
assertThat(tableRule.getDatabaseShardingStrategy(),
instanceOf(StandardShardingStrategyConfiguration.class));
assertThat(tableRule.getDatabaseShardingStrategy().getShardingAlgorithmName(),
is("t_order_database_inline"));
assertThat(currentRuleConfig.getTables().size(), is(1));
@@ -113,7 +113,7 @@ public final class
AlterShardingTableRuleStatementUpdaterTest {
assertThat(tableRule.getActualDataNodes(),
is("ds_${0..1}.t_order${0..1}"));
assertThat(tableRule.getTableShardingStrategy(),
instanceOf(StandardShardingStrategyConfiguration.class));
assertThat(((StandardShardingStrategyConfiguration)
tableRule.getTableShardingStrategy()).getShardingColumn(), is("product_id"));
-
assertThat(tableRule.getTableShardingStrategy().getShardingAlgorithmName(),
is("t_order_algorithm"));
+
assertThat(tableRule.getTableShardingStrategy().getShardingAlgorithmName(),
is("t_order_table_algorithm"));
assertThat(tableRule.getDatabaseShardingStrategy(),
instanceOf(StandardShardingStrategyConfiguration.class));
assertThat(tableRule.getDatabaseShardingStrategy().getShardingAlgorithmName(),
is("t_order_database_inline"));
assertThat(currentRuleConfig.getTables().size(), is(1));
@@ -138,7 +138,7 @@ public final class
AlterShardingTableRuleStatementUpdaterTest {
assertThat(tableRule.getActualDataNodes(),
is("ds_${0..1}.t_order${0..1}"));
assertThat(tableRule.getTableShardingStrategy(),
instanceOf(StandardShardingStrategyConfiguration.class));
assertThat(((StandardShardingStrategyConfiguration)
tableRule.getTableShardingStrategy()).getShardingColumn(), is("product_id"));
-
assertThat(tableRule.getTableShardingStrategy().getShardingAlgorithmName(),
is("t_order_algorithm"));
+
assertThat(tableRule.getTableShardingStrategy().getShardingAlgorithmName(),
is("t_order_item_table_algorithm"));
assertThat(tableRule.getDatabaseShardingStrategy(),
instanceOf(StandardShardingStrategyConfiguration.class));
assertThat(tableRule.getDatabaseShardingStrategy().getShardingAlgorithmName(),
is("t_order_item_database_inline"));
assertThat(currentRuleConfig.getTables().size(), is(1));
@@ -161,9 +161,9 @@ public final class
AlterShardingTableRuleStatementUpdaterTest {
private TableRuleSegment createCompleteTableRule(final String
logicTableName) {
TableRuleSegment result = new TableRuleSegment(logicTableName,
Collections.singletonList("ds_${0..1}.t_order${0..1}"));
- result.setTableStrategySegment(new ShardingStrategySegment("standard",
"product_id", "t_order_algorithm", null));
+ result.setTableStrategySegment(new ShardingStrategySegment("standard",
"product_id", new AlgorithmSegment("algorithm", new Properties())));
AlgorithmSegment databaseAlgorithmSegment = new
AlgorithmSegment("inline", createProperties("algorithm-expression",
"ds_${user_id% 2}"));
- result.setDatabaseStrategySegment(new
ShardingStrategySegment("standard", "product_id", null,
databaseAlgorithmSegment));
+ result.setDatabaseStrategySegment(new
ShardingStrategySegment("standard", "product_id", databaseAlgorithmSegment));
result.setKeyGenerateStrategySegment(new
KeyGenerateStrategySegment("product_id", new
AlgorithmSegment("DISTSQL.FIXTURE", new Properties())));
return result;
}
diff --git
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/CreateDefaultShardingStrategyStatementUpdaterTest.java
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/CreateDefaultShardingStrategyStatementUpdaterTest.java
index 1162285cd31..22080e7f22a 100644
---
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/CreateDefaultShardingStrategyStatementUpdaterTest.java
+++
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/CreateDefaultShardingStrategyStatementUpdaterTest.java
@@ -54,18 +54,19 @@ public final class
CreateDefaultShardingStrategyStatementUpdaterTest {
@Test(expected = InvalidAlgorithmConfigurationException.class)
public void assertExecuteWithInvalidStrategyType() {
- updater.checkSQLStatement(database, new
CreateDefaultShardingStrategyStatement("TABLE", "invalidType", null,
"order_id_algorithm", null), new ShardingRuleConfiguration());
+ updater.checkSQLStatement(database, new
CreateDefaultShardingStrategyStatement("TABLE", "invalidType", null, null), new
ShardingRuleConfiguration());
}
@Test(expected = MissingRequiredRuleException.class)
public void assertExecuteWithoutCurrentConfiguration() {
- CreateDefaultShardingStrategyStatement statement = new
CreateDefaultShardingStrategyStatement("TABLE", "standard", "order_id",
"order_id_algorithm", null);
+ CreateDefaultShardingStrategyStatement statement = new
CreateDefaultShardingStrategyStatement("TABLE", "standard", "order_id", null);
updater.checkSQLStatement(database, statement, null);
}
@Test(expected = DuplicateRuleException.class)
public void assertExecuteWithExist() {
- CreateDefaultShardingStrategyStatement statement = new
CreateDefaultShardingStrategyStatement("TABLE", "standard", "order_id",
"order_id_algorithm", null);
+ AlgorithmSegment algorithm = new
AlgorithmSegment("order_id_algorithm", new Properties());
+ CreateDefaultShardingStrategyStatement statement = new
CreateDefaultShardingStrategyStatement("TABLE", "standard", "order_id",
algorithm);
ShardingRuleConfiguration currentRuleConfig = new
ShardingRuleConfiguration();
currentRuleConfig.setDefaultTableShardingStrategy(new
StandardShardingStrategyConfiguration("order_id", "orderAlgorithm"));
currentRuleConfig.getShardingAlgorithms().put("order_id_algorithm",
null);
@@ -74,7 +75,7 @@ public final class
CreateDefaultShardingStrategyStatementUpdaterTest {
@Test(expected = InvalidAlgorithmConfigurationException.class)
public void assertExecuteWithUnmatchedStrategy() {
- CreateDefaultShardingStrategyStatement statement = new
CreateDefaultShardingStrategyStatement("TABLE", "standard", "order_id,user_id",
"order_id_algorithm", null);
+ CreateDefaultShardingStrategyStatement statement = new
CreateDefaultShardingStrategyStatement("TABLE", "standard", "order_id,user_id",
null);
ShardingRuleConfiguration currentRuleConfig = new
ShardingRuleConfiguration();
currentRuleConfig.setDefaultTableShardingStrategy(new
StandardShardingStrategyConfiguration("order_id", "orderAlgorithm"));
currentRuleConfig.getShardingAlgorithms().put("order_id_algorithm",
null);
@@ -83,7 +84,8 @@ public final class
CreateDefaultShardingStrategyStatementUpdaterTest {
@Test
public void assertCreateDefaultTableShardingStrategy() {
- CreateDefaultShardingStrategyStatement statement = new
CreateDefaultShardingStrategyStatement("TABLE", "standard", "order_id",
"order_id_algorithm", null);
+ AlgorithmSegment algorithm = new
AlgorithmSegment("order_id_algorithm", new Properties());
+ CreateDefaultShardingStrategyStatement statement = new
CreateDefaultShardingStrategyStatement("TABLE", "standard", "order_id",
algorithm);
ShardingRuleConfiguration currentRuleConfig = new
ShardingRuleConfiguration();
currentRuleConfig.setDefaultDatabaseShardingStrategy(new
StandardShardingStrategyConfiguration("order_id", "orderAlgorithm"));
currentRuleConfig.getShardingAlgorithms().put("order_id_algorithm",
null);
@@ -91,14 +93,14 @@ public final class
CreateDefaultShardingStrategyStatementUpdaterTest {
ShardingRuleConfiguration toBeCreatedRuleConfig =
updater.buildToBeCreatedRuleConfiguration(statement);
updater.updateCurrentRuleConfiguration(currentRuleConfig,
toBeCreatedRuleConfig);
StandardShardingStrategyConfiguration defaultTableShardingStrategy =
(StandardShardingStrategyConfiguration)
currentRuleConfig.getDefaultTableShardingStrategy();
- assertThat(defaultTableShardingStrategy.getShardingAlgorithmName(),
is("order_id_algorithm"));
+ assertThat(defaultTableShardingStrategy.getShardingAlgorithmName(),
is("default_table_order_id_algorithm"));
assertThat(defaultTableShardingStrategy.getShardingColumn(),
is("order_id"));
}
@Test
public void assertCreateDefaultDatabaseShardingStrategy() {
AlgorithmSegment databaseAlgorithmSegment =
getAutoCreativeAlgorithmSegment("inline", newProperties("algorithm-expression",
"ds_${user_id% 2}"));
- CreateDefaultShardingStrategyStatement statement = new
CreateDefaultShardingStrategyStatement("DATABASE", "standard", "user_id", null,
databaseAlgorithmSegment);
+ CreateDefaultShardingStrategyStatement statement = new
CreateDefaultShardingStrategyStatement("DATABASE", "standard", "user_id",
databaseAlgorithmSegment);
ShardingRuleConfiguration currentRuleConfig = new
ShardingRuleConfiguration();
updater.checkSQLStatement(database, statement, currentRuleConfig);
ShardingRuleConfiguration toBeCreatedRuleConfig =
updater.buildToBeCreatedRuleConfiguration(statement);
diff --git
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/CreateShardingTableRuleStatementUpdaterTest.java
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/CreateShardingTableRuleStatementUpdaterTest.java
index 6840e370942..1f4009c8070 100644
---
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/CreateShardingTableRuleStatementUpdaterTest.java
+++
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/CreateShardingTableRuleStatementUpdaterTest.java
@@ -109,7 +109,7 @@ public final class
CreateShardingTableRuleStatementUpdaterTest {
assertThat(tableRule.getLogicTable(), is("t_order_input"));
assertThat(tableRule.getActualDataNodes(),
is("ds_${0..1}.t_order_${0..1}"));
assertThat(((StandardShardingStrategyConfiguration)
tableRule.getTableShardingStrategy()).getShardingColumn(), is("product_id"));
-
assertThat(tableRule.getTableShardingStrategy().getShardingAlgorithmName(),
is("t_order_algorithm"));
+
assertThat(tableRule.getTableShardingStrategy().getShardingAlgorithmName(),
is("t_order_input_table_algorithm"));
assertThat(tableRule.getDatabaseShardingStrategy(),
instanceOf(StandardShardingStrategyConfiguration.class));
assertThat(tableRule.getDatabaseShardingStrategy().getShardingAlgorithmName(),
is("t_order_input_database_inline"));
assertThat(currentRuleConfig.getTables().size(), is(2));
@@ -162,9 +162,9 @@ public final class
CreateShardingTableRuleStatementUpdaterTest {
private TableRuleSegment createCompleteTableRule() {
TableRuleSegment result = new TableRuleSegment("t_order_input",
Collections.singletonList("ds_${0..1}.t_order_${0..1}"));
- result.setTableStrategySegment(new ShardingStrategySegment("standard",
"product_id", "t_order_algorithm", null));
+ result.setTableStrategySegment(new ShardingStrategySegment("standard",
"product_id", new AlgorithmSegment("algorithm", new Properties())));
AlgorithmSegment databaseAlgorithmSegment = new
AlgorithmSegment("inline", createProperties("algorithm-expression",
"ds_${user_id% 2}"));
- result.setDatabaseStrategySegment(new
ShardingStrategySegment("standard", "product_id", null,
databaseAlgorithmSegment));
+ result.setDatabaseStrategySegment(new
ShardingStrategySegment("standard", "product_id", databaseAlgorithmSegment));
result.setKeyGenerateStrategySegment(new
KeyGenerateStrategySegment("product_id", new
AlgorithmSegment("DISTSQL.FIXTURE", new Properties())));
return result;
}
diff --git
a/features/sharding/distsql/parser/src/main/antlr4/imports/sharding/RDLStatement.g4
b/features/sharding/distsql/parser/src/main/antlr4/imports/sharding/RDLStatement.g4
index 46bd6207843..802eb9d741c 100644
---
a/features/sharding/distsql/parser/src/main/antlr4/imports/sharding/RDLStatement.g4
+++
b/features/sharding/distsql/parser/src/main/antlr4/imports/sharding/RDLStatement.g4
@@ -51,14 +51,6 @@ dropBroadcastTableRule
: DROP BROADCAST TABLE RULE ifExists? tableName (COMMA tableName)*
;
-createShardingAlgorithm
- : CREATE SHARDING ALGORITHM shardingAlgorithmDefinition (COMMA
shardingAlgorithmDefinition)*
- ;
-
-alterShardingAlgorithm
- : ALTER SHARDING ALGORITHM shardingAlgorithmDefinition (COMMA
shardingAlgorithmDefinition)*
- ;
-
dropShardingAlgorithm
: DROP SHARDING ALGORITHM ifExists? shardingAlgorithmName (COMMA
shardingAlgorithmName)*
;
@@ -75,14 +67,6 @@ dropDefaultShardingStrategy
: DROP DEFAULT SHARDING type=(DATABASE | TABLE) STRATEGY ifExists?
;
-createShardingKeyGenerator
- : CREATE SHARDING KEY GENERATOR keyGeneratorDefinition (COMMA
keyGeneratorDefinition)*
- ;
-
-alterShardingKeyGenerator
- : ALTER SHARDING KEY GENERATOR keyGeneratorDefinition (COMMA
keyGeneratorDefinition)*
- ;
-
dropShardingKeyGenerator
: DROP SHARDING KEY GENERATOR ifExists? keyGeneratorName (COMMA
keyGeneratorName)*
;
@@ -104,11 +88,11 @@ shardingTableRuleDefinition
;
shardingAutoTableRule
- : tableName LP resources COMMA autoShardingColumnDefinition COMMA
algorithmDefinition (COMMA keyGenerateDeclaration)? RP
+ : tableName LP resources COMMA autoShardingColumnDefinition COMMA
algorithmDefinition (COMMA keyGenerateDefinition)? RP
;
shardingTableRule
- : tableName LP dataNodes (COMMA databaseStrategy)? (COMMA tableStrategy)?
(COMMA keyGenerateDeclaration)? (COMMA auditDeclaration)? RP
+ : tableName LP dataNodes (COMMA databaseStrategy)? (COMMA tableStrategy)?
(COMMA keyGenerateDefinition)? (COMMA auditDeclaration)? RP
;
keyGeneratorDefinition
@@ -160,21 +144,9 @@ shardingColumns
;
shardingAlgorithm
- : existingAlgorithm | autoCreativeAlgorithm
- ;
-
-existingAlgorithm
- : SHARDING_ALGORITHM EQ shardingAlgorithmName
- ;
-
-autoCreativeAlgorithm
: SHARDING_ALGORITHM LP algorithmDefinition RP
;
-keyGenerator
- : KEY_GENERATOR EQ shardingAlgorithmName
- ;
-
shardingStrategy
: TYPE EQ strategyType COMMA shardingColumnDefinition COMMA
shardingAlgorithm
;
@@ -187,18 +159,10 @@ tableStrategy
: TABLE_STRATEGY LP shardingStrategy RP
;
-keyGenerateDeclaration
- : keyGenerateDefinition | keyGenerateStrategy
- ;
-
keyGenerateDefinition
: KEY_GENERATE_STRATEGY LP COLUMN EQ columnName COMMA algorithmDefinition
RP
;
-keyGenerateStrategy
- : KEY_GENERATE_STRATEGY LP COLUMN EQ columnName COMMA keyGenerator RP
- ;
-
auditDeclaration
: auditDefinition | auditStrategy
;
diff --git
a/features/sharding/distsql/parser/src/main/antlr4/sharding/org/apache/shardingsphere/distsql/parser/autogen/ShardingDistSQLStatement.g4
b/features/sharding/distsql/parser/src/main/antlr4/sharding/org/apache/shardingsphere/distsql/parser/autogen/ShardingDistSQLStatement.g4
index ac84ddd9242..24c71655fb0 100644
---
a/features/sharding/distsql/parser/src/main/antlr4/sharding/org/apache/shardingsphere/distsql/parser/autogen/ShardingDistSQLStatement.g4
+++
b/features/sharding/distsql/parser/src/main/antlr4/sharding/org/apache/shardingsphere/distsql/parser/autogen/ShardingDistSQLStatement.g4
@@ -42,11 +42,7 @@ execute
| addShardingHintTableValue
| showShardingHintStatus
| clearShardingHint
- | createShardingAlgorithm
- | alterShardingAlgorithm
| showShardingTableNodes
- | createShardingKeyGenerator
- | alterShardingKeyGenerator
| showShardingKeyGenerators
| dropShardingKeyGenerator
| showShardingAuditors
diff --git
a/features/sharding/distsql/parser/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/core/ShardingDistSQLStatementVisitor.java
b/features/sharding/distsql/parser/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/core/ShardingDistSQLStatementVisitor.java
index d9c9f96f1af..4d42cfefe79 100644
---
a/features/sharding/distsql/parser/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/core/ShardingDistSQLStatementVisitor.java
+++
b/features/sharding/distsql/parser/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/core/ShardingDistSQLStatementVisitor.java
@@ -24,10 +24,8 @@ import
org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatement
import
org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.AlgorithmDefinitionContext;
import
org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.AlgorithmPropertyContext;
import
org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.AlterDefaultShardingStrategyContext;
-import
org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.AlterShardingAlgorithmContext;
import
org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.AlterShardingAuditorContext;
import
org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.AlterShardingBindingTableRulesContext;
-import
org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.AlterShardingKeyGeneratorContext;
import
org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.AlterShardingTableRuleContext;
import
org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.AuditDefinitionContext;
import
org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.AuditStrategyContext;
@@ -39,10 +37,8 @@ import
org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatement
import
org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.CountShardingRuleContext;
import
org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.CreateBroadcastTableRuleContext;
import
org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.CreateDefaultShardingStrategyContext;
-import
org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.CreateShardingAlgorithmContext;
import
org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.CreateShardingAuditorContext;
import
org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.CreateShardingBindingTableRulesContext;
-import
org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.CreateShardingKeyGeneratorContext;
import
org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.CreateShardingTableRuleContext;
import
org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.DataNodesContext;
import
org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.DatabaseNameContext;
@@ -54,11 +50,8 @@ import
org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatement
import
org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.DropShardingKeyGeneratorContext;
import
org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.DropShardingTableRuleContext;
import
org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.KeyGenerateDefinitionContext;
-import
org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.KeyGenerateStrategyContext;
-import
org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.KeyGeneratorDefinitionContext;
import
org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.ResourcesContext;
import
org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.SetShardingHintDatabaseValueContext;
-import
org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.ShardingAlgorithmDefinitionContext;
import
org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.ShardingAutoTableRuleContext;
import
org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.ShardingColumnDefinitionContext;
import
org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.ShardingStrategyContext;
@@ -88,24 +81,18 @@ import
org.apache.shardingsphere.sharding.distsql.parser.segment.AuditStrategySe
import
org.apache.shardingsphere.sharding.distsql.parser.segment.AutoTableRuleSegment;
import
org.apache.shardingsphere.sharding.distsql.parser.segment.BindingTableRuleSegment;
import
org.apache.shardingsphere.sharding.distsql.parser.segment.KeyGenerateStrategySegment;
-import
org.apache.shardingsphere.sharding.distsql.parser.segment.ShardingAlgorithmSegment;
import
org.apache.shardingsphere.sharding.distsql.parser.segment.ShardingAuditorSegment;
-import
org.apache.shardingsphere.sharding.distsql.parser.segment.ShardingKeyGeneratorSegment;
import
org.apache.shardingsphere.sharding.distsql.parser.segment.ShardingStrategySegment;
import
org.apache.shardingsphere.sharding.distsql.parser.segment.TableRuleSegment;
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.AlterShardingAuditorStatement;
import
org.apache.shardingsphere.sharding.distsql.parser.statement.AlterShardingBindingTableRulesStatement;
-import
org.apache.shardingsphere.sharding.distsql.parser.statement.AlterShardingKeyGeneratorStatement;
import
org.apache.shardingsphere.sharding.distsql.parser.statement.AlterShardingTableRuleStatement;
import
org.apache.shardingsphere.sharding.distsql.parser.statement.CountShardingRuleStatement;
import
org.apache.shardingsphere.sharding.distsql.parser.statement.CreateBroadcastTableRuleStatement;
import
org.apache.shardingsphere.sharding.distsql.parser.statement.CreateDefaultShardingStrategyStatement;
-import
org.apache.shardingsphere.sharding.distsql.parser.statement.CreateShardingAlgorithmStatement;
import
org.apache.shardingsphere.sharding.distsql.parser.statement.CreateShardingAuditorStatement;
import
org.apache.shardingsphere.sharding.distsql.parser.statement.CreateShardingBindingTableRulesStatement;
-import
org.apache.shardingsphere.sharding.distsql.parser.statement.CreateShardingKeyGeneratorStatement;
import
org.apache.shardingsphere.sharding.distsql.parser.statement.CreateShardingTableRuleStatement;
import
org.apache.shardingsphere.sharding.distsql.parser.statement.DropBroadcastTableRuleStatement;
import
org.apache.shardingsphere.sharding.distsql.parser.statement.DropDefaultShardingStrategyStatement;
@@ -154,11 +141,6 @@ import java.util.stream.Collectors;
*/
public final class ShardingDistSQLStatementVisitor extends
ShardingDistSQLStatementBaseVisitor<ASTNode> implements SQLVisitor {
- @Override
- public ASTNode visitAlterShardingAlgorithm(final
AlterShardingAlgorithmContext ctx) {
- return new
AlterShardingAlgorithmStatement(ctx.shardingAlgorithmDefinition().stream().map(this::buildAlgorithmSegment).collect(Collectors.toList()));
- }
-
@Override
public ASTNode visitCreateShardingTableRule(final
CreateShardingTableRuleContext ctx) {
List<AbstractTableRuleSegment> tableRuleSegments =
ctx.shardingTableRuleDefinition().stream().map(each ->
(AbstractTableRuleSegment) visit(each))
@@ -221,18 +203,14 @@ public final class ShardingDistSQLStatementVisitor
extends ShardingDistSQLStatem
@Override
public ASTNode visitCreateDefaultShardingStrategy(final
CreateDefaultShardingStrategyContext ctx) {
ShardingStrategyContext shardingStrategyContext =
ctx.shardingStrategy();
- String shardingAlgorithmName = null;
- if (null !=
shardingStrategyContext.shardingAlgorithm().existingAlgorithm()) {
- shardingAlgorithmName =
getIdentifierValue(shardingStrategyContext.shardingAlgorithm().existingAlgorithm().shardingAlgorithmName()).toLowerCase();
- }
AlgorithmSegment algorithmSegment = null;
- if (null !=
shardingStrategyContext.shardingAlgorithm().autoCreativeAlgorithm()) {
- algorithmSegment = (AlgorithmSegment)
visitAlgorithmDefinition(shardingStrategyContext.shardingAlgorithm().autoCreativeAlgorithm().algorithmDefinition());
+ if (null !=
shardingStrategyContext.shardingAlgorithm().algorithmDefinition()) {
+ algorithmSegment = (AlgorithmSegment)
visitAlgorithmDefinition(shardingStrategyContext.shardingAlgorithm().algorithmDefinition());
}
String defaultType = new
IdentifierValue(ctx.type.getText()).getValue();
String strategyType =
getIdentifierValue(shardingStrategyContext.strategyType());
String shardingColumn =
buildShardingColumn(ctx.shardingStrategy().shardingColumnDefinition());
- return new CreateDefaultShardingStrategyStatement(defaultType,
strategyType, shardingColumn, shardingAlgorithmName, algorithmSegment);
+ return new CreateDefaultShardingStrategyStatement(defaultType,
strategyType, shardingColumn, algorithmSegment);
}
@Override
@@ -258,18 +236,14 @@ public final class ShardingDistSQLStatementVisitor
extends ShardingDistSQLStatem
@Override
public ASTNode visitAlterDefaultShardingStrategy(final
AlterDefaultShardingStrategyContext ctx) {
ShardingStrategyContext shardingStrategyContext =
ctx.shardingStrategy();
- String shardingAlgorithmName = null;
- if (null !=
shardingStrategyContext.shardingAlgorithm().existingAlgorithm()) {
- shardingAlgorithmName =
getIdentifierValue(shardingStrategyContext.shardingAlgorithm().existingAlgorithm().shardingAlgorithmName()).toLowerCase();
- }
AlgorithmSegment algorithmSegment = null;
- if (null !=
shardingStrategyContext.shardingAlgorithm().autoCreativeAlgorithm()) {
- algorithmSegment = (AlgorithmSegment)
visitAlgorithmDefinition(shardingStrategyContext.shardingAlgorithm().autoCreativeAlgorithm().algorithmDefinition());
+ if (null !=
shardingStrategyContext.shardingAlgorithm().algorithmDefinition()) {
+ algorithmSegment = (AlgorithmSegment)
visitAlgorithmDefinition(shardingStrategyContext.shardingAlgorithm().algorithmDefinition());
}
String defaultType = new
IdentifierValue(ctx.type.getText()).getValue();
String strategyType =
getIdentifierValue(shardingStrategyContext.strategyType());
String shardingColumn =
buildShardingColumn(ctx.shardingStrategy().shardingColumnDefinition());
- return new AlterDefaultShardingStrategyStatement(defaultType,
strategyType, shardingColumn, shardingAlgorithmName, algorithmSegment);
+ return new AlterDefaultShardingStrategyStatement(defaultType,
strategyType, shardingColumn, algorithmSegment);
}
@Override
@@ -317,7 +291,7 @@ public final class ShardingDistSQLStatementVisitor extends
ShardingDistSQLStatem
@Override
public ASTNode visitShardingTableRule(final ShardingTableRuleContext ctx) {
- KeyGenerateStrategySegment keyGenerateSegment = null ==
ctx.keyGenerateDeclaration() ? null : (KeyGenerateStrategySegment)
visit(ctx.keyGenerateDeclaration());
+ KeyGenerateStrategySegment keyGenerateSegment = null ==
ctx.keyGenerateDefinition() ? null : (KeyGenerateStrategySegment)
visit(ctx.keyGenerateDefinition());
AuditStrategySegment auditStrategySegment = null ==
ctx.auditDeclaration() ? null : (AuditStrategySegment)
visit(ctx.auditDeclaration());
TableRuleSegment result = new
TableRuleSegment(getIdentifierValue(ctx.tableName()),
getDataNodes(ctx.dataNodes()), keyGenerateSegment, auditStrategySegment);
Optional.ofNullable(ctx.tableStrategy()).ifPresent(optional ->
result.setTableStrategySegment((ShardingStrategySegment)
visit(ctx.tableStrategy().shardingStrategy())));
@@ -334,17 +308,12 @@ public final class ShardingDistSQLStatementVisitor
extends ShardingDistSQLStatem
@Override
public ASTNode visitShardingAutoTableRule(final
ShardingAutoTableRuleContext ctx) {
AutoTableRuleSegment result = new
AutoTableRuleSegment(getIdentifierValue(ctx.tableName()),
getResources(ctx.resources()));
- Optional.ofNullable(ctx.keyGenerateDeclaration()).ifPresent(optional
-> result.setKeyGenerateStrategySegment((KeyGenerateStrategySegment)
visit(ctx.keyGenerateDeclaration())));
+ Optional.ofNullable(ctx.keyGenerateDefinition()).ifPresent(optional ->
result.setKeyGenerateStrategySegment((KeyGenerateStrategySegment)
visit(ctx.keyGenerateDefinition())));
Optional.ofNullable(ctx.autoShardingColumnDefinition()).ifPresent(optional ->
result.setShardingColumn(buildShardingColumn(ctx.autoShardingColumnDefinition())));
Optional.ofNullable(ctx.algorithmDefinition()).ifPresent(optional ->
result.setShardingAlgorithmSegment((AlgorithmSegment)
visit(ctx.algorithmDefinition())));
return result;
}
- @Override
- public ASTNode visitKeyGenerateStrategy(final KeyGenerateStrategyContext
ctx) {
- return null == ctx ? null : new
KeyGenerateStrategySegment(getIdentifierValue(ctx.columnName()),
getIdentifierValue(ctx.keyGenerator().shardingAlgorithmName()));
- }
-
@Override
public ASTNode visitKeyGenerateDefinition(final
KeyGenerateDefinitionContext ctx) {
return null == ctx ? null : new
KeyGenerateStrategySegment(getIdentifierValue(ctx.columnName()),
(AlgorithmSegment) visit(ctx.algorithmDefinition()));
@@ -382,15 +351,11 @@ public final class ShardingDistSQLStatementVisitor
extends ShardingDistSQLStatem
if (null == ctx) {
return null;
}
- String shardingAlgorithmName = null;
- if (null != ctx.shardingAlgorithm().existingAlgorithm()) {
- shardingAlgorithmName =
getIdentifierValue(ctx.shardingAlgorithm().existingAlgorithm().shardingAlgorithmName()).toLowerCase();
- }
AlgorithmSegment algorithmSegment = null;
- if (null != ctx.shardingAlgorithm().autoCreativeAlgorithm()) {
- algorithmSegment = (AlgorithmSegment)
visitAlgorithmDefinition(ctx.shardingAlgorithm().autoCreativeAlgorithm().algorithmDefinition());
+ if (null != ctx.shardingAlgorithm().algorithmDefinition()) {
+ algorithmSegment = (AlgorithmSegment)
visitAlgorithmDefinition(ctx.shardingAlgorithm().algorithmDefinition());
}
- return new
ShardingStrategySegment(getIdentifierValue(ctx.strategyType()),
buildShardingColumn(ctx.shardingColumnDefinition()), shardingAlgorithmName,
algorithmSegment);
+ return new
ShardingStrategySegment(getIdentifierValue(ctx.strategyType()),
buildShardingColumn(ctx.shardingColumnDefinition()), algorithmSegment);
}
private Collection<String> getResources(final ResourcesContext ctx) {
@@ -432,15 +397,6 @@ public final class ShardingDistSQLStatementVisitor extends
ShardingDistSQLStatem
return result;
}
- @Override
- public ASTNode visitCreateShardingAlgorithm(final
CreateShardingAlgorithmContext ctx) {
- return new
CreateShardingAlgorithmStatement(ctx.shardingAlgorithmDefinition().stream().map(this::buildAlgorithmSegment).collect(Collectors.toList()));
- }
-
- private ShardingAlgorithmSegment buildAlgorithmSegment(final
ShardingAlgorithmDefinitionContext ctx) {
- return new
ShardingAlgorithmSegment(getIdentifierValue(ctx.shardingAlgorithmName()),
(AlgorithmSegment) visitAlgorithmDefinition(ctx.algorithmDefinition()));
- }
-
@Override
public ASTNode visitTableName(final TableNameContext ctx) {
return new TableNameSegment(ctx.getStart().getStartIndex(),
ctx.getStop().getStopIndex(), new IdentifierValue(ctx.getText()));
@@ -456,20 +412,6 @@ public final class ShardingDistSQLStatementVisitor extends
ShardingDistSQLStatem
return new DatabaseSegment(ctx.getStart().getStartIndex(),
ctx.getStop().getStopIndex(), new IdentifierValue(ctx.getText()));
}
- @Override
- public ASTNode visitCreateShardingKeyGenerator(final
CreateShardingKeyGeneratorContext ctx) {
- return new
CreateShardingKeyGeneratorStatement(ctx.keyGeneratorDefinition().stream().map(this::buildShardingKeyGeneratorSegment).collect(Collectors.toList()));
- }
-
- @Override
- public ASTNode visitAlterShardingKeyGenerator(final
AlterShardingKeyGeneratorContext ctx) {
- return new
AlterShardingKeyGeneratorStatement(ctx.keyGeneratorDefinition().stream().map(this::buildShardingKeyGeneratorSegment).collect(Collectors.toList()));
- }
-
- private ShardingKeyGeneratorSegment buildShardingKeyGeneratorSegment(final
KeyGeneratorDefinitionContext ctx) {
- return new
ShardingKeyGeneratorSegment(getIdentifierValue(ctx.keyGeneratorName()),
(AlgorithmSegment) visitAlgorithmDefinition(ctx.algorithmDefinition()));
- }
-
@Override
public ASTNode visitShowShardingKeyGenerators(final
ShowShardingKeyGeneratorsContext ctx) {
return new
ShowShardingKeyGeneratorsStatement(Objects.nonNull(ctx.databaseName()) ?
(DatabaseSegment) visit(ctx.databaseName()) : null);
diff --git
a/features/sharding/distsql/statement/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/segment/ShardingStrategySegment.java
b/features/sharding/distsql/statement/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/segment/ShardingStrategySegment.java
index 911a128d474..c2fa480e8a2 100644
---
a/features/sharding/distsql/statement/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/segment/ShardingStrategySegment.java
+++
b/features/sharding/distsql/statement/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/segment/ShardingStrategySegment.java
@@ -33,7 +33,5 @@ public final class ShardingStrategySegment implements ASTNode
{
private final String shardingColumn;
- private final String shardingAlgorithmName;
-
private final AlgorithmSegment algorithmSegment;
}
diff --git
a/features/sharding/distsql/statement/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/statement/AlterDefaultShardingStrategyStatement.java
b/features/sharding/distsql/statement/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/statement/AlterDefaultShardingStrategyStatement.java
index 4e006e953c7..75ca8813ca4 100644
---
a/features/sharding/distsql/statement/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/statement/AlterDefaultShardingStrategyStatement.java
+++
b/features/sharding/distsql/statement/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/statement/AlterDefaultShardingStrategyStatement.java
@@ -35,7 +35,5 @@ public final class AlterDefaultShardingStrategyStatement
extends AlterRuleStatem
private final String shardingColumn;
- private final String shardingAlgorithmName;
-
private final AlgorithmSegment algorithmSegment;
}
diff --git
a/features/sharding/distsql/statement/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/statement/CreateDefaultShardingStrategyStatement.java
b/features/sharding/distsql/statement/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/statement/CreateDefaultShardingStrategyStatement.java
index cd42f255134..ea165e6c741 100644
---
a/features/sharding/distsql/statement/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/statement/CreateDefaultShardingStrategyStatement.java
+++
b/features/sharding/distsql/statement/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/statement/CreateDefaultShardingStrategyStatement.java
@@ -35,7 +35,5 @@ public final class CreateDefaultShardingStrategyStatement
extends CreateRuleStat
private final String shardingColumn;
- private final String shardingAlgorithmName;
-
private final AlgorithmSegment algorithmSegment;
}
diff --git
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactoryTest.java
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactoryTest.java
index f55fe70e9fe..b86f49ff756 100644
---
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactoryTest.java
+++
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactoryTest.java
@@ -244,7 +244,7 @@ public final class ProxyBackendHandlerFactoryTest extends
ProxyContextRestorer {
@Test(expected = UnsupportedSQLOperationException.class)
public void assertUnsupportedNonQueryDistSQLInTransaction() throws
SQLException {
when(connectionSession.getTransactionStatus().isInTransaction()).thenReturn(true);
- String sql = "CREATE SHARDING KEY GENERATOR snowflake_key_generator
(TYPE(NAME='SNOWFLAKE', PROPERTIES('max-vibration-offset'='3')));";
+ String sql = "CREATE SHARDING TABLE RULE t_order
(RESOURCES(ms_group_0,ms_group_1), SHARDING_COLUMN=order_id,
TYPE(NAME='hash_mod', PROPERTIES('sharding-count'='4')));";
ProxyBackendHandlerFactory.newInstance(databaseType, sql,
connectionSession);
}
diff --git
a/test/integration-test/transaction/src/test/java/org/apache/shardingsphere/integration/transaction/engine/base/BaseTransactionITCase.java
b/test/integration-test/transaction/src/test/java/org/apache/shardingsphere/integration/transaction/engine/base/BaseTransactionITCase.java
index 20a9fe5ef82..7b66206a6fa 100644
---
a/test/integration-test/transaction/src/test/java/org/apache/shardingsphere/integration/transaction/engine/base/BaseTransactionITCase.java
+++
b/test/integration-test/transaction/src/test/java/org/apache/shardingsphere/integration/transaction/engine/base/BaseTransactionITCase.java
@@ -52,21 +52,11 @@ public abstract class BaseTransactionITCase extends
BaseITCase {
private void initProxyConfig() throws SQLException {
addResources();
- initShardingAlgorithm();
assertTrue(waitShardingAlgorithmEffect());
initTableRules();
createTables();
}
- private void initShardingAlgorithm() throws SQLException {
- Connection connection = getProxyConnection();
- executeWithLog(connection,
getCommonSQLCommand().getCreateDatabaseShardingAlgorithm());
- executeWithLog(connection,
getCommonSQLCommand().getCreateDatabaseIdShardingAlgorithm());
- executeWithLog(connection,
getCommonSQLCommand().getCreateOrderShardingAlgorithm());
- executeWithLog(connection,
getCommonSQLCommand().getCreateOrderItemShardingAlgorithm());
- executeWithLog(connection,
getCommonSQLCommand().getCreateAccountShardingAlgorithm());
- }
-
private boolean waitShardingAlgorithmEffect() throws SQLException {
long maxWaitTimes = 15;
long startTime = System.currentTimeMillis();
diff --git
a/test/integration-test/transaction/src/test/java/org/apache/shardingsphere/integration/transaction/engine/command/CommonSQLCommand.java
b/test/integration-test/transaction/src/test/java/org/apache/shardingsphere/integration/transaction/engine/command/CommonSQLCommand.java
index 8b856e64d2b..8bcaf89edfa 100644
---
a/test/integration-test/transaction/src/test/java/org/apache/shardingsphere/integration/transaction/engine/command/CommonSQLCommand.java
+++
b/test/integration-test/transaction/src/test/java/org/apache/shardingsphere/integration/transaction/engine/command/CommonSQLCommand.java
@@ -31,21 +31,6 @@ import javax.xml.bind.annotation.XmlRootElement;
@Setter
public final class CommonSQLCommand {
- @XmlElement(name = "create-database-sharding-algorithm")
- private String createDatabaseShardingAlgorithm;
-
- @XmlElement(name = "create-database-id-sharding-algorithm")
- private String createDatabaseIdShardingAlgorithm;
-
- @XmlElement(name = "create-order-sharding-algorithm")
- private String createOrderShardingAlgorithm;
-
- @XmlElement(name = "create-order-item-sharding-algorithm")
- private String createOrderItemShardingAlgorithm;
-
- @XmlElement(name = "create-account-sharding-algorithm")
- private String createAccountShardingAlgorithm;
-
@XmlElement(name = "create-order-table-rule")
private String createOrderTableRule;
diff --git
a/test/integration-test/transaction/src/test/resources/env/common/command.xml
b/test/integration-test/transaction/src/test/resources/env/common/command.xml
index d5d2ba2cbcd..8389bf49f1d 100644
---
a/test/integration-test/transaction/src/test/resources/env/common/command.xml
+++
b/test/integration-test/transaction/src/test/resources/env/common/command.xml
@@ -16,41 +16,11 @@
-->
<command>
- <create-database-sharding-algorithm>
- CREATE SHARDING ALGORITHM database_inline (
- TYPE(NAME='INLINE',PROPERTIES("algorithm-expression"="ds_${user_id %
2}"))
- )
- </create-database-sharding-algorithm>
-
- <create-database-id-sharding-algorithm>
- CREATE SHARDING ALGORITHM database_id_inline (
- TYPE(NAME='INLINE',PROPERTIES("algorithm-expression"="ds_${id % 2}"))
- )
- </create-database-id-sharding-algorithm>
-
- <create-order-sharding-algorithm>
- CREATE SHARDING ALGORITHM t_order_inline (
-
TYPE(NAME='INLINE',PROPERTIES("algorithm-expression"="t_order_${order_id % 2}"))
- )
- </create-order-sharding-algorithm>
-
- <create-order-item-sharding-algorithm>
- CREATE SHARDING ALGORITHM t_order_item_inline (
-
TYPE(NAME='INLINE',PROPERTIES("algorithm-expression"="t_order_item_${order_id %
2}"))
- )
- </create-order-item-sharding-algorithm>
-
- <create-account-sharding-algorithm>
- CREATE SHARDING ALGORITHM account_inline (
-
TYPE(NAME='INLINE',PROPERTIES("algorithm-expression"="account_${Math.floorMod(Math.floorDiv(id.longValue(),
2L), 2L)}"))
- )
- </create-account-sharding-algorithm>
-
<create-order-table-rule>
CREATE SHARDING TABLE RULE t_order (
DATANODES("ds_${0..1}.t_order_${0..1}"),
-
DATABASE_STRATEGY(TYPE='STANDARD',SHARDING_COLUMN=`user_id`,SHARDING_ALGORITHM=database_inline),
-
TABLE_STRATEGY(TYPE='STANDARD',SHARDING_COLUMN=`order_id`,SHARDING_ALGORITHM=t_order_inline),
+
DATABASE_STRATEGY(TYPE='STANDARD',SHARDING_COLUMN=`user_id`,SHARDING_ALGORITHM(TYPE(NAME='INLINE',PROPERTIES("algorithm-expression"="ds_${user_id
% 2}"))),
+
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-order-table-rule>
@@ -58,8 +28,8 @@
<create-order-item-table-rule>
CREATE SHARDING TABLE RULE t_order_item (
DATANODES("ds_${0..1}.t_order_item_${0..1}"),
-
DATABASE_STRATEGY(TYPE='STANDARD',SHARDING_COLUMN=`user_id`,SHARDING_ALGORITHM=database_inline),
-
TABLE_STRATEGY(TYPE='STANDARD',SHARDING_COLUMN=`order_id`,SHARDING_ALGORITHM=t_order_item_inline),
+
DATABASE_STRATEGY(TYPE='STANDARD',SHARDING_COLUMN=`user_id`,SHARDING_ALGORITHM(TYPE(NAME='INLINE',PROPERTIES("algorithm-expression"="ds_${user_id
% 2}"))),
+
TABLE_STRATEGY(TYPE='STANDARD',SHARDING_COLUMN=`order_id`,SHARDING_ALGORITHM(TYPE(NAME='INLINE',PROPERTIES("algorithm-expression"="t_order_item_${order_id
% 2}"))),
KEY_GENERATE_STRATEGY(COLUMN=`order_id`,TYPE(NAME='snowflake'))
)
</create-order-item-table-rule>
@@ -67,8 +37,8 @@
<create-account-table-rule>
CREATE SHARDING TABLE RULE account (
DATANODES("ds_${0..1}.account_${0..1}"),
- DATABASE_STRATEGY(TYPE='STANDARD', SHARDING_COLUMN=`id`,
SHARDING_ALGORITHM=database_id_inline),
- TABLE_STRATEGY(TYPE='STANDARD', SHARDING_COLUMN=`id`,
SHARDING_ALGORITHM=account_inline),
+ DATABASE_STRATEGY(TYPE='STANDARD', SHARDING_COLUMN=`id`,
SHARDING_ALGORITHM(TYPE(NAME='INLINE',PROPERTIES("algorithm-expression"="ds_${id
% 2}"))),
+ TABLE_STRATEGY(TYPE='STANDARD', SHARDING_COLUMN=`id`,
SHARDING_ALGORITHM(TYPE(NAME='INLINE',PROPERTIES("algorithm-expression"="account_${Math.floorMod(Math.floorDiv(id.longValue(),
2L), 2L)}"))),
KEY_GENERATE_STRATEGY(COLUMN=`id`,TYPE(NAME='snowflake'))
)
</create-account-table-rule>
diff --git
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/distsql/TableRuleAssert.java
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/distsql/TableRuleAssert.java
index 222899db97a..f31cc72d897 100644
---
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/distsql/TableRuleAssert.java
+++
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/distsql/TableRuleAssert.java
@@ -55,13 +55,13 @@ public final class TableRuleAssert {
assertThat(assertContext.getText(String.format("`%s`'s table rule
segment assertion error: ", actual.getClass().getSimpleName())),
actual.getTableStrategySegment().getType(),
is(expected.getTableStrategy().getType()));
assertThat(assertContext.getText(String.format("`%s`'s table rule
segment assertion error: ", actual.getClass().getSimpleName())),
-
actual.getTableStrategySegment().getShardingAlgorithmName(),
is(expected.getTableStrategy().getShardingAlgorithmName()));
+
actual.getTableStrategySegment().getAlgorithmSegment().getName(),
is(expected.getTableStrategy().getAlgorithmSegment().getName()));
assertThat(assertContext.getText(String.format("`%s`'s table rule
segment assertion error: ", actual.getClass().getSimpleName())),
actual.getDatabaseStrategySegment().getShardingColumn(),
is(expected.getDataStrategy().getShardingColumn()));
assertThat(assertContext.getText(String.format("`%s`'s table rule
segment assertion error: ", actual.getClass().getSimpleName())),
actual.getDatabaseStrategySegment().getType(),
is(expected.getDataStrategy().getType()));
assertThat(assertContext.getText(String.format("`%s`'s table rule
segment assertion error: ", actual.getClass().getSimpleName())),
-
actual.getDatabaseStrategySegment().getShardingAlgorithmName(),
is(expected.getDataStrategy().getShardingAlgorithmName()));
+
actual.getDatabaseStrategySegment().getAlgorithmSegment().getName(),
is(expected.getDataStrategy().getAlgorithmSegment().getName()));
if (null != actual.getKeyGenerateStrategySegment()) {
assertThat(assertContext.getText(String.format("`%s`'s table
rule segment assertion error: ", actual.getClass().getSimpleName())),
actual.getKeyGenerateStrategySegment().getKeyGenerateColumn(),
is(expected.getKeyGenerateStrategyColumn()));
diff --git
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/distsql/rdl/ShardingKeyGeneratorAssert.java
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/distsql/rdl/ShardingKeyGeneratorAssert.java
index 379db669d5d..f47027b0ce7 100644
---
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/distsql/rdl/ShardingKeyGeneratorAssert.java
+++
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/distsql/rdl/ShardingKeyGeneratorAssert.java
@@ -43,7 +43,7 @@ public final class ShardingKeyGeneratorAssert {
*/
public static void assertIs(final SQLCaseAssertContext assertContext,
final ShardingKeyGeneratorSegment actual, final ExpectedShardingKeyGenerator
expected) {
assertNotNull(assertContext.getText("Actual sharding key generator
segment should exist."), actual.getAlgorithmSegment());
- assertThat(actual.getKeyGeneratorName(),
is(expected.getKeyGeneratorName()));
+ assertThat(actual.getAlgorithmSegment().getName(),
is(expected.getAlgorithmSegment().getName()));
AlgorithmAssert.assertIs(assertContext, actual.getAlgorithmSegment(),
expected.getAlgorithmSegment());
}
}
diff --git
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/alter/impl/AlterDefaultShardingStrategyStatementAssert.java
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/alter/impl/AlterDefaultShardingStrategyStatementAssert.java
index 5ad32d00649..541f32885f3 100644
---
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/alter/impl/AlterDefaultShardingStrategyStatementAssert.java
+++
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/alter/impl/AlterDefaultShardingStrategyStatementAssert.java
@@ -53,7 +53,7 @@ public final class
AlterDefaultShardingStrategyStatementAssert {
assertThat(assertContext.getText(String.format("`%s`'s datasource
segment assertion error: ", actual.getClass().getSimpleName())),
actual.getStrategyType(),
is(expected.getStrategy().getStrategyType()));
assertThat(assertContext.getText(String.format("`%s`'s datasource
segment assertion error: ", actual.getClass().getSimpleName())),
- actual.getShardingAlgorithmName(),
is(expected.getStrategy().getShardingAlgorithmName()));
+ actual.getAlgorithmSegment().getName(),
is(expected.getStrategy().getAlgorithmSegment().getName()));
}
}
}
diff --git
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/create/impl/CreateDefaultShardingStrategyStatementAssert.java
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/create/impl/CreateDefaultShardingStrategyStatementAssert.java
index adec5cb0838..d9e1a709631 100644
---
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/create/impl/CreateDefaultShardingStrategyStatementAssert.java
+++
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/create/impl/CreateDefaultShardingStrategyStatementAssert.java
@@ -53,7 +53,7 @@ public final class
CreateDefaultShardingStrategyStatementAssert {
assertThat(assertContext.getText(String.format("`%s`'s datasource
segment assertion error: ", actual.getClass().getSimpleName())),
actual.getStrategyType(),
is(expected.getStrategy().getStrategyType()));
assertThat(assertContext.getText(String.format("`%s`'s datasource
segment assertion error: ", actual.getClass().getSimpleName())),
- actual.getShardingAlgorithmName(),
is(expected.getStrategy().getShardingAlgorithmName()));
+ actual.getAlgorithmSegment().getName(),
is(expected.getStrategy().getAlgorithmSegment().getName()));
}
}
}
diff --git
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/SQLParserTestCases.java
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/SQLParserTestCases.java
index c26644e21c1..8606fed1d96 100644
---
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/SQLParserTestCases.java
+++
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/SQLParserTestCases.java
@@ -335,11 +335,9 @@ import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.alter.AlterReadwriteSplittingRuleStatementTestCase;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.alter.AlterResourceStatementTestCase;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.alter.AlterShadowRuleStatementTestCase;
-import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.alter.AlterShardingAlgorithmStatementTestCase;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.alter.AlterShardingAuditorStatementTestCase;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.alter.AlterShardingAutoTableRuleStatementTestCase;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.alter.AlterShardingBindingTableRulesStatementTestCase;
-import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.alter.AlterShardingKeyGeneratorStatementTestCase;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.alter.AlterShardingTableRuleStatementTestCase;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.create.AddResourceStatementTestCase;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.create.AlterDefaultShadowAlgorithmStatementTestCase;
@@ -351,11 +349,9 @@ import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.create.CreateEncryptRuleStatementTestCase;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.create.CreateReadwriteSplittingRuleStatementTestCase;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.create.CreateShadowRuleStatementTestCase;
-import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.create.CreateShardingAlgorithmStatementTestCase;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.create.CreateShardingAuditorStatementTestCase;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.create.CreateShardingAutoTableRuleStatementTestCase;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.create.CreateShardingBindingTableRulesStatementTestCase;
-import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.create.CreateShardingKeyGeneratorStatementTestCase;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.create.CreateShardingTableRuleStatementTestCase;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.drop.DropBroadcastTableRuleStatementTestCase;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.drop.DropDataBaseDiscoveryHeartbeatStatementTestCase;
@@ -1144,12 +1140,6 @@ public final class SQLParserTestCases {
@XmlElement(name = "repair-table")
private final List<RepairTableStatementTestCase> repairTableTestCases =
new LinkedList<>();
- @XmlElement(name = "create-sharding-algorithm")
- private final List<CreateShardingAlgorithmStatementTestCase>
createShardingAlgorithmTestCases = new LinkedList<>();
-
- @XmlElement(name = "create-sharding-key-generator")
- private final List<CreateShardingKeyGeneratorStatementTestCase>
createShardingKeyGeneratorTestCases = new LinkedList<>();
-
@XmlElement(name = "create-sharding-auditor")
private final List<CreateShardingAuditorStatementTestCase>
createShardingAuditorTestCases = new LinkedList<>();
@@ -1174,12 +1164,6 @@ public final class SQLParserTestCases {
@XmlElement(name = "show-slave-status")
private final List<ShowSlaveStatusStatementTestCase>
showSlaveStatusTestCases = new LinkedList<>();
- @XmlElement(name = "alter-sharding-algorithm")
- private final List<AlterShardingAlgorithmStatementTestCase>
alterShardingAlgorithmTestCases = new LinkedList<>();
-
- @XmlElement(name = "alter-sharding-key-generator")
- private final List<AlterShardingKeyGeneratorStatementTestCase>
alterShardingKeyGeneratorTestCases = new LinkedList<>();
-
@XmlElement(name = "alter-sharding-auditor")
private final List<AlterShardingAuditorStatementTestCase>
alterShardingAuditorTestCases = new LinkedList<>();
diff --git
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/distsql/rdl/ExpectedDefaultShardingStrategy.java
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/distsql/rdl/ExpectedDefaultShardingStrategy.java
index 38f8f482fec..7a14ee27c03 100644
---
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/distsql/rdl/ExpectedDefaultShardingStrategy.java
+++
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/distsql/rdl/ExpectedDefaultShardingStrategy.java
@@ -20,8 +20,10 @@ package
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domai
import lombok.Getter;
import lombok.Setter;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.AbstractExpectedIdentifierSQLSegment;
+import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.distsql.ExpectedAlgorithm;
import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
/**
* Expected default sharding strategy.
@@ -39,6 +41,6 @@ public final class ExpectedDefaultShardingStrategy extends
AbstractExpectedIdent
@XmlAttribute(name = "sharding-column")
private String shardingColumn;
- @XmlAttribute(name = "sharding-algorithm-name")
- private String shardingAlgorithmName;
+ @XmlElement(name = "algorithm-segment")
+ private ExpectedAlgorithm algorithmSegment;
}
diff --git
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/distsql/rdl/ExpectedShardingKeyGenerator.java
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/distsql/rdl/ExpectedShardingKeyGenerator.java
index 6163172b7ea..713b24adc06 100644
---
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/distsql/rdl/ExpectedShardingKeyGenerator.java
+++
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/distsql/rdl/ExpectedShardingKeyGenerator.java
@@ -22,7 +22,6 @@ import lombok.Setter;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.AbstractExpectedIdentifierSQLSegment;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.distsql.ExpectedAlgorithm;
-import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
/**
@@ -32,9 +31,6 @@ import javax.xml.bind.annotation.XmlElement;
@Setter
public final class ExpectedShardingKeyGenerator extends
AbstractExpectedIdentifierSQLSegment {
- @XmlAttribute(name = "key-generator-name")
- private String keyGeneratorName;
-
@XmlElement(name = "algorithm")
private ExpectedAlgorithm algorithmSegment;
}
diff --git
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/distsql/rdl/ExpectedShardingStrategy.java
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/distsql/rdl/ExpectedShardingStrategy.java
index 8f33851f3e1..33d5da7a2f5 100644
---
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/distsql/rdl/ExpectedShardingStrategy.java
+++
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/distsql/rdl/ExpectedShardingStrategy.java
@@ -35,9 +35,6 @@ public final class ExpectedShardingStrategy extends
AbstractExpectedIdentifierSQ
@XmlAttribute(name = "sharding-column")
private String shardingColumn;
- @XmlAttribute(name = "sharding-algorithm-name")
- private String shardingAlgorithmName;
-
@XmlElement(name = "algorithm-segment")
private ExpectedAlgorithm algorithmSegment;
}
diff --git a/test/parser/src/main/resources/case/rdl/alter.xml
b/test/parser/src/main/resources/case/rdl/alter.xml
index 94a2357fa37..d443f84e832 100644
--- a/test/parser/src/main/resources/case/rdl/alter.xml
+++ b/test/parser/src/main/resources/case/rdl/alter.xml
@@ -91,8 +91,12 @@
<alter-sharding-table-rule sql-case-id="alter-sharding-table-rule">
<rule name="t_order" key-generate-strategy-column="another_id">
<data-source>ms_group_${0..1}</data-source>
- <table-strategy type="standard" sharding-column="user_id"
sharding-algorithm-name="table_inline" />
- <database-strategy type="standard" sharding-column="order_id"
sharding-algorithm-name="database_inline" />
+ <table-strategy type="standard" sharding-column="user_id">
+ <algorithm-segment algorithm-name="table_inline" />
+ </table-strategy>
+ <database-strategy type="standard" sharding-column="order_id">
+ <algorithm-segment algorithm-name="database_inline" />
+ </database-strategy>
<key-generate-strategy algorithm-name="snowflake" />
</rule>
</alter-sharding-table-rule>
@@ -100,8 +104,12 @@
<alter-sharding-table-rule sql-case-id="alter-sharding-table-rule-complex">
<rule name="t_order" key-generate-strategy-column="another_id">
<data-source>ms_group_${0..1}</data-source>
- <table-strategy type="standard" sharding-column="user_id"
sharding-algorithm-name="table_inline" />
- <database-strategy type="complex"
sharding-column="order_id,user_id" sharding-algorithm-name="database_inline" />
+ <table-strategy type="standard" sharding-column="user_id">
+ <algorithm-segment algorithm-name="table_inline" />
+ </table-strategy>
+ <database-strategy type="complex"
sharding-column="order_id,user_id">
+ <algorithm-segment algorithm-name="database_inline" />
+ </database-strategy>
<key-generate-strategy algorithm-name="snowflake" />
</rule>
</alter-sharding-table-rule>
@@ -231,16 +239,6 @@
</shadow-algorithm>
</alter-default-shadow-algorithm>
- <alter-sharding-algorithm sql-case-id="alter-sharding-algorithm">
- <shardingAlgorithm sharding-algorithm-name="algorithm_name">
- <algorithm algorithm-name="inline">
- <properties>
- <property key="algorithm-expression"
value="t_order_${order_id % 2}" />
- </properties>
- </algorithm>
- </shardingAlgorithm>
- </alter-sharding-algorithm>
-
<alter-sharding-key-generator sql-case-id="alter-sharding-key-generator">
<sharding-key-generator key-generator-name="uuid_key_generator">
<algorithm algorithm-name="uuid" />
@@ -256,12 +254,14 @@
<alter-default-single-table sql-case-id="alter-default-single-table"
default-data-source="ds_0" />
<alter-default-sharding-strategy
sql-case-id="alter-default-sharding-strategy">
- <strategy default-type="TABLE" strategy-type="standard"
sharding-column="order_id" sharding-algorithm-name="algorithms_name">
+ <strategy default-type="TABLE" strategy-type="standard"
sharding-column="order_id">
+ <algorithm-segment algorithm-name="algorithms_name" />
</strategy>
</alter-default-sharding-strategy>
<alter-default-sharding-strategy
sql-case-id="alter-default-sharding-strategy-complex">
- <strategy default-type="TABLE" strategy-type="complex"
sharding-column="order_id,user_id" sharding-algorithm-name="algorithms_name">
+ <strategy default-type="TABLE" strategy-type="complex"
sharding-column="order_id,user_id">
+ <algorithm-segment algorithm-name="algorithms_name" />
</strategy>
</alter-default-sharding-strategy>
</sql-parser-test-cases>
diff --git a/test/parser/src/main/resources/case/rdl/create.xml
b/test/parser/src/main/resources/case/rdl/create.xml
index d91e6b942c3..8c1d7910903 100644
--- a/test/parser/src/main/resources/case/rdl/create.xml
+++ b/test/parser/src/main/resources/case/rdl/create.xml
@@ -112,50 +112,76 @@
<create-sharding-table-rule sql-case-id="create-sharding-table-rule">
<rule name="t_order" key-generate-strategy-column="another_id">
<data-source>ms_group_${0..1}</data-source>
- <table-strategy type="standard" sharding-column="user_id"
sharding-algorithm-name="table_inline" />
- <database-strategy type="standard" sharding-column="order_id"
sharding-algorithm-name="database_inline" />
+ <table-strategy type="standard" sharding-column="user_id">
+ <algorithm-segment algorithm-name="table_inline" />
+ </table-strategy>
+ <database-strategy type="standard" sharding-column="order_id">
+ <algorithm-segment algorithm-name="database_inline" />
+ </database-strategy>
<key-generate-strategy algorithm-name="snowflake" />
</rule>
<rule name="t_order_item" key-generate-strategy-column="another_id">
<data-source>ms_group_${0..1}</data-source>
- <table-strategy type="standard" sharding-column="user_id"
sharding-algorithm-name="table_inline" />
- <database-strategy type="standard" sharding-column="order_id"
sharding-algorithm-name="database_inline" />
+ <table-strategy type="standard" sharding-column="user_id">
+ <algorithm-segment algorithm-name="table_inline" />
+ </table-strategy>
+ <database-strategy type="standard" sharding-column="order_id">
+ <algorithm-segment algorithm-name="database_inline" />
+ </database-strategy>
</rule>
</create-sharding-table-rule>
<create-sharding-table-rule
sql-case-id="create-sharding-table-rule-with-enum-inline-expression">
<rule name="t_order" key-generate-strategy-column="another_id">
<data-source>ms_group_${['abc','ac']}.table</data-source>
- <table-strategy type="standard" sharding-column="user_id"
sharding-algorithm-name="table_inline" />
- <database-strategy type="standard" sharding-column="order_id"
sharding-algorithm-name="database_inline" />
+ <table-strategy type="standard" sharding-column="user_id">
+ <algorithm-segment algorithm-name="table_inline" />
+ </table-strategy>
+ <database-strategy type="standard" sharding-column="order_id">
+ <algorithm-segment algorithm-name="database_inline" />
+ </database-strategy>
<key-generate-strategy algorithm-name="snowflake" />
</rule>
<rule name="t_order_item" key-generate-strategy-column="another_id">
<data-source>ms_group_${0..1}</data-source>
- <table-strategy type="standard" sharding-column="user_id"
sharding-algorithm-name="table_inline" />
- <database-strategy type="standard" sharding-column="order_id"
sharding-algorithm-name="database_inline" />
+ <table-strategy type="standard" sharding-column="user_id">
+ <algorithm-segment algorithm-name="table_inline" />
+ </table-strategy>
+ <database-strategy type="standard" sharding-column="order_id">
+ <algorithm-segment algorithm-name="database_inline" />
+ </database-strategy>
</rule>
</create-sharding-table-rule>
<create-sharding-table-rule
sql-case-id="create-sharding-table-rule-complex">
<rule name="t_order" key-generate-strategy-column="another_id">
<data-source>ms_group_${0..1}</data-source>
- <table-strategy type="standard" sharding-column="user_id"
sharding-algorithm-name="table_inline" />
- <database-strategy type="complex"
sharding-column="order_id,user_id" sharding-algorithm-name="database_inline" />
+ <table-strategy type="standard" sharding-column="user_id">
+ <algorithm-segment algorithm-name="table_inline" />
+ </table-strategy>
+ <database-strategy type="complex"
sharding-column="order_id,user_id">
+ <algorithm-segment algorithm-name="database_inline" />
+ </database-strategy>
<key-generate-strategy algorithm-name="snowflake" />
</rule>
<rule name="t_order_item" key-generate-strategy-column="another_id">
<data-source>ms_group_${0..1}</data-source>
- <table-strategy type="standard" sharding-column="user_id"
sharding-algorithm-name="table_inline" />
- <database-strategy type="standard" sharding-column="order_id"
sharding-algorithm-name="database_inline" />
+ <table-strategy type="standard" sharding-column="user_id">
+ <algorithm-segment algorithm-name="table_inline" />
+ </table-strategy>
+ <database-strategy type="standard" sharding-column="order_id">
+ <algorithm-segment algorithm-name="database_inline" />
+ </database-strategy>
</rule>
</create-sharding-table-rule>
<create-sharding-table-rule
sql-case-id="create-sharding-table-rule-with-auto-create-algorithm">
<rule name="t_order" key-generate-strategy-column="another_id">
<data-source>ms_group_${0..1}</data-source>
- <table-strategy type="standard" sharding-column="user_id"
sharding-algorithm-name="table_inline" />
- <database-strategy type="standard" sharding-column="order_id">
+ <table-strategy type="standard" sharding-column="user_id">
+ <algorithm-segment algorithm-name="table_inline" />
+ </table-strategy>
+ <database-strategy type="standard" sharding-column="order_id" >
<algorithm-segment algorithm-name="inline">
<properties>
<property key="algorithm-expression"
value="ms_group_${order_id% 2}" />
@@ -379,17 +405,20 @@
</create-sharding-algorithm>
<create-default-sharding-strategy
sql-case-id="create-default-sharding-table-strategy-with-lower-case">
- <strategy default-type="table" strategy-type="standard"
sharding-column="order_id" sharding-algorithm-name="algorithms_name">
+ <strategy default-type="table" strategy-type="standard"
sharding-column="order_id">
+ <algorithm-segment algorithm-name="algorithms_name" />
</strategy>
</create-default-sharding-strategy>
<create-default-sharding-strategy
sql-case-id="create-default-sharding-database-strategy">
- <strategy default-type="DATABASE" strategy-type="STANDARD"
sharding-column="ORDER_ID" sharding-algorithm-name="algorithms_name">
+ <strategy default-type="DATABASE" strategy-type="STANDARD"
sharding-column="ORDER_ID">
+ <algorithm-segment algorithm-name="algorithms_name" />
</strategy>
</create-default-sharding-strategy>
<create-default-sharding-strategy
sql-case-id="create-default-sharding-strategy-complex">
- <strategy default-type="TABLE" strategy-type="complex"
sharding-column="order_id,user_id" sharding-algorithm-name="algorithms_name">
+ <strategy default-type="TABLE" strategy-type="complex"
sharding-column="order_id,user_id">
+ <algorithm-segment algorithm-name="algorithms_name" />
</strategy>
</create-default-sharding-strategy>
@@ -406,12 +435,6 @@
<create-default-single-table sql-case-id="create-default-single-table"
default-data-source="ds_0"/>
- <create-sharding-key-generator sql-case-id="create-sharding-key-generator">
- <sharding-key-generator key-generator-name="uuid_key_generator">
- <algorithm algorithm-name="uuid" />
- </sharding-key-generator>
- </create-sharding-key-generator>
-
<create-sharding-auditor sql-case-id="create-sharding-auditor">
<sharding-auditor auditor-name="sharding_key_required_auditor">
<algorithm algorithm-name="DML_SHARDING_CONDITIONS" />
diff --git a/test/parser/src/main/resources/sql/supported/rdl/alter.xml
b/test/parser/src/main/resources/sql/supported/rdl/alter.xml
index da268703d62..a9bf300200f 100644
--- a/test/parser/src/main/resources/sql/supported/rdl/alter.xml
+++ b/test/parser/src/main/resources/sql/supported/rdl/alter.xml
@@ -36,12 +36,10 @@
<distsql-case id="alter-encrypt-rule-with-query-with-cipher-column"
value="ALTER ENCRYPT RULE t_encrypt (RESOURCE=ds_1,
COLUMNS((NAME=user_id,PLAIN=user_plain,CIPHER=user_cipher,
TYPE(NAME='AES',PROPERTIES('aes-key-value'='123456abc'))), (NAME=order_id,
CIPHER =order_cipher,TYPE(NAME='MD5'))), QUERY_WITH_CIPHER_COLUMN=false)" />
<distsql-case id="alter-default-shadow-algorithm" value="ALTER DEFAULT
SHADOW ALGORITHM TYPE(NAME='SIMPLE_HINT', PROPERTIES('shadow'='true',
'foo'='bar'))" />
<distsql-case id="alter-shadow-rule" value="ALTER SHADOW RULE
shadow_rule(SOURCE=demo_ds,SHADOW=demo_ds_shadow,t_order(TYPE(NAME='REGEX_MATCH',PROPERTIES('operation'='insert','column'='user_id','regex'='[1]')),TYPE(NAME='SIMPLE_HINT',PROPERTIES('shadow'='true','foo'='bar'))))"
/>
- <distsql-case id="alter-sharding-table-rule" value="ALTER SHARDING TABLE
RULE t_order
(DATANODES('ms_group_${0..1}'),DATABASE_STRATEGY(TYPE='standard',sharding_column
= order_id,sharding_algorithm =
database_inline),TABLE_STRATEGY(TYPE='standard',sharding_column =
user_id,sharding_algorithm =
table_inline),KEY_GENERATE_STRATEGY(COLUMN=another_id,TYPE(NAME='snowflake')))"
/>
- <distsql-case id="alter-sharding-table-rule-complex" value="ALTER SHARDING
TABLE RULE t_order
(DATANODES('ms_group_${0..1}'),DATABASE_STRATEGY(TYPE='complex',sharding_columns
= order_id,user_id, sharding_algorithm =
database_inline),TABLE_STRATEGY(TYPE='standard',sharding_column =
user_id,sharding_algorithm =
table_inline),KEY_GENERATE_STRATEGY(COLUMN=another_id,TYPE(NAME='snowflake')))"
/>
- <distsql-case id="alter-sharding-algorithm" value="ALTER SHARDING
ALGORITHM algorithm_name(TYPE(NAME='inline',PROPERTIES('algorithm-expression' =
't_order_${order_id % 2}')))" />
+ <distsql-case id="alter-sharding-table-rule" value="ALTER SHARDING TABLE
RULE t_order
(DATANODES('ms_group_${0..1}'),DATABASE_STRATEGY(TYPE='standard',sharding_column
=
order_id,sharding_algorithm(type(name='database_inline'))),TABLE_STRATEGY(TYPE='standard',sharding_column
=
user_id,sharding_algorithm(type(name='table_inline'))),KEY_GENERATE_STRATEGY(COLUMN=another_id,TYPE(NAME='snowflake')))"
/>
+ <distsql-case id="alter-sharding-table-rule-complex" value="ALTER SHARDING
TABLE RULE t_order
(DATANODES('ms_group_${0..1}'),DATABASE_STRATEGY(TYPE='complex',sharding_columns
= order_id,user_id,
sharding_algorithm(type(name='database_inline'))),TABLE_STRATEGY(TYPE='standard',sharding_column
=
user_id,sharding_algorithm(type(name='table_inline'))),KEY_GENERATE_STRATEGY(COLUMN=another_id,TYPE(NAME='snowflake')))"
/>
<distsql-case id="alter-default-single-table" value="SET DEFAULT SINGLE
TABLE STORAGE UNIT = ds_0" />
- <distsql-case id="alter-sharding-key-generator" value="ALTER SHARDING KEY
GENERATOR uuid_key_generator(TYPE(NAME='uuid'))" />
<distsql-case id="alter-sharding-auditor" value="ALTER SHARDING AUDITOR
sharding_key_required_auditor(TYPE(NAME='DML_SHARDING_CONDITIONS'))" />
- <distsql-case id="alter-default-sharding-strategy" value="ALTER DEFAULT
SHARDING TABLE STRATEGY(TYPE='standard', SHARDING_COLUMN=order_id,
SHARDING_ALGORITHM=algorithms_name)" />
- <distsql-case id="alter-default-sharding-strategy-complex" value="ALTER
DEFAULT SHARDING TABLE STRATEGY(TYPE='complex',
SHARDING_COLUMNS=order_id,user_id, SHARDING_ALGORITHM=algorithms_name)" />
+ <distsql-case id="alter-default-sharding-strategy" value="ALTER DEFAULT
SHARDING TABLE STRATEGY(TYPE='standard', SHARDING_COLUMN=order_id,
SHARDING_ALGORITHM(TYPE(NAME='algorithms_name')))" />
+ <distsql-case id="alter-default-sharding-strategy-complex" value="ALTER
DEFAULT SHARDING TABLE STRATEGY(TYPE='complex',
SHARDING_COLUMNS=order_id,user_id,
SHARDING_ALGORITHM(TYPE(NAME='algorithms_name')))" />
</sql-cases>
diff --git a/test/parser/src/main/resources/sql/supported/rdl/create.xml
b/test/parser/src/main/resources/sql/supported/rdl/create.xml
index 523200a0f53..3a3ee3f9811 100644
--- a/test/parser/src/main/resources/sql/supported/rdl/create.xml
+++ b/test/parser/src/main/resources/sql/supported/rdl/create.xml
@@ -36,14 +36,13 @@
<distsql-case id="create-encrypt-rule" value="CREATE ENCRYPT RULE
t_encrypt (RESOURCE=ds_1,
COLUMNS((NAME=user_id,PLAIN=user_plain,CIPHER=user_cipher,TYPE(NAME='AES',PROPERTIES('aes-key-value'='123456abc'))),
(NAME=order_id, CIPHER =order_cipher,TYPE(NAME='MD5'))))" />
<distsql-case id="create-encrypt-rule-with-assisted-query-column"
value="CREATE ENCRYPT RULE t_encrypt (RESOURCE=ds_1,
COLUMNS((NAME=user_id,PLAIN=user_plain,CIPHER=user_cipher,ASSISTED_QUERY_COLUMN=assisted_column,
TYPE(NAME='AES',PROPERTIES('aes-key-value'='123456abc')), TYPE(NAME='MD5')),
(NAME=order_id, CIPHER =order_cipher,TYPE(NAME='MD5'))))" />
<distsql-case id="create-shadow-rule" value="CREATE SHADOW RULE
shadow_rule(SOURCE=demo_ds,SHADOW=demo_ds_shadow,t_order(TYPE(NAME='REGEX_MATCH',PROPERTIES('operation'='insert','column'='user_id','regex'='[1]')),TYPE(NAME='SIMPLE_HINT',PROPERTIES('shadow'='true','foo'='bar'))))"
/>
- <distsql-case id="create-sharding-algorithm" value="CREATE SHARDING
ALGORITHM algorithm_name(TYPE(NAME='hash_mod',PROPERTIES('algorithm-expression'
= 't_order_${order_id % 2}')))" />
- <distsql-case id="create-default-sharding-table-strategy-with-lower-case"
value="create default sharding table strategy(type='standard',
sharding_column=order_id, sharding_algorithm=algorithms_name)" />
- <distsql-case id="create-default-sharding-database-strategy" value="CREATE
DEFAULT SHARDING DATABASE STRATEGY(TYPE='STANDARD', SHARDING_COLUMN=ORDER_ID,
SHARDING_ALGORITHM=algorithms_name)" />
- <distsql-case id="create-default-sharding-strategy-complex" value="CREATE
DEFAULT SHARDING TABLE STRATEGY(TYPE='complex',
SHARDING_COLUMNS=order_id,user_id, SHARDING_ALGORITHM=algorithms_name)" />
- <distsql-case id="create-sharding-table-rule" value="CREATE SHARDING TABLE
RULE t_order
(DATANODES('ms_group_${0..1}'),DATABASE_STRATEGY(TYPE='standard',sharding_column
= order_id,sharding_algorithm =
database_inline),TABLE_STRATEGY(TYPE='standard',sharding_column =
user_id,sharding_algorithm =
table_inline),KEY_GENERATE_STRATEGY(COLUMN=another_id,TYPE(NAME='snowflake'))),t_order_item
(DATANODES('ms_group_${0..1}'),DATABASE_STRATEGY(TYPE='standard',sharding_column
= order_id,sharding [...]
- <distsql-case id="create-sharding-table-rule-with-enum-inline-expression"
value="CREATE SHARDING TABLE RULE t_order
(DATANODES("ms_group_${['abc','ac']}.table "
),DATABASE_STRATEGY(TYPE='standard',sharding_column =
order_id,sharding_algorithm =
database_inline),TABLE_STRATEGY(TYPE='standard',sharding_column =
user_id,sharding_algorithm =
table_inline),KEY_GENERATE_STRATEGY(COLUMN=another_id,TYPE(NAME='snowflake'))),t_order_item
(DATANODES('ms_group_${0..1}'),DATABASE_STRATE [...]
- <distsql-case id="create-sharding-table-rule-complex" value="CREATE
SHARDING TABLE RULE t_order
(DATANODES('ms_group_${0..1}'),DATABASE_STRATEGY(TYPE='complex',sharding_columns
= order_id,user_id,sharding_algorithm =
database_inline),TABLE_STRATEGY(TYPE='standard',sharding_column =
user_id,sharding_algorithm =
table_inline),KEY_GENERATE_STRATEGY(COLUMN=another_id,TYPE(NAME='snowflake'))),t_order_item
(DATANODES('ms_group_${0..1}'),DATABASE_STRATEGY(TYPE='standard',sharding_column
= o [...]
- <distsql-case id="create-sharding-table-rule-with-auto-create-algorithm"
value="CREATE SHARDING TABLE RULE t_order
(DATANODES('ms_group_${0..1}'),DATABASE_STRATEGY(TYPE='standard',sharding_column
= order_id,sharding_algorithm
(TYPE(NAME='inline',PROPERTIES('algorithm-expression'='ms_group_${order_id%
2}')))),TABLE_STRATEGY(TYPE='standard',sharding_column =
user_id,sharding_algorithm =
table_inline),KEY_GENERATE_STRATEGY(COLUMN=another_id,TYPE(NAME='snowflake')))"
/>
+ <distsql-case id="create-default-sharding-table-strategy-with-lower-case"
value="create default sharding table strategy(type='standard',
sharding_column=order_id, SHARDING_ALGORITHM(TYPE(NAME='algorithms_name')))" />
+ <distsql-case id="create-default-sharding-database-strategy" value="CREATE
DEFAULT SHARDING DATABASE STRATEGY(TYPE='STANDARD', SHARDING_COLUMN=ORDER_ID,
SHARDING_ALGORITHM(TYPE(NAME='algorithms_name')))" />
+ <distsql-case id="create-default-sharding-strategy-complex" value="CREATE
DEFAULT SHARDING TABLE STRATEGY(TYPE='complex',
SHARDING_COLUMNS=order_id,user_id,
SHARDING_ALGORITHM(TYPE(NAME='algorithms_name')))" />
+ <distsql-case id="create-sharding-table-rule" value="CREATE SHARDING TABLE
RULE t_order
(DATANODES('ms_group_${0..1}'),DATABASE_STRATEGY(TYPE='standard',sharding_column
=
order_id,sharding_algorithm(type(name='database_inline'))),TABLE_STRATEGY(TYPE='standard',sharding_column
=
user_id,sharding_algorithm(type(name='table_inline'))),KEY_GENERATE_STRATEGY(COLUMN=another_id,TYPE(NAME='snowflake'))),t_order_item
(DATANODES('ms_group_${0..1}'),DATABASE_STRATEGY(TYPE='standard',sharding_co
[...]
+ <distsql-case id="create-sharding-table-rule-with-enum-inline-expression"
value="CREATE SHARDING TABLE RULE t_order
(DATANODES("ms_group_${['abc','ac']}.table "
),DATABASE_STRATEGY(TYPE='standard',sharding_column =
order_id,sharding_algorithm(type(name='database_inline'))),TABLE_STRATEGY(TYPE='standard',sharding_column
=
user_id,sharding_algorithm(type(name='table_inline'))),KEY_GENERATE_STRATEGY(COLUMN=another_id,TYPE(NAME='snowflake'))),t_order_item
(DATANODES('ms_group_$ [...]
+ <distsql-case id="create-sharding-table-rule-complex" value="CREATE
SHARDING TABLE RULE t_order
(DATANODES('ms_group_${0..1}'),DATABASE_STRATEGY(TYPE='complex',sharding_columns
=
order_id,user_id,sharding_algorithm(type(name='database_inline'))),TABLE_STRATEGY(TYPE='standard',sharding_column
=
user_id,sharding_algorithm(type(name='table_inline'))),KEY_GENERATE_STRATEGY(COLUMN=another_id,TYPE(NAME='snowflake'))),t_order_item
(DATANODES('ms_group_${0..1}'),DATABASE_STRATEGY(TYPE='stand [...]
+ <distsql-case id="create-sharding-table-rule-with-auto-create-algorithm"
value="CREATE SHARDING TABLE RULE t_order
(DATANODES('ms_group_${0..1}'),DATABASE_STRATEGY(TYPE='standard',sharding_column
= order_id,sharding_algorithm
(TYPE(NAME='inline',PROPERTIES('algorithm-expression'='ms_group_${order_id%
2}')))),TABLE_STRATEGY(TYPE='standard',sharding_column =
user_id,sharding_algorithm(type(name='table_inline'))),KEY_GENERATE_STRATEGY(COLUMN=another_id,TYPE(NAME='snowflake')))"
/>
<distsql-case id="create-default-shadow-algorithm" value="CREATE DEFAULT
SHADOW ALGORITHM TYPE(NAME='HINT', PROPERTIES('shadow'='true', 'foo'='bar'))" />
<distsql-case id="create-default-single-table" value="SET DEFAULT SINGLE
TABLE STORAGE UNIT = ds_0" />
@@ -56,7 +55,6 @@
<distsql-case id="create-encrypt-rule-with-quota" value="CREATE ENCRYPT
RULE `encrypt` (RESOURCE=ds_1,
COLUMNS((NAME=user_id,PLAIN=user_plain,CIPHER=user_cipher,TYPE(NAME='AES',PROPERTIES('aes-key-value'='123456abc'))),
(NAME=order_id, CIPHER =order_cipher,TYPE(NAME='MD5'))))" />
<distsql-case id="create-encrypt-rule-with-query-with-cipher-column"
value="CREATE ENCRYPT RULE `encrypt` (RESOURCE=ds_1,
COLUMNS((NAME=user_id,PLAIN=user_plain,CIPHER=user_cipher,TYPE(NAME='AES',PROPERTIES('aes-key-value'='123456abc')))),QUERY_WITH_CIPHER_COLUMN=false)"
/>
<distsql-case id="create-shadow-rule-with-quota" value="CREATE SHADOW RULE
`shadow_rule`(SOURCE=demo_ds,SHADOW=demo_ds_shadow,t_order(TYPE(NAME='REGEX_MATCH',PROPERTIES('operation'='insert','column'='user_id','regex'='[1]')),TYPE(NAME='SIMPLE_HINT',PROPERTIES('shadow'='true','foo'='bar'))))"
/>
- <distsql-case id="create-sharding-key-generator" value="CREATE SHARDING
KEY GENERATOR uuid_key_generator(TYPE(NAME='uuid'))" />
<distsql-case id="create-sharding-auditor" value="CREATE SHARDING AUDITOR
sharding_key_required_auditor(TYPE(NAME='DML_SHARDING_CONDITIONS'))" />
<distsql-case id="single-register-migration-source-storage-unit"
value="REGISTER MIGRATION SOURCE STORAGE UNIT ds_0
(URL='jdbc:mysql://127.0.0.1:3306/test0',USER='ROOT',PASSWORD='123456');" />
</sql-cases>