You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2021/06/29 01:30:17 UTC

[shardingsphere] branch master updated: Redesign JAXB domain of DistSQL for issue#11020 (#11045)

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

panjuan 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 8ee0074  Redesign JAXB domain of DistSQL for  issue#11020 (#11045)
8ee0074 is described below

commit 8ee0074d018ce56487bc0138d84acc097c28002b
Author: totalo <48...@qq.com>
AuthorDate: Tue Jun 29 09:29:45 2021 +0800

    Redesign JAXB domain of DistSQL for  issue#11020 (#11045)
    
    * redesign distsql parse test
    
    * Canonical label name
---
 .../asserts/segment/distsql/TableRuleAssert.java   |   2 +-
 .../segment/distsql/rdl/EncryptRuleAssert.java     |   2 +-
 .../rdl/ShardingBindingTableRuleAssert.java        |   2 +-
 .../AlterDatabaseDiscoveryRuleStatementAssert.java |   2 +-
 .../impl/AlterEncryptRuleStatementAssert.java      |   4 +-
 ...AlterReadwriteSplittingRuleStatementAssert.java |   2 +-
 .../AlterShardingTableRuleStatementAssert.java     |   2 +-
 ...CreateDatabaseDiscoveryRuleStatementAssert.java |   2 +-
 .../impl/CreateEncryptRuleStatementAssert.java     |   4 +-
 ...reateReadwriteSplittingRuleStatementAssert.java |   2 +-
 .../CreateShardingTableRuleStatementAssert.java    |   3 +-
 .../DropDatabaseDiscoveryRuleStatementAssert.java  |   2 +-
 .../DropReadwriteSplittingRuleStatementAssert.java |   2 +-
 .../segment/impl/distsql/ExpectedAlgorithm.java    |   5 +-
 .../segment/impl/distsql/ExpectedDataSource.java   |  21 ++--
 .../segment/impl/distsql/ExpectedTableRule.java    |  12 +-
 .../rdl/ExceptedReadwriteSplittingRule.java        |  10 +-
 .../distsql/rdl/ExpectedDatabaseDiscoveryRule.java |   6 +-
 .../impl/distsql/rdl/ExpectedEncryptColumn.java    |   8 +-
 .../impl/distsql/rdl/ExpectedEncryptRule.java      |   3 -
 .../rdl/ExpectedShardingBindingTableRule.java      |   6 +-
 .../impl/ShowEncryptRulesStatementTestCase.java    |   5 +-
 .../ShowShardingTableRulesStatementTestCase.java   |   5 +-
 ...lterDataBaseDiscoveryRuleStatementTestCase.java |   4 +-
 .../alter/AlterEncryptRuleStatementTestCase.java   |   4 +-
 ...terReadWriteSplittingRuleStatementTestCase.java |   4 +-
 ...ShardingBindingTableRulesStatementTestCase.java |   2 +-
 .../AlterShardingTableRuleStatementTestCase.java   |   4 +-
 .../rdl/create/AddResourceStatementTestCase.java   |   2 +-
 ...eateDataBaseDiscoveryRuleStatementTestCase.java |   4 +-
 .../create/CreateEncryptRuleStatementTestCase.java |   4 +-
 ...ateReadWriteSplittingRuleStatementTestCase.java |   4 +-
 ...ShardingBindingTableRulesStatementTestCase.java |   2 +-
 .../CreateShardingTableRuleStatementTestCase.java  |   4 +-
 ...DropDataBaseDiscoveryRuleStatementTestCase.java |   4 +-
 ...ropReadWriteSplittingRuleStatementTestCase.java |   4 +-
 .../src/main/resources/case/rdl/alter.xml          |  95 ++++++----------
 .../src/main/resources/case/rdl/create.xml         | 121 ++++++---------------
 .../src/main/resources/case/rdl/drop.xml           |   8 +-
 .../src/main/resources/case/rql/show.xml           |   4 +-
 40 files changed, 145 insertions(+), 241 deletions(-)

diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/distsql/TableRuleAssert.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/distsql/TableRuleAssert.java
index 94c0b78..34be0f6 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/distsql/TableRuleAssert.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/distsql/TableRuleAssert.java
@@ -47,7 +47,7 @@ public final class TableRuleAssert {
         } else {
             assertNotNull(assertContext.getText("Actual should exist."), actual);
             assertThat(assertContext.getText(String.format("`%s`'s table rule segment assertion error: ", actual.getClass().getSimpleName())),
-                    actual.getLogicTable(), CoreMatchers.is(expected.getLogicTable()));
+                    actual.getLogicTable(), CoreMatchers.is(expected.getName()));
             assertThat(assertContext.getText(String.format("`%s`'s table rule segment assertion error: ", actual.getClass().getSimpleName())),
                     actual.getDataSources(), CoreMatchers.is(expected.getDataSources()));
             assertThat(assertContext.getText(String.format("`%s`'s table rule segment assertion error: ", actual.getClass().getSimpleName())),
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/distsql/rdl/EncryptRuleAssert.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/distsql/rdl/EncryptRuleAssert.java
index 34db4fe..83ad12b 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/distsql/rdl/EncryptRuleAssert.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/distsql/rdl/EncryptRuleAssert.java
@@ -51,7 +51,7 @@ public final class EncryptRuleAssert {
             assertNull(assertContext.getText("Actual should not exist."), actual);
         } else {
             assertNotNull(assertContext.getText("Actual should exist."), actual);
-            assertThat(assertContext.getText("encrypt rule assertion error: "), actual.getTableName(), is(expected.getTableName()));
+            assertThat(assertContext.getText("encrypt rule assertion error: "), actual.getTableName(), is(expected.getName()));
             assertEncryptColumns(assertContext, actual.getColumns(), expected.getColumns());
         }
     }
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/distsql/rdl/ShardingBindingTableRuleAssert.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/distsql/rdl/ShardingBindingTableRuleAssert.java
index c6e68bd..32571ff 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/distsql/rdl/ShardingBindingTableRuleAssert.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/distsql/rdl/ShardingBindingTableRuleAssert.java
@@ -47,7 +47,7 @@ public final class ShardingBindingTableRuleAssert {
         } else {
             assertNotNull(assertContext.getText("Actual should exist."), actual);
             assertThat(assertContext.getText(String.format("`%s`'s sharding binding table rule segment assertion error: ",
-                    actual.getClass().getSimpleName())), actual.getTableGroups(), is(expected.getTables()));
+                    actual.getClass().getSimpleName())), actual.getTableGroups(), is(expected.getTableGroups()));
         }
     }
 }
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/alter/impl/AlterDatabaseDiscoveryRuleStatementAssert.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/alter/impl/AlterDatabaseDiscoveryRuleStatementAssert.java
index 658a7d2..f708443 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/alter/impl/AlterDatabaseDiscoveryRuleStatementAssert.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/alter/impl/AlterDatabaseDiscoveryRuleStatementAssert.java
@@ -52,7 +52,7 @@ public final class AlterDatabaseDiscoveryRuleStatementAssert {
             assertNull(assertContext.getText("Actual should not exist."), actual);
         } else {
             assertNotNull(assertContext.getText("Actual should exist."), actual);
-            assertDatabaseDiscoveryRules(assertContext, actual.getRules(), expected.getDatabaseDiscoveryRules());
+            assertDatabaseDiscoveryRules(assertContext, actual.getRules(), expected.getRules());
             
         }
     }
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/alter/impl/AlterEncryptRuleStatementAssert.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/alter/impl/AlterEncryptRuleStatementAssert.java
index 943dbbb..62bf0c1 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/alter/impl/AlterEncryptRuleStatementAssert.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/alter/impl/AlterEncryptRuleStatementAssert.java
@@ -52,7 +52,7 @@ public final class AlterEncryptRuleStatementAssert {
             assertNull(assertContext.getText("Actual should not exist."), actual);
         } else {
             assertNotNull(assertContext.getText("Actual should exist."), actual);
-            assertEncryptRules(assertContext, actual.getRules(), expected.getEncryptRules());
+            assertEncryptRules(assertContext, actual.getRules(), expected.getRules());
         }
     }
     
