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(&quot;ms_group_${['abc','ac']}.table &quot; 
),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(&quot;ms_group_${['abc','ac']}.table &quot; 
),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>

Reply via email to