This is an automated email from the ASF dual-hosted git repository.

wuweijie 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 1cd5f54  Rename functionDefinition to algorithmDefinition (#10825)
1cd5f54 is described below

commit 1cd5f54acdc67a771be57d10f0ecea4fb12e2018
Author: Liang Zhang <terrym...@163.com>
AuthorDate: Wed Jun 16 00:14:57 2021 +0800

    Rename functionDefinition to algorithmDefinition (#10825)
    
    * Rename AlgorithmSegment
    
    * Rename functionDefinition for db-discovery
    
    * Use rule name with drop db-discovery rule
    
    * Use resource name with drop db-discovery rule
    
    * Rename functionDefinition for encrypt
    
    * Rename functionDefinition for readwrite splitting
    
    * Rename functionDefinition for sharding
---
 ...{FunctionSegment.java => AlgorithmSegment.java} |  8 +--
 .../antlr4/imports/db-discovery/RDLStatement.g4    | 42 ++++++++-------
 .../DatabaseDiscoveryRuleSQLStatementVisitor.java  | 62 +++++++++-------------
 .../converter/EncryptRuleStatementConverter.java   |  4 +-
 .../EncryptRuleStatementConverterTest.java         |  4 +-
 .../main/antlr4/imports/encrypt/RDLStatement.g4    | 54 +++++++++----------
 .../main/antlr4/imports/encrypt/RQLStatement.g4    |  4 +-
 .../core/EncryptRuleSQLStatementVisitor.java       | 52 +++++++++---------
 .../statement/segment/EncryptColumnSegment.java    |  4 +-
 .../core/EncryptRuleStatementParserEngineTest.java | 12 ++---
 .../imports/readwrite-splitting/RDLStatement.g4    | 24 ++++-----
 .../ReadwriteSplittingRuleSQLStatementVisitor.java | 49 +++++++++--------
 .../converter/ShardingRuleStatementConverter.java  | 16 +++---
 .../ShardingRuleStatementConverterTest.java        |  4 +-
 .../main/antlr4/imports/sharding/RDLStatement.g4   | 18 +++----
 .../core/ShardingRuleSQLStatementVisitor.java      | 33 ++++++------
 .../parser/statement/segment/TableRuleSegment.java |  6 +--
 .../ShardingRuleStatementParserEngineTest.java     | 16 +++---
 .../rdl/impl/AlterEncryptRuleBackendHandler.java   |  2 +-
 .../impl/AlterShardingTableRuleBackendHandler.java |  4 +-
 .../rdl/impl/CreateEncryptRuleBackendHandler.java  |  2 +-
 .../CreateShardingTableRuleBackendHandler.java     |  4 +-
 .../impl/AlterEncryptRuleBackendHandlerTest.java   |  4 +-
 .../AlterShardingTableRuleBackendHandlerTest.java  |  6 +--
 .../impl/CreateEncryptRuleBackendHandlerTest.java  |  4 +-
 .../CreateShardingTableRuleBackendHandlerTest.java |  6 +--
 26 files changed, 216 insertions(+), 228 deletions(-)

diff --git 
a/shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/segment/FunctionSegment.java
 
b/shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/segment/AlgorithmSegment.java
similarity index 86%
rename from 
shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/segment/FunctionSegment.java
rename to 
shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/segment/AlgorithmSegment.java
index 958ba48..83642d1 100644
--- 
a/shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/segment/FunctionSegment.java
+++ 
b/shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/segment/AlgorithmSegment.java
@@ -24,13 +24,13 @@ import 
org.apache.shardingsphere.sql.parser.api.visitor.ASTNode;
 import java.util.Properties;
 
 /**
- * Function segment.
+ * Algorithm segment.
  */
 @RequiredArgsConstructor
 @Getter
-public final class FunctionSegment implements ASTNode {
+public final class AlgorithmSegment implements ASTNode {
     
-    private final String algorithmName;
+    private final String name;
     
-    private final Properties algorithmProps;
+    private final Properties props;
 }
diff --git 
a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/src/main/antlr4/imports/db-discovery/RDLStatement.g4
 
b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/src/main/antlr4/imports/db-discovery/RDLStatement.g4
index 93139ee..1266c37 100644
--- 
a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/src/main/antlr4/imports/db-discovery/RDLStatement.g4
+++ 
b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/src/main/antlr4/imports/db-discovery/RDLStatement.g4
@@ -19,42 +19,46 @@ grammar RDLStatement;
 
 import Keyword, Literals, Symbol;
 
-resources
-    : RESOURCES LP IDENTIFIER (COMMA IDENTIFIER)* RP
+createDatabaseDiscoveryRule
+    : CREATE DB_DISCOVERY RULE databaseDiscoveryRuleDefinition  (COMMA 
databaseDiscoveryRuleDefinition)*
     ;
 
-ruleName
-    : IDENTIFIER
+alterDatabaseDiscoveryRule
+    : ALTER DB_DISCOVERY RULE databaseDiscoveryRuleDefinition  (COMMA 
databaseDiscoveryRuleDefinition)*
     ;
 
-functionDefinition
-    : TYPE LP NAME EQ functionName (COMMA PROPERTIES LP algorithmProperties? 
RP)? RP
+dropDatabaseDiscoveryRule
+    : DROP DB_DISCOVERY RULE ruleName (COMMA ruleName)*
     ;
 
-functionName
+databaseDiscoveryRuleDefinition
+    : ruleName LP resources COMMA algorithmDefinition RP
+    ;
+
+ruleName
     : IDENTIFIER
     ;
 
-algorithmProperties
-    : algorithmProperty (COMMA algorithmProperty)*
+resources
+    : RESOURCES LP resourceName (COMMA resourceName)* RP
     ;
 
-algorithmProperty
-    : key=(IDENTIFIER | STRING) EQ value=(NUMBER | INT | STRING)
+resourceName
+    : IDENTIFIER
     ;
 
-createDatabaseDiscoveryRule
-    : CREATE DB_DISCOVERY RULE databaseDiscoveryRuleDefinition  (COMMA 
databaseDiscoveryRuleDefinition)*
+algorithmDefinition
+    : TYPE LP NAME EQ algorithmName (COMMA PROPERTIES LP algorithmProperties? 
RP)? RP
     ;
 
-databaseDiscoveryRuleDefinition
-    : ruleName LP resources COMMA functionDefinition RP
+algorithmName
+    : IDENTIFIER
     ;
 
-alterDatabaseDiscoveryRule
-    : ALTER DB_DISCOVERY RULE databaseDiscoveryRuleDefinition  (COMMA 
databaseDiscoveryRuleDefinition)*
+algorithmProperties
+    : algorithmProperty (COMMA algorithmProperty)*
     ;
 
-dropDatabaseDiscoveryRule
-    : DROP DB_DISCOVERY RULE IDENTIFIER (COMMA IDENTIFIER)*
+algorithmProperty
+    : key=(IDENTIFIER | STRING) EQ value=(NUMBER | INT | STRING)
     ;
diff --git 
a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/parser/core/DatabaseDiscoveryRuleSQLStatementVisitor.java
 
b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/parser/core/DatabaseDiscoveryRuleSQLStatementVisitor.java
index cc89f83..1c2ec1a 100644
--- 
a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/parser/core/DatabaseDiscoveryRuleSQLStatementVisitor.java
+++ 
b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/parser/core/DatabaseDiscoveryRuleSQLStatementVisitor.java
@@ -17,29 +17,28 @@
 
 package org.apache.shardingsphere.dbdiscovery.distsql.parser.core;
 
-import org.antlr.v4.runtime.tree.TerminalNode;
+import 
org.apache.shardingsphere.dbdiscovery.distsql.parser.statement.AlterDatabaseDiscoveryRuleStatement;
+import 
org.apache.shardingsphere.dbdiscovery.distsql.parser.statement.CreateDatabaseDiscoveryRuleStatement;
+import 
org.apache.shardingsphere.dbdiscovery.distsql.parser.statement.DropDatabaseDiscoveryRuleStatement;
+import 
org.apache.shardingsphere.dbdiscovery.distsql.parser.statement.ShowDatabaseDiscoveryRulesStatement;
+import 
org.apache.shardingsphere.dbdiscovery.distsql.parser.statement.segment.DatabaseDiscoveryRuleSegment;
 import 
org.apache.shardingsphere.distsql.parser.autogen.DatabaseDiscoveryRuleStatementBaseVisitor;
+import 
org.apache.shardingsphere.distsql.parser.autogen.DatabaseDiscoveryRuleStatementParser.AlgorithmDefinitionContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.DatabaseDiscoveryRuleStatementParser.AlgorithmPropertiesContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.DatabaseDiscoveryRuleStatementParser.AlgorithmPropertyContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.DatabaseDiscoveryRuleStatementParser.AlterDatabaseDiscoveryRuleContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.DatabaseDiscoveryRuleStatementParser.CreateDatabaseDiscoveryRuleContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.DatabaseDiscoveryRuleStatementParser.DatabaseDiscoveryRuleDefinitionContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.DatabaseDiscoveryRuleStatementParser.DropDatabaseDiscoveryRuleContext;
-import 
org.apache.shardingsphere.distsql.parser.autogen.DatabaseDiscoveryRuleStatementParser.FunctionDefinitionContext;
+import 
org.apache.shardingsphere.distsql.parser.autogen.DatabaseDiscoveryRuleStatementParser.RuleNameContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.DatabaseDiscoveryRuleStatementParser.SchemaNameContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.DatabaseDiscoveryRuleStatementParser.ShowDatabaseDiscoveryRulesContext;
-import org.apache.shardingsphere.distsql.parser.segment.FunctionSegment;
-import 
org.apache.shardingsphere.dbdiscovery.distsql.parser.statement.segment.DatabaseDiscoveryRuleSegment;
-import 
org.apache.shardingsphere.dbdiscovery.distsql.parser.statement.AlterDatabaseDiscoveryRuleStatement;
-import 
org.apache.shardingsphere.dbdiscovery.distsql.parser.statement.CreateDatabaseDiscoveryRuleStatement;
-import 
org.apache.shardingsphere.dbdiscovery.distsql.parser.statement.DropDatabaseDiscoveryRuleStatement;
-import 
org.apache.shardingsphere.dbdiscovery.distsql.parser.statement.ShowDatabaseDiscoveryRulesStatement;
+import org.apache.shardingsphere.distsql.parser.segment.AlgorithmSegment;
 import org.apache.shardingsphere.sql.parser.api.visitor.ASTNode;
 import org.apache.shardingsphere.sql.parser.api.visitor.SQLVisitor;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.SchemaSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.value.identifier.IdentifierValue;
 
-import java.util.Objects;
 import java.util.Properties;
 import java.util.stream.Collectors;
 
@@ -54,54 +53,43 @@ public final class DatabaseDiscoveryRuleSQLStatementVisitor 
extends DatabaseDisc
     }
     
     @Override
-    public ASTNode visitDatabaseDiscoveryRuleDefinition(final 
DatabaseDiscoveryRuleDefinitionContext ctx) {
-        DatabaseDiscoveryRuleSegment result = new 
DatabaseDiscoveryRuleSegment();
-        result.setName(ctx.ruleName().getText());
-        result.setDataSources(ctx.resources().IDENTIFIER().stream().map(each 
-> new 
IdentifierValue(each.getText()).getValue()).collect(Collectors.toList()));
-        
result.setDiscoveryTypeName(ctx.functionDefinition().functionName().getText());
-        
result.setProps(buildAlgorithmProperties(ctx.functionDefinition().algorithmProperties()));
-        return result;
-    }
-    
-    @Override
     public ASTNode visitAlterDatabaseDiscoveryRule(final 
AlterDatabaseDiscoveryRuleContext ctx) {
         return new 
AlterDatabaseDiscoveryRuleStatement(ctx.databaseDiscoveryRuleDefinition().stream().map(each
 -> (DatabaseDiscoveryRuleSegment) visit(each)).collect(Collectors.toList()));
     }
     
     @Override
     public ASTNode visitDropDatabaseDiscoveryRule(final 
DropDatabaseDiscoveryRuleContext ctx) {
-        return new 
DropDatabaseDiscoveryRuleStatement(ctx.IDENTIFIER().stream().map(TerminalNode::getText).collect(Collectors.toList()));
+        return new 
DropDatabaseDiscoveryRuleStatement(ctx.ruleName().stream().map(RuleNameContext::getText).collect(Collectors.toList()));
     }
     
     @Override
-    public ASTNode visitSchemaName(final SchemaNameContext ctx) {
-        return new SchemaSegment(ctx.getStart().getStartIndex(), 
ctx.getStop().getStopIndex(), new IdentifierValue(ctx.getText()));
+    public ASTNode visitShowDatabaseDiscoveryRules(final 
ShowDatabaseDiscoveryRulesContext ctx) {
+        return new ShowDatabaseDiscoveryRulesStatement(null == 
ctx.schemaName() ? null : (SchemaSegment) visit(ctx.schemaName()));
     }
     
     @Override
-    public ASTNode visitShowDatabaseDiscoveryRules(final 
ShowDatabaseDiscoveryRulesContext ctx) {
-        return new 
ShowDatabaseDiscoveryRulesStatement(Objects.nonNull(ctx.schemaName()) ? 
(SchemaSegment) visit(ctx.schemaName()) : null);
+    public ASTNode visitDatabaseDiscoveryRuleDefinition(final 
DatabaseDiscoveryRuleDefinitionContext ctx) {
+        DatabaseDiscoveryRuleSegment result = new 
DatabaseDiscoveryRuleSegment();
+        result.setName(ctx.ruleName().getText());
+        result.setDataSources(ctx.resources().resourceName().stream().map(each 
-> new 
IdentifierValue(each.getText()).getValue()).collect(Collectors.toList()));
+        
result.setDiscoveryTypeName(ctx.algorithmDefinition().algorithmName().getText());
+        
result.setProps(getAlgorithmProperties(ctx.algorithmDefinition().algorithmProperties()));
+        return result;
     }
     
-    private Properties buildAlgorithmProperties(final 
AlgorithmPropertiesContext ctx) {
-        Properties result = new Properties();
-        for (AlgorithmPropertyContext each : ctx.algorithmProperty()) {
-            result.setProperty(new 
IdentifierValue(each.key.getText()).getValue(), new 
IdentifierValue(each.value.getText()).getValue());
-        }
-        return result;
+    @Override
+    public ASTNode visitSchemaName(final SchemaNameContext ctx) {
+        return new SchemaSegment(ctx.getStart().getStartIndex(), 
ctx.getStop().getStopIndex(), new IdentifierValue(ctx.getText()));
     }
     
     @Override
-    public ASTNode visitFunctionDefinition(final FunctionDefinitionContext 
ctx) {
-        return new FunctionSegment(ctx.functionName().getText(), 
getAlgorithmProperties(ctx));
+    public ASTNode visitAlgorithmDefinition(final AlgorithmDefinitionContext 
ctx) {
+        return new AlgorithmSegment(ctx.algorithmName().getText(), null == 
ctx.algorithmProperties() ? new Properties() : 
getAlgorithmProperties(ctx.algorithmProperties()));
     }
     
-    private Properties getAlgorithmProperties(final FunctionDefinitionContext 
ctx) {
+    private Properties getAlgorithmProperties(final AlgorithmPropertiesContext 
ctx) {
         Properties result = new Properties();
-        if (null == ctx.algorithmProperties()) {
-            return result;
-        }
-        for (AlgorithmPropertyContext each : 
ctx.algorithmProperties().algorithmProperty()) {
+        for (AlgorithmPropertyContext each : ctx.algorithmProperty()) {
             result.setProperty(new 
IdentifierValue(each.key.getText()).getValue(), new 
IdentifierValue(each.value.getText()).getValue());
         }
         return result;
diff --git 
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/yaml/converter/EncryptRuleStatementConverter.java
 
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/yaml/converter/EncryptRuleStatementConverter.java
index cb0b54c..c07e3ab 100644
--- 
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/yaml/converter/EncryptRuleStatementConverter.java
+++ 
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/yaml/converter/EncryptRuleStatementConverter.java
@@ -72,8 +72,8 @@ public final class EncryptRuleStatementConverter {
     
     private static YamlShardingSphereAlgorithmConfiguration 
buildYamlShardingSphereAlgorithmConfiguration(final EncryptColumnSegment 
encryptColumnSegment) {
         YamlShardingSphereAlgorithmConfiguration result = new 
YamlShardingSphereAlgorithmConfiguration();
-        result.setType(encryptColumnSegment.getEncryptor().getAlgorithmName());
-        
result.setProps(encryptColumnSegment.getEncryptor().getAlgorithmProps());
+        result.setType(encryptColumnSegment.getEncryptor().getName());
+        result.setProps(encryptColumnSegment.getEncryptor().getProps());
         return result;
     }
     
diff --git 
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/yaml/converter/EncryptRuleStatementConverterTest.java
 
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/yaml/converter/EncryptRuleStatementConverterTest.java
index d27db9a..760befb 100644
--- 
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/yaml/converter/EncryptRuleStatementConverterTest.java
+++ 
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/yaml/converter/EncryptRuleStatementConverterTest.java
@@ -17,7 +17,7 @@
 
 package org.apache.shardingsphere.encrypt.yaml.converter;
 
-import org.apache.shardingsphere.distsql.parser.segment.FunctionSegment;
+import org.apache.shardingsphere.distsql.parser.segment.AlgorithmSegment;
 import 
org.apache.shardingsphere.encrypt.distsql.parser.statement.segment.EncryptColumnSegment;
 import 
org.apache.shardingsphere.encrypt.distsql.parser.statement.segment.EncryptRuleSegment;
 import 
org.apache.shardingsphere.encrypt.yaml.config.YamlEncryptRuleConfiguration;
@@ -54,7 +54,7 @@ public final class EncryptRuleStatementConverterTest {
         encryptColumnSegment.setCipherColumn("user_cipher");
         Properties properties = new Properties();
         properties.setProperty("MD5-key", "MD5-value");
-        encryptColumnSegment.setEncryptor(new FunctionSegment("MD5", 
properties));
+        encryptColumnSegment.setEncryptor(new AlgorithmSegment("MD5", 
properties));
         return Collections.singleton(encryptColumnSegment);
     }
 }
diff --git 
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/src/main/antlr4/imports/encrypt/RDLStatement.g4
 
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/src/main/antlr4/imports/encrypt/RDLStatement.g4
index a764b0e..c33d12f 100644
--- 
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/src/main/antlr4/imports/encrypt/RDLStatement.g4
+++ 
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/src/main/antlr4/imports/encrypt/RDLStatement.g4
@@ -19,58 +19,58 @@ grammar RDLStatement;
 
 import Keyword, Literals, Symbol;
 
-resourceName
-    : IDENTIFIER
+createEncryptRule
+    : CREATE ENCRYPT RULE encryptRuleDefinition (COMMA encryptRuleDefinition)*
     ;
 
-tableName
-    : IDENTIFIER
+alterEncryptRule
+    : ALTER ENCRYPT RULE encryptRuleDefinition (COMMA encryptRuleDefinition)*
     ;
 
-columnName
-    : IDENTIFIER
+dropEncryptRule
+    : DROP ENCRYPT RULE tableName (COMMA tableName)*
     ;
 
-functionDefinition
-    : TYPE LP NAME EQ functionName (COMMA PROPERTIES LP algorithmProperties? 
RP)? RP
+encryptRuleDefinition
+    : tableName LP (RESOURCE EQ resourceName COMMA)? COLUMNS LP 
columnDefinition (COMMA columnDefinition)*  RP RP
     ;
 
-functionName
+tableName
     : IDENTIFIER
     ;
 
-algorithmProperties
-    : algorithmProperty (COMMA algorithmProperty)*
+resourceName
+    : IDENTIFIER
     ;
 
-algorithmProperty
-    : key=(IDENTIFIER | STRING) EQ value=(NUMBER | INT | STRING)
+columnDefinition
+    : LP NAME EQ columnName (COMMA PLAIN EQ plainColumnName)? COMMA CIPHER EQ 
cipherColumnName COMMA algorithmDefinition RP
     ;
 
-createEncryptRule
-    : CREATE ENCRYPT RULE encryptRuleDefinition (COMMA encryptRuleDefinition)*
+columnName
+    : IDENTIFIER
     ;
 
-encryptRuleDefinition
-    : tableName LP (RESOURCE EQ resourceName COMMA)? COLUMNS LP 
columnDefinition (COMMA columnDefinition)*  RP RP
+plainColumnName
+    : IDENTIFIER
     ;
 
-columnDefinition
-    : LP NAME EQ columnName (COMMA PLAIN EQ plainColumnName)? COMMA CIPHER EQ 
cipherColumnName COMMA functionDefinition RP
+cipherColumnName
+    : IDENTIFIER
     ;
 
-alterEncryptRule
-    : ALTER ENCRYPT RULE encryptRuleDefinition (COMMA encryptRuleDefinition)*
+algorithmDefinition
+    : TYPE LP NAME EQ algorithmName (COMMA PROPERTIES LP algorithmProperties? 
RP)? RP
     ;
 
-dropEncryptRule
-    : DROP ENCRYPT RULE IDENTIFIER (COMMA IDENTIFIER)*
+algorithmName
+    : IDENTIFIER
     ;
 
-plainColumnName
-    : IDENTIFIER
+algorithmProperties
+    : algorithmProperty (COMMA algorithmProperty)*
     ;
 
-cipherColumnName
-    : IDENTIFIER
+algorithmProperty
+    : key=(IDENTIFIER | STRING) EQ value=(NUMBER | INT | STRING)
     ;
diff --git 
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/src/main/antlr4/imports/encrypt/RQLStatement.g4
 
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/src/main/antlr4/imports/encrypt/RQLStatement.g4
index c393c22..4a75e26 100644
--- 
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/src/main/antlr4/imports/encrypt/RQLStatement.g4
+++ 
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/src/main/antlr4/imports/encrypt/RQLStatement.g4
@@ -27,10 +27,10 @@ tableRule
     : RULE tableName
     ;
 
-schemaName
+tableName
     : IDENTIFIER
     ;
 
-tableName
+schemaName
     : IDENTIFIER
     ;
diff --git 
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/src/main/java/org/apache/shardingsphere/encrypt/distsql/parser/core/EncryptRuleSQLStatementVisitor.java
 
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/src/main/java/org/apache/shardingsphere/encrypt/distsql/parser/core/EncryptRuleSQLStatementVisitor.java
index 084694c..f7ea17f 100644
--- 
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/src/main/java/org/apache/shardingsphere/encrypt/distsql/parser/core/EncryptRuleSQLStatementVisitor.java
+++ 
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/src/main/java/org/apache/shardingsphere/encrypt/distsql/parser/core/EncryptRuleSQLStatementVisitor.java
@@ -17,32 +17,30 @@
 
 package org.apache.shardingsphere.encrypt.distsql.parser.core;
 
-import org.antlr.v4.runtime.tree.TerminalNode;
 import 
org.apache.shardingsphere.distsql.parser.autogen.EncryptRuleStatementBaseVisitor;
+import 
org.apache.shardingsphere.distsql.parser.autogen.EncryptRuleStatementParser.AlgorithmDefinitionContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.EncryptRuleStatementParser.AlgorithmPropertyContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.EncryptRuleStatementParser.AlterEncryptRuleContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.EncryptRuleStatementParser.ColumnDefinitionContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.EncryptRuleStatementParser.CreateEncryptRuleContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.EncryptRuleStatementParser.DropEncryptRuleContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.EncryptRuleStatementParser.EncryptRuleDefinitionContext;
-import 
org.apache.shardingsphere.distsql.parser.autogen.EncryptRuleStatementParser.FunctionDefinitionContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.EncryptRuleStatementParser.SchemaNameContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.EncryptRuleStatementParser.ShowEncryptRulesContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.EncryptRuleStatementParser.TableNameContext;
-import org.apache.shardingsphere.distsql.parser.segment.FunctionSegment;
-import 
org.apache.shardingsphere.encrypt.distsql.parser.statement.segment.EncryptColumnSegment;
-import 
org.apache.shardingsphere.encrypt.distsql.parser.statement.segment.EncryptRuleSegment;
+import org.apache.shardingsphere.distsql.parser.segment.AlgorithmSegment;
 import 
org.apache.shardingsphere.encrypt.distsql.parser.statement.AlterEncryptRuleStatement;
 import 
org.apache.shardingsphere.encrypt.distsql.parser.statement.CreateEncryptRuleStatement;
 import 
org.apache.shardingsphere.encrypt.distsql.parser.statement.DropEncryptRuleStatement;
 import 
org.apache.shardingsphere.encrypt.distsql.parser.statement.ShowEncryptRulesStatement;
+import 
org.apache.shardingsphere.encrypt.distsql.parser.statement.segment.EncryptColumnSegment;
+import 
org.apache.shardingsphere.encrypt.distsql.parser.statement.segment.EncryptRuleSegment;
 import org.apache.shardingsphere.sql.parser.api.visitor.ASTNode;
 import org.apache.shardingsphere.sql.parser.api.visitor.SQLVisitor;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.SchemaSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.TableNameSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.value.identifier.IdentifierValue;
 
-import java.util.Objects;
 import java.util.Properties;
 import java.util.stream.Collectors;
 
@@ -57,44 +55,44 @@ public final class EncryptRuleSQLStatementVisitor extends 
EncryptRuleStatementBa
     }
     
     @Override
-    public ASTNode visitEncryptRuleDefinition(final 
EncryptRuleDefinitionContext ctx) {
-        return new EncryptRuleSegment(ctx.tableName().getText(), 
ctx.columnDefinition().stream().map(each -> (EncryptColumnSegment) 
visit(each)).collect(Collectors.toList()));
+    public ASTNode visitAlterEncryptRule(final AlterEncryptRuleContext ctx) {
+        return new 
AlterEncryptRuleStatement(ctx.encryptRuleDefinition().stream().map(each -> 
(EncryptRuleSegment) visit(each)).collect(Collectors.toList()));
     }
     
     @Override
-    public ASTNode visitColumnDefinition(final ColumnDefinitionContext ctx) {
-        EncryptColumnSegment result = new EncryptColumnSegment();
-        result.setName(ctx.columnName().getText());
-        result.setCipherColumn(ctx.cipherColumnName().getText());
-        if (Objects.nonNull(ctx.plainColumnName())) {
-            result.setPlainColumn(ctx.plainColumnName().getText());
-        }
-        result.setEncryptor((FunctionSegment) visit(ctx.functionDefinition()));
-        return result;
+    public ASTNode visitDropEncryptRule(final DropEncryptRuleContext ctx) {
+        return new 
DropEncryptRuleStatement(ctx.tableName().stream().map(TableNameContext::getText).collect(Collectors.toList()));
     }
     
     @Override
-    public ASTNode visitAlterEncryptRule(final AlterEncryptRuleContext ctx) {
-        return new 
AlterEncryptRuleStatement(ctx.encryptRuleDefinition().stream().map(each -> 
(EncryptRuleSegment) visit(each)).collect(Collectors.toList()));
+    public ASTNode visitShowEncryptRules(final ShowEncryptRulesContext ctx) {
+        return new ShowEncryptRulesStatement(null == ctx.tableRule() ? null : 
ctx.tableRule().tableName().getText(),
+                null == ctx.schemaName() ? null : (SchemaSegment) 
visit(ctx.schemaName()));
     }
     
     @Override
-    public ASTNode visitDropEncryptRule(final DropEncryptRuleContext ctx) {
-        return new 
DropEncryptRuleStatement(ctx.IDENTIFIER().stream().map(TerminalNode::getText).collect(Collectors.toList()));
+    public ASTNode visitEncryptRuleDefinition(final 
EncryptRuleDefinitionContext ctx) {
+        return new EncryptRuleSegment(ctx.tableName().getText(), 
ctx.columnDefinition().stream().map(each -> (EncryptColumnSegment) 
visit(each)).collect(Collectors.toList()));
     }
     
     @Override
-    public ASTNode visitShowEncryptRules(final ShowEncryptRulesContext ctx) {
-        return new ShowEncryptRulesStatement(Objects.nonNull(ctx.tableRule()) 
? ctx.tableRule().tableName().getText() : null,
-                Objects.nonNull(ctx.schemaName()) ? (SchemaSegment) 
visit(ctx.schemaName()) : null);
+    public ASTNode visitColumnDefinition(final ColumnDefinitionContext ctx) {
+        EncryptColumnSegment result = new EncryptColumnSegment();
+        result.setName(ctx.columnName().getText());
+        result.setCipherColumn(ctx.cipherColumnName().getText());
+        if (null != ctx.plainColumnName()) {
+            result.setPlainColumn(ctx.plainColumnName().getText());
+        }
+        result.setEncryptor((AlgorithmSegment) 
visit(ctx.algorithmDefinition()));
+        return result;
     }
     
     @Override
-    public ASTNode visitFunctionDefinition(final FunctionDefinitionContext 
ctx) {
-        return new FunctionSegment(ctx.functionName().getText(), 
getAlgorithmProperties(ctx));
+    public ASTNode visitAlgorithmDefinition(final AlgorithmDefinitionContext 
ctx) {
+        return new AlgorithmSegment(ctx.algorithmName().getText(), 
getAlgorithmProperties(ctx));
     }
     
-    private Properties getAlgorithmProperties(final FunctionDefinitionContext 
ctx) {
+    private Properties getAlgorithmProperties(final AlgorithmDefinitionContext 
ctx) {
         Properties result = new Properties();
         if (null == ctx.algorithmProperties()) {
             return result;
diff --git 
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/src/main/java/org/apache/shardingsphere/encrypt/distsql/parser/statement/segment/EncryptColumnSegment.java
 
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/src/main/java/org/apache/shardingsphere/encrypt/distsql/parser/statement/segment/EncryptColumnSegment.java
index aece6a8..f97e542 100644
--- 
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/src/main/java/org/apache/shardingsphere/encrypt/distsql/parser/statement/segment/EncryptColumnSegment.java
+++ 
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/src/main/java/org/apache/shardingsphere/encrypt/distsql/parser/statement/segment/EncryptColumnSegment.java
@@ -19,7 +19,7 @@ package 
org.apache.shardingsphere.encrypt.distsql.parser.statement.segment;
 
 import lombok.Getter;
 import lombok.Setter;
-import org.apache.shardingsphere.distsql.parser.segment.FunctionSegment;
+import org.apache.shardingsphere.distsql.parser.segment.AlgorithmSegment;
 import org.apache.shardingsphere.sql.parser.api.visitor.ASTNode;
 
 /**
@@ -35,5 +35,5 @@ public final class EncryptColumnSegment implements ASTNode {
     
     private String cipherColumn;
     
-    private FunctionSegment encryptor;
+    private AlgorithmSegment encryptor;
 }
diff --git 
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/src/test/java/org/apache/shardingsphere/encrypt/distsql/parser/core/EncryptRuleStatementParserEngineTest.java
 
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/src/test/java/org/apache/shardingsphere/encrypt/distsql/parser/core/EncryptRuleStatementParserEngineTest.java
index bde405b..e9ca297 100644
--- 
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/src/test/java/org/apache/shardingsphere/encrypt/distsql/parser/core/EncryptRuleStatementParserEngineTest.java
+++ 
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/src/test/java/org/apache/shardingsphere/encrypt/distsql/parser/core/EncryptRuleStatementParserEngineTest.java
@@ -72,11 +72,11 @@ public final class EncryptRuleStatementParserEngineTest {
         assertThat(encryptColumnSegments.get(0).getName(), is("user_id"));
         assertThat(encryptColumnSegments.get(0).getCipherColumn(), 
is("user_cipher"));
         assertThat(encryptColumnSegments.get(0).getPlainColumn(), 
is("user_plain"));
-        
assertThat(encryptColumnSegments.get(0).getEncryptor().getAlgorithmName(), 
is("AES"));
-        
assertThat(encryptColumnSegments.get(0).getEncryptor().getAlgorithmProps().get("aes-key-value"),
 is("123456abc"));
+        assertThat(encryptColumnSegments.get(0).getEncryptor().getName(), 
is("AES"));
+        
assertThat(encryptColumnSegments.get(0).getEncryptor().getProps().get("aes-key-value"),
 is("123456abc"));
         assertThat(encryptColumnSegments.get(1).getName(), is("order_id"));
         assertThat(encryptColumnSegments.get(1).getCipherColumn(), 
is("order_cipher"));
-        
assertThat(encryptColumnSegments.get(1).getEncryptor().getAlgorithmName(), 
is("MD5"));
+        assertThat(encryptColumnSegments.get(1).getEncryptor().getName(), 
is("MD5"));
     }
     
     @Test
@@ -92,11 +92,11 @@ public final class EncryptRuleStatementParserEngineTest {
         assertThat(encryptColumnSegments.get(0).getName(), is("user_id"));
         assertThat(encryptColumnSegments.get(0).getCipherColumn(), 
is("user_cipher"));
         assertThat(encryptColumnSegments.get(0).getPlainColumn(), 
is("user_plain"));
-        
assertThat(encryptColumnSegments.get(0).getEncryptor().getAlgorithmName(), 
is("AES"));
-        
assertThat(encryptColumnSegments.get(0).getEncryptor().getAlgorithmProps().get("aes-key-value"),
 is("123456abc"));
+        assertThat(encryptColumnSegments.get(0).getEncryptor().getName(), 
is("AES"));
+        
assertThat(encryptColumnSegments.get(0).getEncryptor().getProps().get("aes-key-value"),
 is("123456abc"));
         assertThat(encryptColumnSegments.get(1).getName(), is("order_id"));
         assertThat(encryptColumnSegments.get(1).getCipherColumn(), 
is("order_cipher"));
-        
assertThat(encryptColumnSegments.get(1).getEncryptor().getAlgorithmName(), 
is("MD5"));
+        assertThat(encryptColumnSegments.get(1).getEncryptor().getName(), 
is("MD5"));
     }
     
     @Test
diff --git 
a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/src/main/antlr4/imports/readwrite-splitting/RDLStatement.g4
 
b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/src/main/antlr4/imports/readwrite-splitting/RDLStatement.g4
index 6f4c8a6..d1714df 100644
--- 
a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/src/main/antlr4/imports/readwrite-splitting/RDLStatement.g4
+++ 
b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/src/main/antlr4/imports/readwrite-splitting/RDLStatement.g4
@@ -23,8 +23,16 @@ createReadwriteSplittingRule
     : CREATE READWRITE_SPLITTING RULE readwriteSplittingRuleDefinition (COMMA 
readwriteSplittingRuleDefinition)*
     ;
 
+alterReadwriteSplittingRule
+    : ALTER READWRITE_SPLITTING RULE readwriteSplittingRuleDefinition (COMMA 
readwriteSplittingRuleDefinition)*
+    ;
+
+dropReadwriteSplittingRule
+    : DROP READWRITE_SPLITTING RULE IDENTIFIER (COMMA IDENTIFIER)*
+    ;
+
 readwriteSplittingRuleDefinition
-    : ruleName LP (staticReadwriteSplittingRuleDefinition | 
dynamicReadwriteSplittingRuleDefinition) (COMMA functionDefinition)? RP
+    : ruleName LP (staticReadwriteSplittingRuleDefinition | 
dynamicReadwriteSplittingRuleDefinition) (COMMA algorithmDefinition)? RP
     ;
 
 staticReadwriteSplittingRuleDefinition
@@ -35,10 +43,6 @@ dynamicReadwriteSplittingRuleDefinition
     : AUTO_AWARE_RESOURCE EQ IDENTIFIER
     ;
 
-alterReadwriteSplittingRule
-    : ALTER READWRITE_SPLITTING RULE readwriteSplittingRuleDefinition (COMMA 
readwriteSplittingRuleDefinition)*
-    ;
-
 writeResourceName
     : resourceName
     ;
@@ -51,15 +55,11 @@ ruleName
     : IDENTIFIER
     ;
 
-dropReadwriteSplittingRule
-    : DROP READWRITE_SPLITTING RULE IDENTIFIER (COMMA IDENTIFIER)*
-    ;
-
-functionDefinition
-    : TYPE LP NAME EQ functionName (COMMA PROPERTIES LP algorithmProperties? 
RP)? RP
+algorithmDefinition
+    : TYPE LP NAME EQ algorithmName (COMMA PROPERTIES LP algorithmProperties? 
RP)? RP
     ;
 
-functionName
+algorithmName
     : IDENTIFIER
     ;
 
diff --git 
a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/parser/core/ReadwriteSplittingRuleSQLStatementVisitor.java
 
b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/parser/core/ReadwriteSplittingRuleSQLStatementVisitor.java
index 94fffd0..72b78e8 100644
--- 
a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/parser/core/ReadwriteSplittingRuleSQLStatementVisitor.java
+++ 
b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/parser/core/ReadwriteSplittingRuleSQLStatementVisitor.java
@@ -20,22 +20,22 @@ package 
org.apache.shardingsphere.readwritesplitting.distsql.parser.core;
 import org.antlr.v4.runtime.RuleContext;
 import org.antlr.v4.runtime.tree.TerminalNode;
 import 
org.apache.shardingsphere.distsql.parser.autogen.ReadwriteSplittingRuleStatementBaseVisitor;
+import 
org.apache.shardingsphere.distsql.parser.autogen.ReadwriteSplittingRuleStatementParser.AlgorithmDefinitionContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.ReadwriteSplittingRuleStatementParser.AlgorithmPropertyContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.ReadwriteSplittingRuleStatementParser.AlterReadwriteSplittingRuleContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.ReadwriteSplittingRuleStatementParser.CreateReadwriteSplittingRuleContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.ReadwriteSplittingRuleStatementParser.DropReadwriteSplittingRuleContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.ReadwriteSplittingRuleStatementParser.DynamicReadwriteSplittingRuleDefinitionContext;
-import 
org.apache.shardingsphere.distsql.parser.autogen.ReadwriteSplittingRuleStatementParser.FunctionDefinitionContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.ReadwriteSplittingRuleStatementParser.ReadwriteSplittingRuleDefinitionContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.ReadwriteSplittingRuleStatementParser.SchemaNameContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.ReadwriteSplittingRuleStatementParser.ShowReadwriteSplittingRulesContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.ReadwriteSplittingRuleStatementParser.StaticReadwriteSplittingRuleDefinitionContext;
-import org.apache.shardingsphere.distsql.parser.segment.FunctionSegment;
-import 
org.apache.shardingsphere.readwritesplitting.distsql.parser.statement.segment.ReadwriteSplittingRuleSegment;
+import org.apache.shardingsphere.distsql.parser.segment.AlgorithmSegment;
 import 
org.apache.shardingsphere.readwritesplitting.distsql.parser.statement.AlterReadwriteSplittingRuleStatement;
 import 
org.apache.shardingsphere.readwritesplitting.distsql.parser.statement.CreateReadwriteSplittingRuleStatement;
 import 
org.apache.shardingsphere.readwritesplitting.distsql.parser.statement.DropReadwriteSplittingRuleStatement;
 import 
org.apache.shardingsphere.readwritesplitting.distsql.parser.statement.ShowReadwriteSplittingRulesStatement;
+import 
org.apache.shardingsphere.readwritesplitting.distsql.parser.statement.segment.ReadwriteSplittingRuleSegment;
 import org.apache.shardingsphere.sql.parser.api.visitor.ASTNode;
 import org.apache.shardingsphere.sql.parser.api.visitor.SQLVisitor;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.SchemaSegment;
@@ -56,16 +56,30 @@ public final class 
ReadwriteSplittingRuleSQLStatementVisitor extends ReadwriteSp
     }
     
     @Override
+    public ASTNode visitAlterReadwriteSplittingRule(final 
AlterReadwriteSplittingRuleContext ctx) {
+        return new 
AlterReadwriteSplittingRuleStatement(ctx.readwriteSplittingRuleDefinition().stream().map(each
 -> (ReadwriteSplittingRuleSegment) visit(each)).collect(Collectors.toList()));
+    }
+    
+    @Override
+    public ASTNode visitDropReadwriteSplittingRule(final 
DropReadwriteSplittingRuleContext ctx) {
+        return new 
DropReadwriteSplittingRuleStatement(ctx.IDENTIFIER().stream().map(TerminalNode::getText).collect(Collectors.toList()));
+    }
+    
+    @Override
+    public ASTNode visitShowReadwriteSplittingRules(final 
ShowReadwriteSplittingRulesContext ctx) {
+        return new 
ShowReadwriteSplittingRulesStatement(Objects.nonNull(ctx.schemaName()) ? 
(SchemaSegment) visit(ctx.schemaName()) : null);
+    }
+    
+    @Override
     public ASTNode visitReadwriteSplittingRuleDefinition(final 
ReadwriteSplittingRuleDefinitionContext ctx) {
         ReadwriteSplittingRuleSegment result = (ReadwriteSplittingRuleSegment) 
(null != ctx.dynamicReadwriteSplittingRuleDefinition()
                 ? visit(ctx.dynamicReadwriteSplittingRuleDefinition()) : 
visit(ctx.staticReadwriteSplittingRuleDefinition()));
         Properties props = new Properties();
-        if (null != ctx.functionDefinition().algorithmProperties()) {
-            ctx.functionDefinition().algorithmProperties().algorithmProperty()
-                    .forEach(each -> props.setProperty(each.key.getText(), 
each.value.getText()));
+        if (null != ctx.algorithmDefinition().algorithmProperties()) {
+            
ctx.algorithmDefinition().algorithmProperties().algorithmProperty().forEach(each
 -> props.setProperty(each.key.getText(), each.value.getText()));
         }
         result.setName(ctx.ruleName().getText());
-        
result.setLoadBalancer(ctx.functionDefinition().functionName().getText());
+        
result.setLoadBalancer(ctx.algorithmDefinition().algorithmName().getText());
         result.setProps(props);
         return result;
     }
@@ -86,31 +100,16 @@ public final class 
ReadwriteSplittingRuleSQLStatementVisitor extends ReadwriteSp
     }
     
     @Override
-    public ASTNode visitAlterReadwriteSplittingRule(final 
AlterReadwriteSplittingRuleContext ctx) {
-        return new 
AlterReadwriteSplittingRuleStatement(ctx.readwriteSplittingRuleDefinition().stream().map(each
 -> (ReadwriteSplittingRuleSegment) visit(each)).collect(Collectors.toList()));
-    }
-    
-    @Override
-    public ASTNode visitDropReadwriteSplittingRule(final 
DropReadwriteSplittingRuleContext ctx) {
-        return new 
DropReadwriteSplittingRuleStatement(ctx.IDENTIFIER().stream().map(TerminalNode::getText).collect(Collectors.toList()));
-    }
-    
-    @Override
-    public ASTNode visitShowReadwriteSplittingRules(final 
ShowReadwriteSplittingRulesContext ctx) {
-        return new 
ShowReadwriteSplittingRulesStatement(Objects.nonNull(ctx.schemaName()) ? 
(SchemaSegment) visit(ctx.schemaName()) : null);
-    }
-    
-    @Override
     public ASTNode visitSchemaName(final SchemaNameContext ctx) {
         return new SchemaSegment(ctx.getStart().getStartIndex(), 
ctx.getStop().getStopIndex(), new IdentifierValue(ctx.getText()));
     }
     
     @Override
-    public ASTNode visitFunctionDefinition(final FunctionDefinitionContext 
ctx) {
-        return new FunctionSegment(ctx.functionName().getText(), 
getAlgorithmProperties(ctx));
+    public ASTNode visitAlgorithmDefinition(final AlgorithmDefinitionContext 
ctx) {
+        return new AlgorithmSegment(ctx.algorithmName().getText(), 
getAlgorithmProperties(ctx));
     }
     
-    private Properties getAlgorithmProperties(final FunctionDefinitionContext 
ctx) {
+    private Properties getAlgorithmProperties(final AlgorithmDefinitionContext 
ctx) {
         Properties result = new Properties();
         if (null == ctx.algorithmProperties()) {
             return result;
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/converter/ShardingRuleStatementConverter.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/converter/ShardingRuleStatementConverter.java
index 55b7981..961e6c6 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/converter/ShardingRuleStatementConverter.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/converter/ShardingRuleStatementConverter.java
@@ -21,7 +21,7 @@ import com.google.common.base.Joiner;
 import com.google.common.base.Strings;
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
-import org.apache.shardingsphere.distsql.parser.segment.FunctionSegment;
+import org.apache.shardingsphere.distsql.parser.segment.AlgorithmSegment;
 import 
org.apache.shardingsphere.sharding.distsql.parser.statement.segment.TableRuleSegment;
 import 
org.apache.shardingsphere.sharding.distsql.parser.statement.segment.ShardingBindingTableRuleSegment;
 import 
org.apache.shardingsphere.sharding.distsql.parser.statement.AlterShardingBindingTableRulesStatement;
@@ -97,21 +97,21 @@ public final class ShardingRuleStatementConverter {
         for (TableRuleSegment each : tableRuleSegments) {
             if (null != each.getTableStrategy()) {
                 
result.getShardingAlgorithms().put(getAlgorithmName(each.getLogicTable(), 
-                        each.getTableStrategy().getAlgorithmName()), 
createAlgorithmConfiguration(each.getTableStrategy()));
+                        each.getTableStrategy().getName()), 
createAlgorithmConfiguration(each.getTableStrategy()));
                 result.getAutoTables().put(each.getLogicTable(), 
createAutoTableRuleConfiguration(each));
             }
             if (null != each.getKeyGenerateStrategy()) {
                 
result.getKeyGenerators().put(getKeyGeneratorName(each.getLogicTable(), 
-                        each.getKeyGenerateStrategy().getAlgorithmName()), 
createAlgorithmConfiguration(each.getKeyGenerateStrategy()));
+                        each.getKeyGenerateStrategy().getName()), 
createAlgorithmConfiguration(each.getKeyGenerateStrategy()));
             }
         }
         return result;
     }
     
-    private static YamlShardingSphereAlgorithmConfiguration 
createAlgorithmConfiguration(final FunctionSegment segment) {
+    private static YamlShardingSphereAlgorithmConfiguration 
createAlgorithmConfiguration(final AlgorithmSegment segment) {
         YamlShardingSphereAlgorithmConfiguration result = new 
YamlShardingSphereAlgorithmConfiguration();
-        result.setType(segment.getAlgorithmName());
-        result.setProps(segment.getAlgorithmProps());
+        result.setType(segment.getName());
+        result.setProps(segment.getProps());
         return result;
     }
     
@@ -130,7 +130,7 @@ public final class ShardingRuleStatementConverter {
         YamlShardingStrategyConfiguration result = new 
YamlShardingStrategyConfiguration();
         YamlStandardShardingStrategyConfiguration standard = new 
YamlStandardShardingStrategyConfiguration();
         standard.setShardingColumn(segment.getTableStrategyColumn());
-        
standard.setShardingAlgorithmName(getAlgorithmName(segment.getLogicTable(), 
segment.getTableStrategy().getAlgorithmName()));
+        
standard.setShardingAlgorithmName(getAlgorithmName(segment.getLogicTable(), 
segment.getTableStrategy().getName()));
         result.setStandard(standard);
         return result;
     }
@@ -138,7 +138,7 @@ public final class ShardingRuleStatementConverter {
     private static YamlKeyGenerateStrategyConfiguration 
createKeyGenerateStrategyConfiguration(final TableRuleSegment segment) {
         YamlKeyGenerateStrategyConfiguration result = new 
YamlKeyGenerateStrategyConfiguration();
         result.setColumn(segment.getKeyGenerateStrategyColumn());
-        
result.setKeyGeneratorName(getKeyGeneratorName(segment.getLogicTable(), 
segment.getKeyGenerateStrategy().getAlgorithmName()));
+        
result.setKeyGeneratorName(getKeyGeneratorName(segment.getLogicTable(), 
segment.getKeyGenerateStrategy().getName()));
         return result;
     }
     
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/converter/ShardingRuleStatementConverterTest.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/converter/ShardingRuleStatementConverterTest.java
index 589f3fc..c549c5b 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/converter/ShardingRuleStatementConverterTest.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/converter/ShardingRuleStatementConverterTest.java
@@ -17,7 +17,7 @@
 
 package org.apache.shardingsphere.sharding.converter;
 
-import org.apache.shardingsphere.distsql.parser.segment.FunctionSegment;
+import org.apache.shardingsphere.distsql.parser.segment.AlgorithmSegment;
 import 
org.apache.shardingsphere.sharding.distsql.parser.statement.segment.TableRuleSegment;
 import 
org.apache.shardingsphere.sharding.distsql.parser.statement.CreateShardingTableRuleStatement;
 import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
@@ -49,7 +49,7 @@ public final class ShardingRuleStatementConverterTest {
         segment.setTableStrategyColumn("order_id");
         Properties props = new Properties();
         props.setProperty("sharding_count", "2");
-        segment.setTableStrategy(new FunctionSegment("MOD", props));
+        segment.setTableStrategy(new AlgorithmSegment("MOD", props));
         sqlStatement = new 
CreateShardingTableRuleStatement(Collections.singleton(segment));
     }
     
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/src/main/antlr4/imports/sharding/RDLStatement.g4
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/src/main/antlr4/imports/sharding/RDLStatement.g4
index 3c4234e..02e9f1a 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/src/main/antlr4/imports/sharding/RDLStatement.g4
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/src/main/antlr4/imports/sharding/RDLStatement.g4
@@ -56,7 +56,7 @@ dropShardingBroadcastTableRules
     ;
 
 shardingTableRuleDefinition
-    : tableName LP resources (COMMA shardingColumn)? (COMMA 
functionDefinition)? (COMMA keyGenerateStrategy)? RP
+    : tableName LP resources (COMMA shardingColumn)? (COMMA 
algorithmDefinition)? (COMMA keyGenerateStrategy)? RP
     ;
 
 resources
@@ -68,7 +68,7 @@ shardingColumn
     ;
 
 keyGenerateStrategy
-    : GENERATED_KEY LP COLUMN EQ columnName COMMA functionDefinition RP
+    : GENERATED_KEY LP COLUMN EQ columnName COMMA algorithmDefinition RP
     ;
 
 tableName
@@ -79,11 +79,15 @@ columnName
     : IDENTIFIER
     ;
 
-functionDefinition
-    : TYPE LP NAME EQ functionName (COMMA PROPERTIES LP algorithmProperties? 
RP)? RP
+bindTableRulesDefinition
+    : LP tableName (COMMA tableName)* RP
+    ;
+
+algorithmDefinition
+    : TYPE LP NAME EQ algorithmName (COMMA PROPERTIES LP algorithmProperties? 
RP)? RP
     ;
 
-functionName
+algorithmName
     : IDENTIFIER
     ;
 
@@ -94,7 +98,3 @@ algorithmProperties
 algorithmProperty
     : key=(IDENTIFIER | STRING) EQ value=(NUMBER | INT | STRING)
     ;
-
-bindTableRulesDefinition
-    : LP tableName (COMMA tableName)* RP
-    ;
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/core/ShardingRuleSQLStatementVisitor.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/core/ShardingRuleSQLStatementVisitor.java
index 0ead4e4..4e8b8a5 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/core/ShardingRuleSQLStatementVisitor.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/core/ShardingRuleSQLStatementVisitor.java
@@ -21,6 +21,7 @@ import com.google.common.base.Joiner;
 import org.antlr.v4.runtime.tree.ParseTree;
 import org.antlr.v4.runtime.tree.TerminalNode;
 import 
org.apache.shardingsphere.distsql.parser.autogen.ShardingRuleStatementBaseVisitor;
+import 
org.apache.shardingsphere.distsql.parser.autogen.ShardingRuleStatementParser.AlgorithmDefinitionContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.ShardingRuleStatementParser.AlgorithmPropertyContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.ShardingRuleStatementParser.AlterShardingBindingTableRulesContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.ShardingRuleStatementParser.AlterShardingBroadcastTableRulesContext;
@@ -32,16 +33,13 @@ import 
org.apache.shardingsphere.distsql.parser.autogen.ShardingRuleStatementPar
 import 
org.apache.shardingsphere.distsql.parser.autogen.ShardingRuleStatementParser.DropShardingBindingTableRulesContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.ShardingRuleStatementParser.DropShardingBroadcastTableRulesContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.ShardingRuleStatementParser.DropShardingTableRuleContext;
-import 
org.apache.shardingsphere.distsql.parser.autogen.ShardingRuleStatementParser.FunctionDefinitionContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.ShardingRuleStatementParser.SchemaNameContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.ShardingRuleStatementParser.ShardingTableRuleDefinitionContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.ShardingRuleStatementParser.ShowShardingBindingTableRulesContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.ShardingRuleStatementParser.ShowShardingBroadcastTableRulesContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.ShardingRuleStatementParser.ShowShardingTableRulesContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.ShardingRuleStatementParser.TableNameContext;
-import org.apache.shardingsphere.distsql.parser.segment.FunctionSegment;
-import 
org.apache.shardingsphere.sharding.distsql.parser.statement.segment.TableRuleSegment;
-import 
org.apache.shardingsphere.sharding.distsql.parser.statement.segment.ShardingBindingTableRuleSegment;
+import org.apache.shardingsphere.distsql.parser.segment.AlgorithmSegment;
 import 
org.apache.shardingsphere.sharding.distsql.parser.statement.AlterShardingBindingTableRulesStatement;
 import 
org.apache.shardingsphere.sharding.distsql.parser.statement.AlterShardingBroadcastTableRulesStatement;
 import 
org.apache.shardingsphere.sharding.distsql.parser.statement.AlterShardingTableRuleStatement;
@@ -54,6 +52,8 @@ import 
org.apache.shardingsphere.sharding.distsql.parser.statement.DropShardingT
 import 
org.apache.shardingsphere.sharding.distsql.parser.statement.ShowShardingBindingTableRulesStatement;
 import 
org.apache.shardingsphere.sharding.distsql.parser.statement.ShowShardingBroadcastTableRulesStatement;
 import 
org.apache.shardingsphere.sharding.distsql.parser.statement.ShowShardingTableRulesStatement;
+import 
org.apache.shardingsphere.sharding.distsql.parser.statement.segment.ShardingBindingTableRuleSegment;
+import 
org.apache.shardingsphere.sharding.distsql.parser.statement.segment.TableRuleSegment;
 import org.apache.shardingsphere.sql.parser.api.visitor.ASTNode;
 import org.apache.shardingsphere.sql.parser.api.visitor.SQLVisitor;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.SchemaSegment;
@@ -134,6 +134,11 @@ public final class ShardingRuleSQLStatementVisitor extends 
ShardingRuleStatement
     }
     
     @Override
+    public ASTNode visitShowShardingTableRules(final 
ShowShardingTableRulesContext ctx) {
+        return new ShowShardingTableRulesStatement(null == ctx.tableRule() ? 
null : ctx.tableRule().tableName().getText(), null == ctx.schemaName() ? null : 
(SchemaSegment) visit(ctx.schemaName()));
+    }
+    
+    @Override
     public ASTNode visitShardingTableRuleDefinition(final 
ShardingTableRuleDefinitionContext ctx) {
         TableRuleSegment result = new TableRuleSegment();
         result.setLogicTable(ctx.tableName().getText());
@@ -144,23 +149,23 @@ public final class ShardingRuleSQLStatementVisitor 
extends ShardingRuleStatement
             }
         }
         result.setDataSources(dataSources);
-        if (null != ctx.functionDefinition()) {
-            result.setTableStrategy((FunctionSegment) 
visit(ctx.functionDefinition()));
+        if (null != ctx.algorithmDefinition()) {
+            result.setTableStrategy((AlgorithmSegment) 
visit(ctx.algorithmDefinition()));
             
result.setTableStrategyColumn(ctx.shardingColumn().columnName().getText());
         }
         if (null != ctx.keyGenerateStrategy()) {
-            result.setKeyGenerateStrategy((FunctionSegment) 
visit(ctx.keyGenerateStrategy().functionDefinition()));
+            result.setKeyGenerateStrategy((AlgorithmSegment) 
visit(ctx.keyGenerateStrategy().algorithmDefinition()));
             
result.setKeyGenerateStrategyColumn(ctx.keyGenerateStrategy().columnName().getText());
         }
         return result;
     }
     
     @Override
-    public ASTNode visitFunctionDefinition(final FunctionDefinitionContext 
ctx) {
-        return new FunctionSegment(ctx.functionName().getText(), 
getAlgorithmProperties(ctx));
+    public ASTNode visitAlgorithmDefinition(final AlgorithmDefinitionContext 
ctx) {
+        return new AlgorithmSegment(ctx.algorithmName().getText(), 
getAlgorithmProperties(ctx));
     }
     
-    private Properties getAlgorithmProperties(final FunctionDefinitionContext 
ctx) {
+    private Properties getAlgorithmProperties(final AlgorithmDefinitionContext 
ctx) {
         Properties result = new Properties();
         if (null == ctx.algorithmProperties()) {
             return result;
@@ -178,17 +183,11 @@ public final class ShardingRuleSQLStatementVisitor 
extends ShardingRuleStatement
     
     @Override
     public ASTNode visitShowShardingBindingTableRules(final 
ShowShardingBindingTableRulesContext ctx) {
-        return new 
ShowShardingBindingTableRulesStatement(Objects.nonNull(ctx.schemaName()) ? 
(SchemaSegment) visit(ctx.schemaName()) : null);
+        return new ShowShardingBindingTableRulesStatement(null == 
ctx.schemaName() ? null : (SchemaSegment) visit(ctx.schemaName()));
     }
     
     @Override
     public ASTNode visitSchemaName(final SchemaNameContext ctx) {
         return new SchemaSegment(ctx.getStart().getStartIndex(), 
ctx.getStop().getStopIndex(), new IdentifierValue(ctx.getText()));
     }
-    
-    @Override
-    public ASTNode visitShowShardingTableRules(final 
ShowShardingTableRulesContext ctx) {
-        return new 
ShowShardingTableRulesStatement(Objects.nonNull(ctx.tableRule()) ? 
ctx.tableRule().tableName().getText() : null,
-                Objects.nonNull(ctx.schemaName()) ? (SchemaSegment) 
visit(ctx.schemaName()) : null);
-    }
 }
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/statement/segment/TableRuleSegment.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/statement/segment/TableRuleSegment.java
index 6bb26b4..83b01ce 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/statement/segment/TableRuleSegment.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/statement/segment/TableRuleSegment.java
@@ -19,7 +19,7 @@ package 
org.apache.shardingsphere.sharding.distsql.parser.statement.segment;
 
 import lombok.Getter;
 import lombok.Setter;
-import org.apache.shardingsphere.distsql.parser.segment.FunctionSegment;
+import org.apache.shardingsphere.distsql.parser.segment.AlgorithmSegment;
 import org.apache.shardingsphere.sql.parser.api.visitor.ASTNode;
 
 import java.util.Collection;
@@ -39,7 +39,7 @@ public final class TableRuleSegment implements ASTNode {
     
     private String keyGenerateStrategyColumn;
     
-    private FunctionSegment tableStrategy;
+    private AlgorithmSegment tableStrategy;
     
-    private FunctionSegment keyGenerateStrategy;
+    private AlgorithmSegment keyGenerateStrategy;
 }
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/src/test/java/org/apache/shardingsphere/sharding/distsql/parser/core/ShardingRuleStatementParserEngineTest.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/src/test/java/org/apache/shardingsphere/sharding/distsql/parser/core/ShardingRuleStatementParserEngineTest.java
index 5db4b06..dc2efa0 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/src/test/java/org/apache/shardingsphere/sharding/distsql/parser/core/ShardingRuleStatementParserEngineTest.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/src/test/java/org/apache/shardingsphere/sharding/distsql/parser/core/ShardingRuleStatementParserEngineTest.java
@@ -96,11 +96,11 @@ public final class ShardingRuleStatementParserEngineTest {
         assertThat(tableRuleSegment.getLogicTable(), is("t_order"));
         
assertTrue(tableRuleSegment.getDataSources().containsAll(Arrays.asList("ms_group_0",
 "ms_group_1")));
         assertThat(tableRuleSegment.getTableStrategyColumn(), is("order_id"));
-        
assertThat(tableRuleSegment.getKeyGenerateStrategy().getAlgorithmName(), 
is("snowflake"));
-        
assertThat(tableRuleSegment.getKeyGenerateStrategy().getAlgorithmProps().getProperty("worker-id"),
 is("123"));
+        assertThat(tableRuleSegment.getKeyGenerateStrategy().getName(), 
is("snowflake"));
+        
assertThat(tableRuleSegment.getKeyGenerateStrategy().getProps().getProperty("worker-id"),
 is("123"));
         assertThat(tableRuleSegment.getKeyGenerateStrategyColumn(), 
is("another_id"));
-        assertThat(tableRuleSegment.getTableStrategy().getAlgorithmName(), 
is("hash_mod"));
-        
assertThat(tableRuleSegment.getTableStrategy().getAlgorithmProps().getProperty("sharding-count"),
 is("4"));
+        assertThat(tableRuleSegment.getTableStrategy().getName(), 
is("hash_mod"));
+        
assertThat(tableRuleSegment.getTableStrategy().getProps().getProperty("sharding-count"),
 is("4"));
     }
     
     @Test
@@ -132,11 +132,11 @@ public final class ShardingRuleStatementParserEngineTest {
         assertThat(tableRuleSegment.getLogicTable(), is("t_order"));
         
assertTrue(tableRuleSegment.getDataSources().containsAll(Arrays.asList("ms_group_0",
 "ms_group_1")));
         assertThat(tableRuleSegment.getTableStrategyColumn(), is("order_id"));
-        
assertThat(tableRuleSegment.getKeyGenerateStrategy().getAlgorithmName(), 
is("snowflake"));
-        
assertThat(tableRuleSegment.getKeyGenerateStrategy().getAlgorithmProps().getProperty("worker-id"),
 is("123"));
+        assertThat(tableRuleSegment.getKeyGenerateStrategy().getName(), 
is("snowflake"));
+        
assertThat(tableRuleSegment.getKeyGenerateStrategy().getProps().getProperty("worker-id"),
 is("123"));
         assertThat(tableRuleSegment.getKeyGenerateStrategyColumn(), 
is("another_id"));
-        assertThat(tableRuleSegment.getTableStrategy().getAlgorithmName(), 
is("hash_mod"));
-        
assertThat(tableRuleSegment.getTableStrategy().getAlgorithmProps().getProperty("sharding-count"),
 is("4"));
+        assertThat(tableRuleSegment.getTableStrategy().getName(), 
is("hash_mod"));
+        
assertThat(tableRuleSegment.getTableStrategy().getProps().getProperty("sharding-count"),
 is("4"));
     }
     
     @Test
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterEncryptRuleBackendHandler.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterEncryptRuleBackendHandler.java
index 55f1443..36aa7f5 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterEncryptRuleBackendHandler.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterEncryptRuleBackendHandler.java
@@ -101,7 +101,7 @@ public final class AlterEncryptRuleBackendHandler extends 
RDLBackendHandler<Alte
     private void checkEncryptors(final AlterEncryptRuleStatement sqlStatement) 
{
         Collection<String> encryptors = new LinkedHashSet<>();
         sqlStatement.getRules().forEach(each -> 
encryptors.addAll(each.getColumns().stream()
-                .map(column -> 
column.getEncryptor().getAlgorithmName()).collect(Collectors.toSet())));
+                .map(column -> 
column.getEncryptor().getName()).collect(Collectors.toSet())));
         Collection<String> invalidEncryptors = encryptors.stream().filter(each 
-> !TypedSPIRegistry.findRegisteredService(EncryptAlgorithm.class, each, new 
Properties()).isPresent())
                 .collect(Collectors.toList());
         if (!invalidEncryptors.isEmpty()) {
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterShardingTableRuleBackendHandler.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterShardingTableRuleBackendHandler.java
index ae0c731..eb2d7dd 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterShardingTableRuleBackendHandler.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterShardingTableRuleBackendHandler.java
@@ -78,7 +78,7 @@ public final class AlterShardingTableRuleBackendHandler 
extends RDLBackendHandle
         if (!notExistTables.isEmpty()) {
             throw new ShardingTableRuleNotExistedException(schemaName, 
notExistTables);
         }
-        Collection<String> invalidTableAlgorithms = 
sqlStatement.getRules().stream().map(each -> 
each.getTableStrategy().getAlgorithmName()).distinct()
+        Collection<String> invalidTableAlgorithms = 
sqlStatement.getRules().stream().map(each -> 
each.getTableStrategy().getName()).distinct()
                 .filter(each -> 
!TypedSPIRegistry.findRegisteredService(ShardingAlgorithm.class, each, new 
Properties()).isPresent())
                 .collect(Collectors.toList());
         if (!invalidTableAlgorithms.isEmpty()) {
@@ -144,6 +144,6 @@ public final class AlterShardingTableRuleBackendHandler 
extends RDLBackendHandle
     
     private Collection<String> getKeyGenerators(final 
AlterShardingTableRuleStatement sqlStatement) {
         return sqlStatement.getRules().stream().filter(each -> 
Objects.nonNull(each.getKeyGenerateStrategy()))
-                .map(each -> 
each.getKeyGenerateStrategy().getAlgorithmName()).collect(Collectors.toSet());
+                .map(each -> 
each.getKeyGenerateStrategy().getName()).collect(Collectors.toSet());
     }
 }
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateEncryptRuleBackendHandler.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateEncryptRuleBackendHandler.java
index 8dbb3e0..e8ff769 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateEncryptRuleBackendHandler.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateEncryptRuleBackendHandler.java
@@ -90,7 +90,7 @@ public final class CreateEncryptRuleBackendHandler extends 
RDLBackendHandler<Cre
     private void checkEncryptors(final CreateEncryptRuleStatement 
sqlStatement) {
         Collection<String> encryptors = new LinkedHashSet<>();
         sqlStatement.getRules().forEach(each -> 
encryptors.addAll(each.getColumns().stream()
-                .map(column -> 
column.getEncryptor().getAlgorithmName()).collect(Collectors.toSet())));
+                .map(column -> 
column.getEncryptor().getName()).collect(Collectors.toSet())));
         Collection<String> invalidEncryptors = encryptors.stream().filter(
             each -> 
!TypedSPIRegistry.findRegisteredService(EncryptAlgorithm.class, each, new 
Properties()).isPresent()).collect(Collectors.toList());
         if (!invalidEncryptors.isEmpty()) {
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateShardingTableRuleBackendHandler.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateShardingTableRuleBackendHandler.java
index 0716776..34c8638 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateShardingTableRuleBackendHandler.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateShardingTableRuleBackendHandler.java
@@ -75,7 +75,7 @@ public final class CreateShardingTableRuleBackendHandler 
extends RDLBackendHandl
         if (!duplicateTableNames.isEmpty()) {
             throw new DuplicateTablesException(duplicateTableNames);
         }
-        Collection<String> invalidTableAlgorithms = 
sqlStatement.getRules().stream().map(each -> 
each.getTableStrategy().getAlgorithmName()).distinct()
+        Collection<String> invalidTableAlgorithms = 
sqlStatement.getRules().stream().map(each -> 
each.getTableStrategy().getName()).distinct()
                 .filter(each -> 
!TypedSPIRegistry.findRegisteredService(ShardingAlgorithm.class, each, new 
Properties()).isPresent())
                 .collect(Collectors.toList());
         if (!invalidTableAlgorithms.isEmpty()) {
@@ -126,6 +126,6 @@ public final class CreateShardingTableRuleBackendHandler 
extends RDLBackendHandl
     
     private Collection<String> getKeyGenerators(final 
CreateShardingTableRuleStatement sqlStatement) {
         return sqlStatement.getRules().stream().filter(each -> 
Objects.nonNull(each.getKeyGenerateStrategy()))
-                .map(each -> 
each.getKeyGenerateStrategy().getAlgorithmName()).collect(Collectors.toSet());
+                .map(each -> 
each.getKeyGenerateStrategy().getName()).collect(Collectors.toSet());
     }
 }
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterEncryptRuleBackendHandlerTest.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterEncryptRuleBackendHandlerTest.java
index aec9f62..97d3144 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterEncryptRuleBackendHandlerTest.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterEncryptRuleBackendHandlerTest.java
@@ -17,7 +17,7 @@
 
 package org.apache.shardingsphere.proxy.backend.text.distsql.rdl.impl;
 
-import org.apache.shardingsphere.distsql.parser.segment.FunctionSegment;
+import org.apache.shardingsphere.distsql.parser.segment.AlgorithmSegment;
 import org.apache.shardingsphere.encrypt.api.config.EncryptRuleConfiguration;
 import 
org.apache.shardingsphere.encrypt.api.config.rule.EncryptTableRuleConfiguration;
 import 
org.apache.shardingsphere.encrypt.distsql.parser.statement.AlterEncryptRuleStatement;
@@ -126,7 +126,7 @@ public final class AlterEncryptRuleBackendHandlerTest {
         result.setName("user_id");
         result.setPlainColumn("user_plain");
         result.setCipherColumn("user_cipher");
-        result.setEncryptor(new FunctionSegment(encryptorName, new 
Properties()));
+        result.setEncryptor(new AlgorithmSegment(encryptorName, new 
Properties()));
         return Collections.singleton(result);
     }
 }
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterShardingTableRuleBackendHandlerTest.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterShardingTableRuleBackendHandlerTest.java
index 8e85ba2..2f7dc74 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterShardingTableRuleBackendHandlerTest.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterShardingTableRuleBackendHandlerTest.java
@@ -17,7 +17,7 @@
 
 package org.apache.shardingsphere.proxy.backend.text.distsql.rdl.impl;
 
-import org.apache.shardingsphere.distsql.parser.segment.FunctionSegment;
+import org.apache.shardingsphere.distsql.parser.segment.AlgorithmSegment;
 import 
org.apache.shardingsphere.sharding.distsql.parser.statement.segment.TableRuleSegment;
 import 
org.apache.shardingsphere.sharding.distsql.parser.statement.AlterShardingTableRuleStatement;
 import org.apache.shardingsphere.infra.config.RuleConfiguration;
@@ -101,7 +101,7 @@ public final class AlterShardingTableRuleBackendHandlerTest 
{
     public void assertExecute() {
         TableRuleSegment tableRuleSegment = new TableRuleSegment();
         tableRuleSegment.setLogicTable("t_order");
-        tableRuleSegment.setTableStrategy(new FunctionSegment("hash_mod", new 
Properties()));
+        tableRuleSegment.setTableStrategy(new AlgorithmSegment("hash_mod", new 
Properties()));
         tableRuleSegment.setDataSources(Collections.singleton("ds_0"));
         tableRuleSegment.setTableStrategyColumn("order_id");
         
when(ruleMetaData.getConfigurations()).thenReturn(buildShardingConfigurations());
@@ -140,7 +140,7 @@ public final class AlterShardingTableRuleBackendHandlerTest 
{
         TableRuleSegment tableRuleSegment = new TableRuleSegment();
         tableRuleSegment.setLogicTable("t_order_item");
         tableRuleSegment.setDataSources(Collections.emptyList());
-        tableRuleSegment.setTableStrategy(new 
FunctionSegment("algorithm-not-exist", new Properties()));
+        tableRuleSegment.setTableStrategy(new 
AlgorithmSegment("algorithm-not-exist", new Properties()));
         
when(sqlStatement.getRules()).thenReturn(Collections.singleton(tableRuleSegment));
         
when(ruleMetaData.getConfigurations()).thenReturn(buildShardingConfigurations());
         handler.execute("test", sqlStatement);
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateEncryptRuleBackendHandlerTest.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateEncryptRuleBackendHandlerTest.java
index 7ace988..8d3e4bc 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateEncryptRuleBackendHandlerTest.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateEncryptRuleBackendHandlerTest.java
@@ -18,7 +18,7 @@
 package org.apache.shardingsphere.proxy.backend.text.distsql.rdl.impl;
 
 import com.google.common.collect.Maps;
-import org.apache.shardingsphere.distsql.parser.segment.FunctionSegment;
+import org.apache.shardingsphere.distsql.parser.segment.AlgorithmSegment;
 import 
org.apache.shardingsphere.encrypt.distsql.parser.statement.segment.EncryptColumnSegment;
 import 
org.apache.shardingsphere.encrypt.distsql.parser.statement.segment.EncryptRuleSegment;
 import 
org.apache.shardingsphere.encrypt.distsql.parser.statement.CreateEncryptRuleStatement;
@@ -114,7 +114,7 @@ public final class CreateEncryptRuleBackendHandlerTest {
         result.setName("user_id");
         result.setPlainColumn("user_plain");
         result.setCipherColumn("user_cipher");
-        result.setEncryptor(new FunctionSegment(encryptorName, new 
Properties()));
+        result.setEncryptor(new AlgorithmSegment(encryptorName, new 
Properties()));
         return Collections.singleton(result);
     }
 }
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateShardingTableRuleBackendHandlerTest.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateShardingTableRuleBackendHandlerTest.java
index 9359861..34df58a 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateShardingTableRuleBackendHandlerTest.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateShardingTableRuleBackendHandlerTest.java
@@ -17,7 +17,7 @@
 
 package org.apache.shardingsphere.proxy.backend.text.distsql.rdl.impl;
 
-import org.apache.shardingsphere.distsql.parser.segment.FunctionSegment;
+import org.apache.shardingsphere.distsql.parser.segment.AlgorithmSegment;
 import 
org.apache.shardingsphere.sharding.distsql.parser.statement.segment.TableRuleSegment;
 import 
org.apache.shardingsphere.sharding.distsql.parser.statement.CreateShardingTableRuleStatement;
 import org.apache.shardingsphere.infra.context.metadata.MetaDataContexts;
@@ -87,7 +87,7 @@ public final class CreateShardingTableRuleBackendHandlerTest {
         TableRuleSegment tableRuleSegment = new TableRuleSegment();
         tableRuleSegment.setLogicTable("t_order_item");
         tableRuleSegment.setDataSources(Collections.emptyList());
-        tableRuleSegment.setTableStrategy(new FunctionSegment("hash_mod", new 
Properties()));
+        tableRuleSegment.setTableStrategy(new AlgorithmSegment("hash_mod", new 
Properties()));
         ResponseHeader responseHeader = handler.execute("test", sqlStatement);
         assertNotNull(responseHeader);
         assertTrue(responseHeader instanceof UpdateResponseHeader);
@@ -116,7 +116,7 @@ public final class 
CreateShardingTableRuleBackendHandlerTest {
         TableRuleSegment tableRuleSegment = new TableRuleSegment();
         tableRuleSegment.setLogicTable("t_order_item");
         tableRuleSegment.setDataSources(Collections.emptyList());
-        tableRuleSegment.setTableStrategy(new 
FunctionSegment("algorithm-not-exist", new Properties()));
+        tableRuleSegment.setTableStrategy(new 
AlgorithmSegment("algorithm-not-exist", new Properties()));
         
when(sqlStatement.getRules()).thenReturn(Collections.singleton(tableRuleSegment));
         handler.execute("test", sqlStatement);
     }

Reply via email to