@@ -65,7 +65,7 @@ public final class AlterEncryptRuleStatementAssert {
             int count = 0;
             for (EncryptRuleSegment encryptRuleSegment : actual) {
                 ExpectedEncryptRule expectedEncryptRule = expected.get(count);
-                assertThat(assertContext.getText("encrypt rule table name assertion error: "), encryptRuleSegment.getTableName(), is(expectedEncryptRule.getTableName()));
+                assertThat(assertContext.getText("encrypt rule table name assertion error: "), encryptRuleSegment.getTableName(), is(expectedEncryptRule.getName()));
                 EncryptRuleAssert.assertIs(assertContext, encryptRuleSegment, expectedEncryptRule);
             }
         }
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/alter/impl/AlterReadwriteSplittingRuleStatementAssert.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/alter/impl/AlterReadwriteSplittingRuleStatementAssert.java
index 9d7da3c..79a1205 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/alter/impl/AlterReadwriteSplittingRuleStatementAssert.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/alter/impl/AlterReadwriteSplittingRuleStatementAssert.java
@@ -52,7 +52,7 @@ public final class AlterReadwriteSplittingRuleStatementAssert {
             assertNull(assertContext.getText("Actual should not exist."), actual);
         } else {
             assertNotNull(assertContext.getText("Actual should exist."), actual);
-            assertReadwriteSplittingRule(assertContext, actual.getRules(), expected.getReadwriteSplittingRules());
+            assertReadwriteSplittingRule(assertContext, actual.getRules(), expected.getRules());
         }
     }
     
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/alter/impl/AlterShardingTableRuleStatementAssert.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/alter/impl/AlterShardingTableRuleStatementAssert.java
index 5c9fe65..ea6038d 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/alter/impl/AlterShardingTableRuleStatementAssert.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/alter/impl/AlterShardingTableRuleStatementAssert.java
@@ -50,7 +50,7 @@ public final class AlterShardingTableRuleStatementAssert {
             assertNull(assertContext.getText("Actual should not exist."), actual);
         } else {
             assertNotNull(assertContext.getText("Actual should exist."), actual);
-            assertShardingTableRules(assertContext, actual.getRules(), expected.getTableRules());
+            assertShardingTableRules(assertContext, actual.getRules(), expected.getRules());
         }
     }
     
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/create/impl/CreateDatabaseDiscoveryRuleStatementAssert.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/create/impl/CreateDatabaseDiscoveryRuleStatementAssert.java
index 5bc3adb..5bd5704 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/create/impl/CreateDatabaseDiscoveryRuleStatementAssert.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/create/impl/CreateDatabaseDiscoveryRuleStatementAssert.java
@@ -52,7 +52,7 @@ public final class CreateDatabaseDiscoveryRuleStatementAssert {
             assertNull(assertContext.getText("Actual should not exist."), actual);
         } else {
             assertNotNull(assertContext.getText("Actual should exist."), actual);
-            assertDatabaseDiscoveryRules(assertContext, actual.getRules(), expected.getDatabaseDiscoveryRules());
+            assertDatabaseDiscoveryRules(assertContext, actual.getRules(), expected.getRules());
         }
     }
     
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/create/impl/CreateEncryptRuleStatementAssert.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/create/impl/CreateEncryptRuleStatementAssert.java
index ce10a0c..7cd6c32 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/create/impl/CreateEncryptRuleStatementAssert.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/create/impl/CreateEncryptRuleStatementAssert.java
@@ -52,7 +52,7 @@ public final class CreateEncryptRuleStatementAssert {
             assertNull(assertContext.getText("Actual should not exist."), actual);   
         } else {
             assertNotNull(assertContext.getText("Actual should exist."), actual);
-            assertEncryptRules(assertContext, actual.getRules(), expected.getEncryptRules());
+            assertEncryptRules(assertContext, actual.getRules(), expected.getRules());
         }
     }
     
@@ -66,7 +66,7 @@ public final class CreateEncryptRuleStatementAssert {
             int count = 0;
             for (EncryptRuleSegment encryptRuleSegment : actual) {
                 ExpectedEncryptRule expectedEncryptRule = expected.get(count);
-                assertThat(assertContext.getText("encrypt rule assertion error: "), encryptRuleSegment.getTableName(), is(expectedEncryptRule.getTableName()));
+                assertThat(assertContext.getText("encrypt rule assertion error: "), encryptRuleSegment.getTableName(), is(expectedEncryptRule.getName()));
                 EncryptRuleAssert.assertIs(assertContext, encryptRuleSegment, expectedEncryptRule);
                 count++;
             }
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/create/impl/CreateReadwriteSplittingRuleStatementAssert.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/create/impl/CreateReadwriteSplittingRuleStatementAssert.java
index dba6f21..9bb653b 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/create/impl/CreateReadwriteSplittingRuleStatementAssert.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/create/impl/CreateReadwriteSplittingRuleStatementAssert.java
@@ -52,7 +52,7 @@ public final class CreateReadwriteSplittingRuleStatementAssert {
             assertNull(assertContext.getText("Actual should not exist."), actual);
         } else {
             assertNotNull(assertContext.getText("Actual should exist."), actual);
-            assertReadwriteSplittingRule(assertContext, actual.getRules(), expected.getReadwriteSplittingRules());
+            assertReadwriteSplittingRule(assertContext, actual.getRules(), expected.getRules());
         }
     }
     
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/create/impl/CreateShardingTableRuleStatementAssert.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/create/impl/CreateShardingTableRuleStatementAssert.java
index 50f5c4c..d0640c2 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/create/impl/CreateShardingTableRuleStatementAssert.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/create/impl/CreateShardingTableRuleStatementAssert.java
@@ -50,7 +50,7 @@ public final class CreateShardingTableRuleStatementAssert {
             assertNull(assertContext.getText("Actual should not exist."), actual);
         } else {
             assertNotNull(assertContext.getText("Actual should exist."), actual);
-            assertShardingTableRules(assertContext, actual.getRules(), expected.getTableRules());
+            assertShardingTableRules(assertContext, actual.getRules(), expected.getRules());
         }
     }
 
@@ -63,6 +63,7 @@ public final class CreateShardingTableRuleStatementAssert {
             for (TableRuleSegment tableRuleSegment : actual) {
                 ExpectedTableRule expectedTableRule = expected.get(count);
                 TableRuleAssert.assertIs(assertContext, tableRuleSegment, expectedTableRule);
+                count++;
             }
         }
     }
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/drop/impl/DropDatabaseDiscoveryRuleStatementAssert.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/drop/impl/DropDatabaseDiscoveryRuleStatementAssert.java
index 58277e5..e04f571 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/drop/impl/DropDatabaseDiscoveryRuleStatementAssert.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/drop/impl/DropDatabaseDiscoveryRuleStatementAssert.java
@@ -46,7 +46,7 @@ public final class DropDatabaseDiscoveryRuleStatementAssert {
             assertNull(assertContext.getText("Actual should not exist."), actual);
         } else {
             assertNotNull(assertContext.getText("Actual should exist."), actual);
-            assertThat(assertContext.getText("database discovery rule assertion error: "), actual.getRuleNames(), is(expected.getDatabaseDiscoveryRules()));
+            assertThat(assertContext.getText("database discovery rule assertion error: "), actual.getRuleNames(), is(expected.getRules()));
         }
     }
 }
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/drop/impl/DropReadwriteSplittingRuleStatementAssert.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/drop/impl/DropReadwriteSplittingRuleStatementAssert.java
index 7317069..cd43b6f 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/drop/impl/DropReadwriteSplittingRuleStatementAssert.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/drop/impl/DropReadwriteSplittingRuleStatementAssert.java
@@ -46,7 +46,7 @@ public final class DropReadwriteSplittingRuleStatementAssert {
             assertNull(assertContext.getText("Actual should not exist."), actual);
         } else {
             assertNotNull(assertContext.getText("Actual should exist."), actual);
-            assertThat(assertContext.getText("read-write splitting assertion error: "), actual.getRuleNames(), is(expected.getReadwriteSplittingRules()));
+            assertThat(assertContext.getText("read-write splitting assertion error: "), actual.getRuleNames(), is(expected.getRules()));
         }
     }
 }
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/distsql/ExpectedAlgorithm.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/distsql/ExpectedAlgorithm.java
index 73554e8..f7a2671 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/distsql/ExpectedAlgorithm.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/distsql/ExpectedAlgorithm.java
@@ -21,6 +21,7 @@ import lombok.Getter;
 import lombok.Setter;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.AbstractExpectedIdentifierSQLSegment;
 
+import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
 
 /**
@@ -29,8 +30,8 @@ import javax.xml.bind.annotation.XmlElement;
 @Getter
 @Setter
 public final class ExpectedAlgorithm extends AbstractExpectedIdentifierSQLSegment {
-    
-    @XmlElement(name = "algorithm-name")
+
+    @XmlAttribute(name = "algorithm-name")
     private String name;
     
     @XmlElement(name = "properties")
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/distsql/ExpectedDataSource.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/distsql/ExpectedDataSource.java
index d2968f4..324822c 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/distsql/ExpectedDataSource.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/distsql/ExpectedDataSource.java
@@ -19,32 +19,29 @@ 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.statement.SQLParserTestCase;
+import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.AbstractExpectedIdentifierSQLSegment;
 
-import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlAttribute;
 
 /**
- * Expected lock clause.
+ * Expected data source.
  */
 @Getter
 @Setter
-public final class ExpectedDataSource extends SQLParserTestCase {
+public final class ExpectedDataSource extends AbstractExpectedIdentifierSQLSegment {
     
-    @XmlElement
-    private String name;
-    
-    @XmlElement
+    @XmlAttribute(name = "host-name")
     private String hostName;
     
-    @XmlElement
+    @XmlAttribute
     private String port;
     
-    @XmlElement
+    @XmlAttribute
     private String db;
     
-    @XmlElement
+    @XmlAttribute
     private String user;
     
-    @XmlElement
+    @XmlAttribute
     private String password;
 }
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/distsql/ExpectedTableRule.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/distsql/ExpectedTableRule.java
index 1530da7..0077eec 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/distsql/ExpectedTableRule.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/distsql/ExpectedTableRule.java
@@ -19,8 +19,9 @@ 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.statement.SQLParserTestCase;
+import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.AbstractExpectedIdentifierSQLSegment;
 
+import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
 import java.util.List;
 
@@ -29,18 +30,15 @@ import java.util.List;
  */
 @Getter
 @Setter
-public final class ExpectedTableRule extends SQLParserTestCase {
-    
-    @XmlElement(name = "table")
-    private String logicTable;
+public final class ExpectedTableRule extends AbstractExpectedIdentifierSQLSegment {
     
     @XmlElement(name = "data-source")
     private List<String> dataSources;
     
-    @XmlElement(name = "table-strategy-column")
+    @XmlAttribute(name = "table-strategy-column")
     private String tableStrategyColumn;
     
-    @XmlElement(name = "key-generate-strategy-column")
+    @XmlAttribute(name = "key-generate-strategy-column")
     private String keyGenerateStrategyColumn;
     
     @XmlElement(name = "table-strategy")
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/distsql/rdl/ExceptedReadwriteSplittingRule.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/distsql/rdl/ExceptedReadwriteSplittingRule.java
index 4a36ff7..1b19ef2 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/distsql/rdl/ExceptedReadwriteSplittingRule.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/distsql/rdl/ExceptedReadwriteSplittingRule.java
@@ -22,6 +22,7 @@ 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.ExpectedProperties;
 
+import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
 import java.util.List;
 
@@ -32,19 +33,16 @@ import java.util.List;
 @Setter
 public final class ExceptedReadwriteSplittingRule extends AbstractExpectedIdentifierSQLSegment {
     
-    @XmlElement
-    private String name;
-    
-    @XmlElement(name = "auto-aware-resource")
+    @XmlAttribute(name = "auto-aware-resource")
     private String autoAwareResource;
     
-    @XmlElement(name = "write-data-source")
+    @XmlAttribute(name = "write-data-source")
     private String writeDataSource;
     
     @XmlElement(name = "read-data-source")
     private List<String> readDataSources;
     
-    @XmlElement(name = "load-balancer")
+    @XmlAttribute(name = "load-balancer")
     private String loadBalancer;
     
     @XmlElement(name = "properties")
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/distsql/rdl/ExpectedDatabaseDiscoveryRule.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/distsql/rdl/ExpectedDatabaseDiscoveryRule.java
index 2024e37..7519a03 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/distsql/rdl/ExpectedDatabaseDiscoveryRule.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/distsql/rdl/ExpectedDatabaseDiscoveryRule.java
@@ -22,6 +22,7 @@ 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.ExpectedProperties;
 
+import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
 import java.util.List;
 
@@ -32,13 +33,10 @@ import java.util.List;
 @Setter
 public final class ExpectedDatabaseDiscoveryRule extends AbstractExpectedIdentifierSQLSegment {
     
-    @XmlElement
-    private String name;
-    
     @XmlElement(name = "data-source")
     private List<String> dataSources;
     
-    @XmlElement(name = "discovery-type")
+    @XmlAttribute(name = "type")
     private String discoveryTypeName;
     
     @XmlElement(name = "properties")
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/distsql/rdl/ExpectedEncryptColumn.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/distsql/rdl/ExpectedEncryptColumn.java
index 5720652..0556ed0 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/distsql/rdl/ExpectedEncryptColumn.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/distsql/rdl/ExpectedEncryptColumn.java
@@ -22,6 +22,7 @@ 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;
 
 /**
@@ -31,13 +32,10 @@ import javax.xml.bind.annotation.XmlElement;
 @Setter
 public final class ExpectedEncryptColumn extends AbstractExpectedIdentifierSQLSegment {
     
-    @XmlElement
-    private String name;
-    
-    @XmlElement(name = "plain-column")
+    @XmlAttribute(name = "plain-column")
     private String plainColumn;
     
-    @XmlElement(name = "cipher-column")
+    @XmlAttribute(name = "cipher-column")
     private String cipherColumn;
     
     @XmlElement
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/distsql/rdl/ExpectedEncryptRule.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/distsql/rdl/ExpectedEncryptRule.java
index 6e23df0..e046c92 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/distsql/rdl/ExpectedEncryptRule.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/distsql/rdl/ExpectedEncryptRule.java
@@ -31,9 +31,6 @@ import java.util.List;
 @Setter
 public final class ExpectedEncryptRule extends AbstractExpectedIdentifierSQLSegment {
     
-    @XmlElement(name = "table")
-    private String tableName;
-    
     @XmlElement(name = "column")
     private List<ExpectedEncryptColumn> columns;
 }
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/distsql/rdl/ExpectedShardingBindingTableRule.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/distsql/rdl/ExpectedShardingBindingTableRule.java
index 4742287..26783b4 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/distsql/rdl/ExpectedShardingBindingTableRule.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/distsql/rdl/ExpectedShardingBindingTableRule.java
@@ -21,7 +21,7 @@ import lombok.Getter;
 import lombok.Setter;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.AbstractExpectedIdentifierSQLSegment;
 
-import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlAttribute;
 
 /**
  * Expected sharding binding table rule.
@@ -30,6 +30,6 @@ import javax.xml.bind.annotation.XmlElement;
 @Setter
 public final class ExpectedShardingBindingTableRule extends AbstractExpectedIdentifierSQLSegment {
     
-    @XmlElement
-    private String tables;
+    @XmlAttribute(name = "table-groups")
+    private String tableGroups;
 }
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/impl/ShowEncryptRulesStatementTestCase.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/impl/ShowEncryptRulesStatementTestCase.java
index 80fdca6..7ad36df 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/impl/ShowEncryptRulesStatementTestCase.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/impl/ShowEncryptRulesStatementTestCase.java
@@ -22,6 +22,7 @@ import lombok.Setter;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.schema.ExpectedSchema;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.SQLParserTestCase;
 
+import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
 
 /**
@@ -31,8 +32,8 @@ import javax.xml.bind.annotation.XmlElement;
 @Setter
 public final class ShowEncryptRulesStatementTestCase extends SQLParserTestCase {
     
-    @XmlElement(name = "table")
-    private String tableName;
+    @XmlAttribute
+    private String name;
     
     @XmlElement
     private ExpectedSchema schema;
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/impl/ShowShardingTableRulesStatementTestCase.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/impl/ShowShardingTableRulesStatementTestCase.java
index 881e91d..39176ed 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/impl/ShowShardingTableRulesStatementTestCase.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/impl/ShowShardingTableRulesStatementTestCase.java
@@ -22,6 +22,7 @@ import lombok.Setter;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.schema.ExpectedSchema;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.SQLParserTestCase;
 
+import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
 
 /**
@@ -31,8 +32,8 @@ import javax.xml.bind.annotation.XmlElement;
 @Setter
 public final class ShowShardingTableRulesStatementTestCase extends SQLParserTestCase {
     
-    @XmlElement(name = "table")
-    private String tableName;
+    @XmlAttribute
+    private String name;
     
     @XmlElement
     private ExpectedSchema schema;
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/alter/AlterDataBaseDiscoveryRuleStatementTestCase.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/alter/AlterDataBaseDiscoveryRuleStatementTestCase.java
index f040606..ac61467 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/alter/AlterDataBaseDiscoveryRuleStatementTestCase.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/alter/AlterDataBaseDiscoveryRuleStatementTestCase.java
@@ -33,6 +33,6 @@ import java.util.List;
 @Setter
 public final class AlterDataBaseDiscoveryRuleStatementTestCase extends SQLParserTestCase {
     
-    @XmlElement(name = "database-discovery")
-    private final List<ExpectedDatabaseDiscoveryRule> databaseDiscoveryRules = new LinkedList<>();
+    @XmlElement(name = "rule")
+    private final List<ExpectedDatabaseDiscoveryRule> rules = new LinkedList<>();
 }
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/alter/AlterEncryptRuleStatementTestCase.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/alter/AlterEncryptRuleStatementTestCase.java
index 0dc50e4..13ae578 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/alter/AlterEncryptRuleStatementTestCase.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/alter/AlterEncryptRuleStatementTestCase.java
@@ -33,6 +33,6 @@ import java.util.List;
 @Setter
 public final class AlterEncryptRuleStatementTestCase extends SQLParserTestCase {
     
-    @XmlElement(name = "encrypt-rule")
-    private final List<ExpectedEncryptRule> encryptRules = new LinkedList<>();
+    @XmlElement(name = "rule")
+    private final List<ExpectedEncryptRule> rules = new LinkedList<>();
 }
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/alter/AlterReadWriteSplittingRuleStatementTestCase.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/alter/AlterReadWriteSplittingRuleStatementTestCase.java
index 57c1979..6056af2 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/alter/AlterReadWriteSplittingRuleStatementTestCase.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/alter/AlterReadWriteSplittingRuleStatementTestCase.java
@@ -33,6 +33,6 @@ import java.util.List;
 @Setter
 public final class AlterReadWriteSplittingRuleStatementTestCase extends SQLParserTestCase {
     
-    @XmlElement(name = "read-write-splitting")
-    private List<ExceptedReadwriteSplittingRule> readwriteSplittingRules = new LinkedList<>();
+    @XmlElement(name = "rule")
+    private List<ExceptedReadwriteSplittingRule> rules = new LinkedList<>();
 }
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/alter/AlterShardingBindingTableRulesStatementTestCase.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/alter/AlterShardingBindingTableRulesStatementTestCase.java
index 4b0be90..7361f4e 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/alter/AlterShardingBindingTableRulesStatementTestCase.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/alter/AlterShardingBindingTableRulesStatementTestCase.java
@@ -33,6 +33,6 @@ import java.util.List;
 @Setter
 public final class AlterShardingBindingTableRulesStatementTestCase extends SQLParserTestCase {
     
-    @XmlElement(name = "rules")
+    @XmlElement(name = "rule")
     private final List<ExpectedShardingBindingTableRule> rules = new LinkedList<>();
 }
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/alter/AlterShardingTableRuleStatementTestCase.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/alter/AlterShardingTableRuleStatementTestCase.java
index d54fe46..8d75a45 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/alter/AlterShardingTableRuleStatementTestCase.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/alter/AlterShardingTableRuleStatementTestCase.java
@@ -33,6 +33,6 @@ import java.util.List;
 @Setter
 public final class AlterShardingTableRuleStatementTestCase extends SQLParserTestCase {
     
-    @XmlElement(name = "tables")
-    private final List<ExpectedTableRule> tableRules = new LinkedList<>();
+    @XmlElement(name = "rule")
+    private final List<ExpectedTableRule> rules = new LinkedList<>();
 }
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/create/AddResourceStatementTestCase.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/create/AddResourceStatementTestCase.java
index d676ba7..4c39e58 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/create/AddResourceStatementTestCase.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/create/AddResourceStatementTestCase.java
@@ -33,6 +33,6 @@ import java.util.List;
 @Setter
 public final class AddResourceStatementTestCase extends SQLParserTestCase {
     
-    @XmlElement(name = "dataSource")
+    @XmlElement(name = "data-source")
     private final List<ExpectedDataSource> dataSources = new LinkedList<>();
 }
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/create/CreateDataBaseDiscoveryRuleStatementTestCase.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/create/CreateDataBaseDiscoveryRuleStatementTestCase.java
index 86ecd5a..1618c7b 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/create/CreateDataBaseDiscoveryRuleStatementTestCase.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/create/CreateDataBaseDiscoveryRuleStatementTestCase.java
@@ -33,6 +33,6 @@ import java.util.List;
 @Setter
 public final class CreateDataBaseDiscoveryRuleStatementTestCase extends SQLParserTestCase {
     
-    @XmlElement(name = "database-discovery")
-    private final List<ExpectedDatabaseDiscoveryRule> databaseDiscoveryRules = new LinkedList<>();
+    @XmlElement(name = "rule")
+    private final List<ExpectedDatabaseDiscoveryRule> rules = new LinkedList<>();
 }
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/create/CreateEncryptRuleStatementTestCase.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/create/CreateEncryptRuleStatementTestCase.java
index 43b84a3..65e1ae2 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/create/CreateEncryptRuleStatementTestCase.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/create/CreateEncryptRuleStatementTestCase.java
@@ -33,6 +33,6 @@ import java.util.List;
 @Setter
 public final class CreateEncryptRuleStatementTestCase extends SQLParserTestCase {
     
-    @XmlElement(name = "encrypt-rule")
-    private final List<ExpectedEncryptRule> encryptRules = new LinkedList<>();
+    @XmlElement(name = "rule")
+    private final List<ExpectedEncryptRule> rules = new LinkedList<>();
 }
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/create/CreateReadWriteSplittingRuleStatementTestCase.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/create/CreateReadWriteSplittingRuleStatementTestCase.java
index 9716d2b..407f671 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/create/CreateReadWriteSplittingRuleStatementTestCase.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/create/CreateReadWriteSplittingRuleStatementTestCase.java
@@ -33,6 +33,6 @@ import java.util.List;
 @Setter
 public final class CreateReadWriteSplittingRuleStatementTestCase extends SQLParserTestCase {
     
-    @XmlElement(name = "read-write-splitting")
-    private List<ExceptedReadwriteSplittingRule> readwriteSplittingRules = new LinkedList<>();
+    @XmlElement(name = "rule")
+    private List<ExceptedReadwriteSplittingRule> rules = new LinkedList<>();
 }
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/create/CreateShardingBindingTableRulesStatementTestCase.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/create/CreateShardingBindingTableRulesStatementTestCase.java
index fe6e308..aa8d52e 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/create/CreateShardingBindingTableRulesStatementTestCase.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/create/CreateShardingBindingTableRulesStatementTestCase.java
@@ -33,6 +33,6 @@ import java.util.List;
 @Setter
 public final class CreateShardingBindingTableRulesStatementTestCase extends SQLParserTestCase {
     
-    @XmlElement(name = "rules")
+    @XmlElement(name = "rule")
     private final List<ExpectedShardingBindingTableRule> rules = new LinkedList<>();
 }
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/create/CreateShardingTableRuleStatementTestCase.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/create/CreateShardingTableRuleStatementTestCase.java
index c60c0f1..3fa942c 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/create/CreateShardingTableRuleStatementTestCase.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/create/CreateShardingTableRuleStatementTestCase.java
@@ -33,6 +33,6 @@ import java.util.List;
 @Setter
 public final class CreateShardingTableRuleStatementTestCase extends SQLParserTestCase {
     
-    @XmlElement(name = "tables")
-    private final List<ExpectedTableRule> tableRules = new LinkedList<>();
+    @XmlElement(name = "rule")
+    private final List<ExpectedTableRule> rules = new LinkedList<>();
 }
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/drop/DropDataBaseDiscoveryRuleStatementTestCase.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/drop/DropDataBaseDiscoveryRuleStatementTestCase.java
index 1feb744..4a998af 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/drop/DropDataBaseDiscoveryRuleStatementTestCase.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/drop/DropDataBaseDiscoveryRuleStatementTestCase.java
@@ -32,6 +32,6 @@ import java.util.List;
 @Setter
 public final class DropDataBaseDiscoveryRuleStatementTestCase extends SQLParserTestCase {
     
-    @XmlElement(name = "rule-name")
-    private final List<String> databaseDiscoveryRules = new LinkedList<>();
+    @XmlElement(name = "rule")
+    private final List<String> rules = new LinkedList<>();
 }
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/drop/DropReadWriteSplittingRuleStatementTestCase.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/drop/DropReadWriteSplittingRuleStatementTestCase.java
index 7595d12..4a1bf71 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/drop/DropReadWriteSplittingRuleStatementTestCase.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/drop/DropReadWriteSplittingRuleStatementTestCase.java
@@ -32,6 +32,6 @@ import java.util.List;
 @Setter
 public final class DropReadWriteSplittingRuleStatementTestCase extends SQLParserTestCase {
     
-    @XmlElement(name = "read-write-splitting-rule")
-    private List<String> readwriteSplittingRules = new LinkedList<>();
+    @XmlElement(name = "rule")
+    private List<String> rules = new LinkedList<>();
 }
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/rdl/alter.xml b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/rdl/alter.xml
index 03a6411..41d2e87 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/rdl/alter.xml
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/rdl/alter.xml
@@ -18,104 +18,75 @@
 
 <sql-parser-test-cases>
     <alter-sharding-table-rule sql-case-id="alter-sharding-table-rule">
-        <tables>
-            <table>t_order</table>
+        <rule name="t_order" table-strategy-column="order_id" key-generate-strategy-column="another_id">
             <data-source>ms_group_0</data-source>
             <data-source>ms_group_1</data-source>
-            <table-strategy-column>order_id</table-strategy-column>
-            <key-generate-strategy-column>another_id</key-generate-strategy-column>
-            <table-strategy>
-                <algorithm-name>hash_mod</algorithm-name>
+            <table-strategy algorithm-name="hash_mod">
                 <properties>
-                    <property key="sharding-count" value="4" />
+                    <property key="sharding-count" value="4"/>
                 </properties>
             </table-strategy>
-            <key-generate-strategy>
-                <algorithm-name>snowflake</algorithm-name>
+            <key-generate-strategy algorithm-name="snowflake">
                 <properties>
-                    <property key="worker-id" value="123" />
+                    <property key="worker-id" value="123"/>
                 </properties>
             </key-generate-strategy>
-        </tables>
+        </rule>
     </alter-sharding-table-rule>
-    
+
     <alter-sharding-binding-table-rules sql-case-id="alter-sharding-binding-table-rules">
-        <rules>
-            <tables>t_order,t_order_item</tables>
-        </rules>
-        <rules>
-            <tables>t_1,t_2</tables>
-        </rules>
+        <rule table-groups="t_order,t_order_item"/>
+        <rule table-groups="t_1,t_2"/>
     </alter-sharding-binding-table-rules>
-    
+
     <alter-sharding-broadcast-table-rules sql-case-id="alter-sharding-broadcast-table-rules">
         <table>t_1</table>
         <table>t_2</table>
     </alter-sharding-broadcast-table-rules>
-    
+
     <alter-readwrite-splitting-rule sql-case-id="alter-readwrite-splitting-rule">
-        <read-write-splitting>
-            <name>ms_group_0</name>
-            <auto-aware-resource>group_0</auto-aware-resource>
-            <load-balancer>random</load-balancer>
+        <rule name="ms_group_0" auto-aware-resource="group_0" load-balancer="random">
             <properties>
-                <property key="read_weight" value="'2:1'" />
+                <property key="read_weight" value="'2:1'"/>
             </properties>
-        </read-write-splitting>
-        <read-write-splitting>
-            <name>ms_group_1</name>
-            <write-data-source>primary_ds</write-data-source>
+        </rule>
+        <rule name="ms_group_1" write-data-source="primary_ds" load-balancer="random">
             <read-data-source>replica_ds_0</read-data-source>
             <read-data-source>replica_ds_1</read-data-source>
-            <load-balancer>random</load-balancer>
-            <properties />
-        </read-write-splitting>
+        </rule>
     </alter-readwrite-splitting-rule>
-    
+
     <alter-database-discovery-rule sql-case-id="alter-database-discovery-rule">
-        <database-discovery>
-            <name>ha_group_0</name>
+        <rule name="ha_group_0" type="mgr">
             <data-source>resource0</data-source>
             <data-source>resource1</data-source>
-            <discovery-type>mgr</discovery-type>
             <properties>
-                <property key="keepAliveCron" value="" />
-                <property key="groupName" value="92504d5b-6dec" />
+                <property key="keepAliveCron" value=""/>
+                <property key="groupName" value="92504d5b-6dec"/>
             </properties>
-        </database-discovery>
-        <database-discovery>
-            <name>ha_group_1</name>
+        </rule>
+        <rule name="ha_group_1" type="mgr2">
             <data-source>resource2</data-source>
             <data-source>resource3</data-source>
-            <discovery-type>mgr2</discovery-type>
             <properties>
-                <property key="keepAliveCron" value="" />
-                <property key="groupName" value="92504d5b-6dec-2" />
+                <property key="keepAliveCron" value=""/>
+                <property key="groupName" value="92504d5b-6dec-2"/>
             </properties>
-        </database-discovery>
+        </rule>
     </alter-database-discovery-rule>
-    
+
     <alter-encrypt-rule sql-case-id="alter-encrypt-rule">
-        <encrypt-rule>
-            <table>t_encrypt</table>
-            <column>
-                <name>user_id</name>
-                <plain-column>user_plain</plain-column>
-                <cipher-column>user_cipher</cipher-column>
-                <encryptor>
-                    <algorithm-name>AES</algorithm-name>
+        <rule name="t_encrypt">
+            <column name="user_id" plain-column="user_plain" cipher-column="user_cipher">
+                <encryptor algorithm-name="AES">
                     <properties>
-                        <property key="aes-key-value" value="123456abc" />
+                        <property key="aes-key-value" value="123456abc"/>
                     </properties>
                 </encryptor>
             </column>
-            <column>
-                <name>order_id</name>
-                <cipher-column>order_cipher</cipher-column>
-                <encryptor>
-                    <algorithm-name>MD5</algorithm-name>
-                </encryptor>
+            <column name="order_id" cipher-column="order_cipher">
+                <encryptor algorithm-name="MD5"/>
             </column>
-        </encrypt-rule>
+        </rule>
     </alter-encrypt-rule>
 </sql-parser-test-cases>
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/rdl/create.xml b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/rdl/create.xml
index c9bd05e..121021a 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/rdl/create.xml
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/rdl/create.xml
@@ -18,75 +18,38 @@
 
 <sql-parser-test-cases>
     <add-resource sql-case-id="add-resource-single-without-password">
-        <dataSource>
-            <name>ds_0</name>
-            <hostName>127.0.0.1</hostName>
-            <port>3306</port>
-            <db>test0</db>
-            <user>ROOT</user>
-            <password />
-        </dataSource>
+        <data-source name="ds_0" host-name="127.0.0.1" port="3306" db="test0" user="ROOT" password=""/>
     </add-resource>
     
     <add-resource sql-case-id="add-resource-single-with-password">
-        <dataSource>
-            <name>ds_0</name>
-            <hostName>127.0.0.1</hostName>
-            <port>3306</port>
-            <db>test0</db>
-            <user>ROOT</user>
-            <password>123456</password>
-        </dataSource>
+        <data-source name="ds_0" host-name="127.0.0.1" port="3306" db="test0" user="ROOT" password="123456"/>
     </add-resource>
     
     <add-resource sql-case-id="add-resource-multiple">
-        <dataSource>
-            <name>ds_0</name>
-            <hostName>127.0.0.1</hostName>
-            <port>3306</port>
-            <db>test0</db>
-            <user>ROOT</user>
-            <password>123456</password>
-        </dataSource>
-        <dataSource>
-            <name>ds_1</name>
-            <hostName>127.0.0.1</hostName>
-            <port>3306</port>
-            <db>test1</db>
-            <user>ROOT</user>
-            <password>123456</password>
-        </dataSource>
+        <data-source name="ds_0" host-name="127.0.0.1" port="3306" db="test0" user="ROOT" password="123456"/>
+        <data-source name="ds_1" host-name="127.0.0.1" port="3306" db="test1" user="ROOT" password="123456"/>
     </add-resource>
     
     <create-sharding-table-rule sql-case-id="create-sharding-table-rule">
-        <tables>
-            <table>t_order</table>
+        <rule name="t_order" table-strategy-column="order_id" key-generate-strategy-column="another_id">
             <data-source>ms_group_0</data-source>
             <data-source>ms_group_1</data-source>
-            <table-strategy-column>order_id</table-strategy-column>
-            <key-generate-strategy-column>another_id</key-generate-strategy-column>
-            <table-strategy>
-                <algorithm-name>hash_mod</algorithm-name>
+            <table-strategy algorithm-name="hash_mod">
                 <properties>
-                    <property key="sharding-count" value="4" />
+                    <property key="sharding-count" value="4"/>
                 </properties>
             </table-strategy>
-            <key-generate-strategy>
-                <algorithm-name>snowflake</algorithm-name>
+            <key-generate-strategy algorithm-name="snowflake">
                 <properties>
-                    <property key="worker-id" value="123" />
+                    <property key="worker-id" value="123"/>
                 </properties>
             </key-generate-strategy>
-        </tables>
+        </rule>
     </create-sharding-table-rule>
     
     <create-sharding-binding-table-rule sql-case-id="create-sharding-binding-table-rule">
-        <rules>
-            <tables>t_order,t_order_item</tables>
-        </rules>
-        <rules>
-            <tables>t_1,t_2</tables>
-        </rules>
+        <rule table-groups="t_order,t_order_item"/>
+        <rule table-groups="t_1,t_2"/>
     </create-sharding-binding-table-rule>
     
     <create-sharding-broadcast-table-rule sql-case-id="create-sharding-broadcast-table-rule">
@@ -95,71 +58,51 @@
     </create-sharding-broadcast-table-rule>
     
     <create-readwrite-splitting-rule sql-case-id="create-static-readwrite-splitting-rule">
-        <read-write-splitting>
-            <name>ms_group_0</name>
-            <write-data-source>primary_ds</write-data-source>
+        <rule name="ms_group_0" write-data-source="primary_ds" load-balancer="random">
             <read-data-source>replica_ds_0</read-data-source>
             <read-data-source>replica_ds_1</read-data-source>
-            <load-balancer>random</load-balancer>
-            <properties />
-        </read-write-splitting>
+        </rule>
     </create-readwrite-splitting-rule>
     
     <create-readwrite-splitting-rule sql-case-id="create-dynamic-readwrite-splitting-rule">
-        <read-write-splitting>
-            <name>ms_group_1</name>
-            <auto-aware-resource>group_0</auto-aware-resource>
-            <load-balancer>random</load-balancer>
+        <rule name="ms_group_1" auto-aware-resource="group_0" load-balancer="random">
             <properties>
-                <property key="read_weight" value="'2:1'" />
+                <property key="read_weight" value="'2:1'"/>
             </properties>
-        </read-write-splitting>
+        </rule>
     </create-readwrite-splitting-rule>
     
     <create-database-discovery-rule sql-case-id="create-database-discovery-rule">
-        <database-discovery>
-            <name>ha_group_0</name>
+        <rule name="ha_group_0" type="mgr">
             <data-source>resource0</data-source>
             <data-source>resource1</data-source>
-            <discovery-type>mgr</discovery-type>
             <properties>
-                <property key="keepAliveCron" value="" />
-                <property key="groupName" value="92504d5b-6dec" />
+                <property key="keepAliveCron" value=""/>
+                <property key="groupName" value="92504d5b-6dec"/>
             </properties>
-        </database-discovery>
-        <database-discovery>
-            <name>ha_group_1</name>
+        </rule>
+        <rule name="ha_group_1" type="mgr2">
             <data-source>resource2</data-source>
             <data-source>resource3</data-source>
-            <discovery-type>mgr2</discovery-type>
             <properties>
-                <property key="keepAliveCron" value="" />
-                <property key="groupName" value="92504d5b-6dec-2" />
+                <property key="keepAliveCron" value=""/>
+                <property key="groupName" value="92504d5b-6dec-2"/>
             </properties>
-        </database-discovery>
+        </rule>
     </create-database-discovery-rule>
     
     <create-encrypt-rule sql-case-id="create-encrypt-rule">
-        <encrypt-rule>
-            <table>t_encrypt</table>
-            <column>
-                <name>user_id</name>
-                <plain-column>user_plain</plain-column>
-                <cipher-column>user_cipher</cipher-column>
-                <encryptor>
-                    <algorithm-name>AES</algorithm-name>
+        <rule name="t_encrypt">
+            <column name="user_id" plain-column="user_plain" cipher-column="user_cipher">
+                <encryptor algorithm-name="AES">
                     <properties>
-                        <property key="aes-key-value" value="123456abc" />
+                        <property key="aes-key-value" value="123456abc"/>
                     </properties>
                 </encryptor>
             </column>
-            <column>
-                <name>order_id</name>
-                <cipher-column>order_cipher</cipher-column>
-                <encryptor>
-                    <algorithm-name>MD5</algorithm-name>
-                </encryptor>
+            <column name="order_id" cipher-column="order_cipher">
+                <encryptor algorithm-name="MD5"/>
             </column>
-        </encrypt-rule>
+        </rule>
     </create-encrypt-rule>
 </sql-parser-test-cases>
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/rdl/drop.xml b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/rdl/drop.xml
index 61c88ec..9c6e7d9 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/rdl/drop.xml
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/rdl/drop.xml
@@ -29,13 +29,13 @@
     <drop-sharding-broadcast-table-rules sql-case-id="drop-sharding-broadcast-table-rules" />
     
     <drop-readwrite-splitting-rule sql-case-id="drop-readwrite-splitting-rule">
-        <read-write-splitting-rule>ms_group_0</read-write-splitting-rule>
-        <read-write-splitting-rule>ms_group_1</read-write-splitting-rule>
+        <rule>ms_group_0</rule>
+        <rule>ms_group_1</rule>
     </drop-readwrite-splitting-rule>
     
     <drop-database-discovery-rule sql-case-id="drop-database-discovery-rule">
-        <rule-name>ha_group_0</rule-name>
-        <rule-name>ha_group_1</rule-name>
+        <rule>ha_group_0</rule>
+        <rule>ha_group_1</rule>
     </drop-database-discovery-rule>
     
     <drop-encrypt-rule sql-case-id="drop-encrypt-rule">
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/rql/show.xml b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/rql/show.xml
index 4a05cd2..feb0932 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/rql/show.xml
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/rql/show.xml
@@ -30,11 +30,11 @@
     </show-sharding-table-rules>
     
     <show-sharding-table-rules sql-case-id="show-sharding-table-rule">
-        <table>t_order</table>
+        <table name="t_order" />
     </show-sharding-table-rules>
     
     <show-sharding-table-rules sql-case-id="show-sharding-table-rule-from">
-        <table>t_order</table>
+        <table name="t_order" />
         <schema name="schemaName" start-index="38" stop-index="47"/>
     </show-sharding-table-rules>