You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by me...@apache.org on 2021/01/01 08:59:52 UTC

[shardingsphere] branch master updated: Simplify case JAXB definition class and xml (#8855)

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

menghaoran 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 8fa3a23  Simplify case JAXB definition class and xml (#8855)
8fa3a23 is described below

commit 8fa3a23ccef4b98c6d2004848ec099766a7e1783
Author: Liang Zhang <te...@163.com>
AuthorDate: Fri Jan 1 16:59:15 2021 +0800

    Simplify case JAXB definition class and xml (#8855)
    
    * Use lambda to refactor DataSet
    
    * For code format
    
    * Add IntegrateTestCaseAssertionInitialSQL
    
    * Rename xml field of IntegrateTestCaseAssertionInitialSQL
    
    * Move IntegrateTestCaseAssertionInitialSQL
    
    * Refactor DDLIntegrateTestCaseAssertion
    
    * Remove useless XXX IntegrateTestCaseAssertion
    
    * Remove useless XXX IntegrateTestCase
    
    * Rename xml tag to test-case
    
    * Rename useless XXX IntegrateTestCases
    
    * Refactor IntegrateTestCasesLoader
    
    * Refactor IntegrateTestCasesLoader
    
    * Refactor IntegrateTestCasesLoader
    
    * Move IntegrateTestCaseContext
    
    * Remove assertion.root package
    
    * Refactor IntegrateTestCase
    
    * Move IntegrateTestCases
    
    * Move SQLCaseType
    
    * Add value package
    
    * Refactor cases package
---
 .../{assertion => }/IntegrateTestCaseContext.java  |   4 +-
 ...grateTestCases.java => IntegrateTestCases.java} |  12 +-
 .../{assertion => }/IntegrateTestCasesLoader.java  |  49 +--
 .../assertion/{root => }/IntegrateTestCase.java    |  16 +-
 .../{root => }/IntegrateTestCaseAssertion.java     |  11 +-
 ...a => IntegrateTestCaseAssertionInitialSQL.java} |  18 +-
 .../cases/assertion/dcl/DCLIntegrateTestCase.java  |  35 --
 .../dcl/DCLIntegrateTestCaseAssertion.java         |  28 --
 .../cases/assertion/dcl/DCLIntegrateTestCases.java |  37 --
 .../cases/assertion/ddl/DDLIntegrateTestCase.java  |  35 --
 .../cases/assertion/dml/DMLIntegrateTestCase.java  |  35 --
 .../dml/DMLIntegrateTestCaseAssertion.java         |  28 --
 .../cases/assertion/dml/DMLIntegrateTestCases.java |  37 --
 .../cases/assertion/dql/DQLIntegrateTestCase.java  |  35 --
 .../dql/DQLIntegrateTestCaseAssertion.java         |  26 --
 .../cases/assertion/dql/DQLIntegrateTestCases.java |  37 --
 .../cases/assertion/root/IntegrateTestCases.java   |  30 --
 .../test/integration/cases/dataset/DataSet.java    |  32 +-
 .../cases/{assertion/root => value}/SQLValue.java  |   4 +-
 .../{assertion/root => value}/SQLValueGroup.java   |   2 +-
 .../test/integration/engine/it/BatchIT.java        |   6 +-
 .../test/integration/engine/it/SingleIT.java       |   6 +-
 .../test/integration/engine/it/dcl/BaseDCLIT.java  |   6 +-
 .../integration/engine/it/dcl/GeneralDCLIT.java    |   8 +-
 .../test/integration/engine/it/ddl/BaseDDLIT.java  |  18 +-
 .../integration/engine/it/ddl/GeneralDDLIT.java    |   6 +-
 .../integration/engine/it/dml/AdditionalDMLIT.java |  12 +-
 .../test/integration/engine/it/dml/BaseDMLIT.java  |   6 +-
 .../test/integration/engine/it/dml/BatchDMLIT.java |  10 +-
 .../integration/engine/it/dml/GeneralDMLIT.java    |  10 +-
 .../integration/engine/it/dql/AdditionalDQLIT.java |  12 +-
 .../test/integration/engine/it/dql/BaseDQLIT.java  |   6 +-
 .../integration/engine/it/dql/GeneralDQLIT.java    |  12 +-
 .../engine/param/IntegrateTestParameters.java      |  11 +-
 .../root => engine/param}/SQLCaseType.java         |   2 +-
 .../env/dataset/DataSetEnvironmentManager.java     |   4 +-
 .../cases/dcl/dcl-integrate-test-cases.xml         | 326 +++++++-------
 .../cases/ddl/ddl-integrate-test-cases.xml         |  68 +--
 .../cases/dml/dml-integrate-test-cases.xml         | 128 +++---
 .../cases/dql/dql-integrate-test-cases.xml         | 486 ++++++++++-----------
 40 files changed, 642 insertions(+), 1012 deletions(-)

diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/IntegrateTestCaseContext.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/IntegrateTestCaseContext.java
similarity index 92%
rename from shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/IntegrateTestCaseContext.java
rename to shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/IntegrateTestCaseContext.java
index f78430d..3969049 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/IntegrateTestCaseContext.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/IntegrateTestCaseContext.java
@@ -15,11 +15,11 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.test.integration.cases.assertion;
+package org.apache.shardingsphere.test.integration.cases;
 
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.test.integration.cases.assertion.root.IntegrateTestCase;
+import org.apache.shardingsphere.test.integration.cases.assertion.IntegrateTestCase;
 
 /**
  * Integrate test case context.
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/ddl/DDLIntegrateTestCases.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/IntegrateTestCases.java
similarity index 76%
rename from shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/ddl/DDLIntegrateTestCases.java
rename to shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/IntegrateTestCases.java
index d29d616..816baef 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/ddl/DDLIntegrateTestCases.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/IntegrateTestCases.java
@@ -15,10 +15,10 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.test.integration.cases.assertion.ddl;
+package org.apache.shardingsphere.test.integration.cases;
 
 import lombok.Getter;
-import org.apache.shardingsphere.test.integration.cases.assertion.root.IntegrateTestCases;
+import org.apache.shardingsphere.test.integration.cases.assertion.IntegrateTestCase;
 
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlRootElement;
@@ -26,12 +26,12 @@ import java.util.LinkedList;
 import java.util.List;
 
 /**
- * JAXB definition of DDL integrate test cases.
+ * JAXB definition of integrate test cases.
  */
 @Getter
 @XmlRootElement(name = "integrate-test-cases")
-public final class DDLIntegrateTestCases implements IntegrateTestCases {
+public final class IntegrateTestCases {
     
-    @XmlElement(name = "ddl-test-case")
-    private List<DDLIntegrateTestCase> integrateTestCases = new LinkedList<>();
+    @XmlElement(name = "test-case")
+    private List<IntegrateTestCase> testCases = new LinkedList<>();
 }
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/IntegrateTestCasesLoader.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/IntegrateTestCasesLoader.java
similarity index 54%
rename from shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/IntegrateTestCasesLoader.java
rename to shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/IntegrateTestCasesLoader.java
index 9bcb881..0974c74 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/IntegrateTestCasesLoader.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/IntegrateTestCasesLoader.java
@@ -15,16 +15,10 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.test.integration.cases.assertion;
+package org.apache.shardingsphere.test.integration.cases;
 
 import com.google.common.base.Preconditions;
 import lombok.SneakyThrows;
-import org.apache.shardingsphere.test.integration.cases.IntegrateTestCaseType;
-import org.apache.shardingsphere.test.integration.cases.assertion.dcl.DCLIntegrateTestCases;
-import org.apache.shardingsphere.test.integration.cases.assertion.ddl.DDLIntegrateTestCases;
-import org.apache.shardingsphere.test.integration.cases.assertion.dml.DMLIntegrateTestCases;
-import org.apache.shardingsphere.test.integration.cases.assertion.dql.DQLIntegrateTestCases;
-import org.apache.shardingsphere.test.integration.cases.assertion.root.IntegrateTestCases;
 
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBException;
@@ -39,9 +33,9 @@ import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.nio.file.SimpleFileVisitor;
 import java.nio.file.attribute.BasicFileAttributes;
+import java.util.Collection;
 import java.util.LinkedHashMap;
 import java.util.LinkedList;
-import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
 
@@ -52,7 +46,7 @@ public final class IntegrateTestCasesLoader {
     
     private static final IntegrateTestCasesLoader INSTANCE = new IntegrateTestCasesLoader();
     
-    private final Map<IntegrateTestCaseType, List<IntegrateTestCaseContext>> testCaseContexts = new LinkedHashMap<>();
+    private final Map<IntegrateTestCaseType, Collection<IntegrateTestCaseContext>> testCaseContexts = new LinkedHashMap<>();
     
     /**
      * Get singleton instance.
@@ -69,32 +63,32 @@ public final class IntegrateTestCasesLoader {
      * @param caseType integration test case type
      * @return integrate test case contexts
      */
-    public List<IntegrateTestCaseContext> getTestCaseContexts(final IntegrateTestCaseType caseType) {
+    public Collection<IntegrateTestCaseContext> getTestCaseContexts(final IntegrateTestCaseType caseType) {
         testCaseContexts.putIfAbsent(caseType, loadIntegrateTestCaseContexts(caseType));
         return testCaseContexts.get(caseType);
     }
     
     @SneakyThrows({IOException.class, URISyntaxException.class, JAXBException.class})
-    private List<IntegrateTestCaseContext> loadIntegrateTestCaseContexts(final IntegrateTestCaseType caseType) {
+    private Collection<IntegrateTestCaseContext> loadIntegrateTestCaseContexts(final IntegrateTestCaseType caseType) {
         URL url = IntegrateTestCasesLoader.class.getClassLoader().getResource("integrate/cases/");
         Preconditions.checkNotNull(url, "Can not find integrate test cases.");
         return loadIntegrateTestCaseContexts(url, caseType);
     }
     
-    private List<IntegrateTestCaseContext> loadIntegrateTestCaseContexts(final URL url, final IntegrateTestCaseType caseType) throws IOException, URISyntaxException, JAXBException {
-        List<File> files = getFiles(url, caseType);
+    private Collection<IntegrateTestCaseContext> loadIntegrateTestCaseContexts(final URL url, final IntegrateTestCaseType caseType) throws IOException, URISyntaxException, JAXBException {
+        Collection<File> files = getFiles(url, caseType);
         Preconditions.checkNotNull(files, "Can not find integrate test cases.");
-        List<IntegrateTestCaseContext> result = new LinkedList<>();
+        Collection<IntegrateTestCaseContext> result = new LinkedList<>();
         for (File each : files) {
-            result.addAll(getIntegrateTestCaseContexts(each, caseType));
+            result.addAll(getIntegrateTestCaseContexts(each));
         }
         return result;
     }
     
-    private static List<File> getFiles(final URL url, final IntegrateTestCaseType caseType) throws IOException, URISyntaxException {
-        List<File> result = new LinkedList<>();
+    private static Collection<File> getFiles(final URL url, final IntegrateTestCaseType caseType) throws IOException, URISyntaxException {
+        Collection<File> result = new LinkedList<>();
         Files.walkFileTree(Paths.get(url.toURI()), new SimpleFileVisitor<Path>() {
-
+            
             @Override
             public FileVisitResult visitFile(final Path file, final BasicFileAttributes basicFileAttributes) {
                 if (file.getFileName().toString().startsWith(caseType.getFilePrefix()) && file.getFileName().toString().endsWith(".xml")) {
@@ -106,24 +100,13 @@ public final class IntegrateTestCasesLoader {
         return result;
     }
     
-    private List<IntegrateTestCaseContext> getIntegrateTestCaseContexts(final File file, final IntegrateTestCaseType caseType) throws IOException, JAXBException {
-        return unmarshal(file.getPath(), caseType).getIntegrateTestCases().stream().map(each -> new IntegrateTestCaseContext(each, file.getParent())).collect(Collectors.toList());
+    private Collection<IntegrateTestCaseContext> getIntegrateTestCaseContexts(final File file) throws IOException, JAXBException {
+        return unmarshal(file.getPath()).getTestCases().stream().map(each -> new IntegrateTestCaseContext(each, file.getParent())).collect(Collectors.toList());
     }
     
-    private static IntegrateTestCases unmarshal(final String integrateCasesFile, final IntegrateTestCaseType caseType) throws IOException, JAXBException {
+    private static IntegrateTestCases unmarshal(final String integrateCasesFile) throws IOException, JAXBException {
         try (FileReader reader = new FileReader(integrateCasesFile)) {
-            switch (caseType) {
-                case DQL:
-                    return (DQLIntegrateTestCases) JAXBContext.newInstance(DQLIntegrateTestCases.class).createUnmarshaller().unmarshal(reader);
-                case DML:
-                    return (DMLIntegrateTestCases) JAXBContext.newInstance(DMLIntegrateTestCases.class).createUnmarshaller().unmarshal(reader);
-                case DDL:
-                    return (DDLIntegrateTestCases) JAXBContext.newInstance(DDLIntegrateTestCases.class).createUnmarshaller().unmarshal(reader);
-                case DCL:
-                    return (DCLIntegrateTestCases) JAXBContext.newInstance(DCLIntegrateTestCases.class).createUnmarshaller().unmarshal(reader);
-                default:
-                    throw new UnsupportedOperationException(caseType.getFilePrefix());
-            }
+            return (IntegrateTestCases) JAXBContext.newInstance(IntegrateTestCases.class).createUnmarshaller().unmarshal(reader);
         }
     }
 }
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/root/IntegrateTestCase.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/IntegrateTestCase.java
similarity index 82%
rename from shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/root/IntegrateTestCase.java
rename to shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/IntegrateTestCase.java
index 38b1b09..847825a 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/root/IntegrateTestCase.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/IntegrateTestCase.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.test.integration.cases.assertion.root;
+package org.apache.shardingsphere.test.integration.cases.assertion;
 
 import lombok.Getter;
 import lombok.Setter;
@@ -23,7 +23,9 @@ import lombok.Setter;
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
-import java.util.List;
+import javax.xml.bind.annotation.XmlElement;
+import java.util.Collection;
+import java.util.LinkedList;
 
 /**
  * JAXB definition of integrate test case.
@@ -31,7 +33,7 @@ import java.util.List;
 @Getter
 @Setter
 @XmlAccessorType(XmlAccessType.FIELD)
-public abstract class IntegrateTestCase {
+public final class IntegrateTestCase {
     
     @XmlAttribute(name = "sql")
     private String sql;
@@ -39,10 +41,6 @@ public abstract class IntegrateTestCase {
     @XmlAttribute(name = "db-types")
     private String dbTypes;
     
-    /**
-     * Get integrate test case assertions.
-     * 
-     * @return integrate test case assertions
-     */
-    public abstract List<? extends IntegrateTestCaseAssertion> getIntegrateTestCaseAssertions();
+    @XmlElement(name = "assertion")
+    private Collection<IntegrateTestCaseAssertion> assertions = new LinkedList<>();
 }
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/root/IntegrateTestCaseAssertion.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/IntegrateTestCaseAssertion.java
similarity index 87%
rename from shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/root/IntegrateTestCaseAssertion.java
rename to shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/IntegrateTestCaseAssertion.java
index 5bc3269..83b4617 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/root/IntegrateTestCaseAssertion.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/IntegrateTestCaseAssertion.java
@@ -15,15 +15,17 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.test.integration.cases.assertion.root;
+package org.apache.shardingsphere.test.integration.cases.assertion;
 
 import com.google.common.base.Splitter;
 import lombok.Getter;
 import lombok.Setter;
+import org.apache.shardingsphere.test.integration.cases.value.SQLValue;
 
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
 import java.text.ParseException;
 import java.util.Collection;
 import java.util.Collections;
@@ -36,7 +38,7 @@ import java.util.List;
 @Getter
 @Setter
 @XmlAccessorType(XmlAccessType.FIELD)
-public abstract class IntegrateTestCaseAssertion {
+public final class IntegrateTestCaseAssertion {
     
     @XmlAttribute(name = "expected-data-file")
     private String expectedDataFile;
@@ -44,13 +46,16 @@ public abstract class IntegrateTestCaseAssertion {
     @XmlAttribute
     private String parameters;
     
+    @XmlElement(name = "initial-sql")
+    private IntegrateTestCaseAssertionInitialSQL initialSQL;
+    
     /**
      * Get SQL values.
      * 
      * @return SQL values
      * @throws ParseException parse exception
      */
-    public final Collection<SQLValue> getSQLValues() throws ParseException {
+    public Collection<SQLValue> getSQLValues() throws ParseException {
         if (null == parameters) {
             return Collections.emptyList();
         }
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/ddl/DDLIntegrateTestCaseAssertion.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/IntegrateTestCaseAssertionInitialSQL.java
similarity index 72%
rename from shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/ddl/DDLIntegrateTestCaseAssertion.java
rename to shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/IntegrateTestCaseAssertionInitialSQL.java
index e50c7ae..da43b97 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/ddl/DDLIntegrateTestCaseAssertion.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/IntegrateTestCaseAssertionInitialSQL.java
@@ -15,24 +15,26 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.test.integration.cases.assertion.ddl;
+package org.apache.shardingsphere.test.integration.cases.assertion;
 
 import lombok.Getter;
 import lombok.Setter;
-import org.apache.shardingsphere.test.integration.cases.assertion.root.IntegrateTestCaseAssertion;
 
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 
 /**
- * JAXB definition of DDL integrate test case assertion.
+ * JAXB definition of integrate test case assertion initial SQL.
  */
 @Getter
 @Setter
-public final class DDLIntegrateTestCaseAssertion extends IntegrateTestCaseAssertion {
+@XmlAccessorType(XmlAccessType.FIELD)
+public final class IntegrateTestCaseAssertionInitialSQL {
     
-    @XmlAttribute(name = "init-sql")
-    private String initSQL;
+    @XmlAttribute
+    private String sql;
     
-    @XmlAttribute(name = "table")
-    private String table;
+    @XmlAttribute(name = "affected-table")
+    private String affectedTable;
 }
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/dcl/DCLIntegrateTestCase.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/dcl/DCLIntegrateTestCase.java
deleted file mode 100644
index 9113bd8..0000000
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/dcl/DCLIntegrateTestCase.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.test.integration.cases.assertion.dcl;
-
-import lombok.Getter;
-import org.apache.shardingsphere.test.integration.cases.assertion.root.IntegrateTestCase;
-
-import javax.xml.bind.annotation.XmlElement;
-import java.util.LinkedList;
-import java.util.List;
-
-/**
- * JAXB definition of DCL integrate test case.
- */
-@Getter
-public final class DCLIntegrateTestCase extends IntegrateTestCase {
-    
-    @XmlElement(name = "assertion")
-    private List<DCLIntegrateTestCaseAssertion> integrateTestCaseAssertions = new LinkedList<>();
-}
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/dcl/DCLIntegrateTestCaseAssertion.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/dcl/DCLIntegrateTestCaseAssertion.java
deleted file mode 100644
index d714d76..0000000
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/dcl/DCLIntegrateTestCaseAssertion.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.test.integration.cases.assertion.dcl;
-
-import lombok.Getter;
-import org.apache.shardingsphere.test.integration.cases.assertion.root.IntegrateTestCaseAssertion;
-
-/**
- * JAXB definition of DCL integrate test case assertion.
- */
-@Getter
-public final class DCLIntegrateTestCaseAssertion extends IntegrateTestCaseAssertion {
-}
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/dcl/DCLIntegrateTestCases.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/dcl/DCLIntegrateTestCases.java
deleted file mode 100644
index 47c34a0..0000000
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/dcl/DCLIntegrateTestCases.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.test.integration.cases.assertion.dcl;
-
-import lombok.Getter;
-import org.apache.shardingsphere.test.integration.cases.assertion.root.IntegrateTestCases;
-
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import java.util.LinkedList;
-import java.util.List;
-
-/**
- * JAXB definition of DCL integrate test cases.
- */
-@Getter
-@XmlRootElement(name = "integrate-test-cases")
-public final class DCLIntegrateTestCases implements IntegrateTestCases {
-    
-    @XmlElement(name = "dcl-test-case")
-    private List<DCLIntegrateTestCase> integrateTestCases = new LinkedList<>();
-}
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/ddl/DDLIntegrateTestCase.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/ddl/DDLIntegrateTestCase.java
deleted file mode 100644
index 01afd5a..0000000
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/ddl/DDLIntegrateTestCase.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.test.integration.cases.assertion.ddl;
-
-import lombok.Getter;
-import org.apache.shardingsphere.test.integration.cases.assertion.root.IntegrateTestCase;
-
-import javax.xml.bind.annotation.XmlElement;
-import java.util.LinkedList;
-import java.util.List;
-
-/**
- * JAXB definition of DDL integrate test case.
- */
-@Getter
-public final class DDLIntegrateTestCase extends IntegrateTestCase {
-    
-    @XmlElement(name = "assertion")
-    private List<DDLIntegrateTestCaseAssertion> integrateTestCaseAssertions = new LinkedList<>();
-}
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/dml/DMLIntegrateTestCase.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/dml/DMLIntegrateTestCase.java
deleted file mode 100644
index a6c24c9..0000000
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/dml/DMLIntegrateTestCase.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.test.integration.cases.assertion.dml;
-
-import lombok.Getter;
-import org.apache.shardingsphere.test.integration.cases.assertion.root.IntegrateTestCase;
-
-import javax.xml.bind.annotation.XmlElement;
-import java.util.LinkedList;
-import java.util.List;
-
-/**
- * JAXB definition of DML integrate test case.
- */
-@Getter
-public final class DMLIntegrateTestCase extends IntegrateTestCase {
-    
-    @XmlElement(name = "assertion")
-    private List<DMLIntegrateTestCaseAssertion> integrateTestCaseAssertions = new LinkedList<>();
-}
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/dml/DMLIntegrateTestCaseAssertion.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/dml/DMLIntegrateTestCaseAssertion.java
deleted file mode 100644
index ff750d3..0000000
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/dml/DMLIntegrateTestCaseAssertion.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.test.integration.cases.assertion.dml;
-
-import lombok.Getter;
-import org.apache.shardingsphere.test.integration.cases.assertion.root.IntegrateTestCaseAssertion;
-
-/**
- * JAXB definition of DML integrate test case assertion.
- */
-@Getter
-public final class DMLIntegrateTestCaseAssertion extends IntegrateTestCaseAssertion {
-}
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/dml/DMLIntegrateTestCases.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/dml/DMLIntegrateTestCases.java
deleted file mode 100644
index 6206436..0000000
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/dml/DMLIntegrateTestCases.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.test.integration.cases.assertion.dml;
-
-import lombok.Getter;
-import org.apache.shardingsphere.test.integration.cases.assertion.root.IntegrateTestCases;
-
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import java.util.LinkedList;
-import java.util.List;
-
-/**
- * JAXB definition of DML integrate test cases.
- */
-@Getter
-@XmlRootElement(name = "integrate-test-cases")
-public final class DMLIntegrateTestCases implements IntegrateTestCases {
-    
-    @XmlElement(name = "dml-test-case")
-    private List<DMLIntegrateTestCase> integrateTestCases = new LinkedList<>();
-}
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/dql/DQLIntegrateTestCase.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/dql/DQLIntegrateTestCase.java
deleted file mode 100644
index 30fa4ab..0000000
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/dql/DQLIntegrateTestCase.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.test.integration.cases.assertion.dql;
-
-import lombok.Getter;
-import org.apache.shardingsphere.test.integration.cases.assertion.root.IntegrateTestCase;
-
-import javax.xml.bind.annotation.XmlElement;
-import java.util.LinkedList;
-import java.util.List;
-
-/**
- * JAXB definition of DQL integrate test case.
- */
-@Getter
-public final class DQLIntegrateTestCase extends IntegrateTestCase {
-    
-    @XmlElement(name = "assertion")
-    private List<DQLIntegrateTestCaseAssertion> integrateTestCaseAssertions = new LinkedList<>();
-}
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/dql/DQLIntegrateTestCaseAssertion.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/dql/DQLIntegrateTestCaseAssertion.java
deleted file mode 100644
index a894f7b..0000000
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/dql/DQLIntegrateTestCaseAssertion.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.test.integration.cases.assertion.dql;
-
-import org.apache.shardingsphere.test.integration.cases.assertion.root.IntegrateTestCaseAssertion;
-
-/**
- * JAXB definition of DQL integrate test case assertion.
- */
-public final class DQLIntegrateTestCaseAssertion extends IntegrateTestCaseAssertion {
-}
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/dql/DQLIntegrateTestCases.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/dql/DQLIntegrateTestCases.java
deleted file mode 100644
index 399a004..0000000
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/dql/DQLIntegrateTestCases.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.test.integration.cases.assertion.dql;
-
-import lombok.Getter;
-import org.apache.shardingsphere.test.integration.cases.assertion.root.IntegrateTestCases;
-
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import java.util.LinkedList;
-import java.util.List;
-
-/**
- * JAXB definition of DQL integrate test cases.
- */
-@Getter
-@XmlRootElement(name = "integrate-test-cases")
-public final class DQLIntegrateTestCases implements IntegrateTestCases {
-    
-    @XmlElement(name = "dql-test-case")
-    private List<DQLIntegrateTestCase> integrateTestCases = new LinkedList<>();
-}
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/root/IntegrateTestCases.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/root/IntegrateTestCases.java
deleted file mode 100644
index fcccb24..0000000
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/root/IntegrateTestCases.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.test.integration.cases.assertion.root;
-
-import java.util.List;
-
-public interface IntegrateTestCases {
-    
-    /**
-     * Get integrate test cases.
-     * 
-     * @return integrate test cases
-     */
-    List<? extends IntegrateTestCase> getIntegrateTestCases();
-}
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/dataset/DataSet.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/dataset/DataSet.java
index b5436ed..462ba32 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/dataset/DataSet.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/dataset/DataSet.java
@@ -26,9 +26,10 @@ import org.apache.shardingsphere.test.integration.cases.dataset.row.DataSetRow;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlRootElement;
-import java.util.ArrayList;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
 
 /**
  * Data sets root xml entry.
@@ -53,10 +54,9 @@ public final class DataSet {
      * @return data set meta data belong to current table
      */
     public DataSetMetadata findMetadata(final String tableName) {
-        for (DataSetMetadata each : metadataList) {
-            if (tableName.equals(each.getTableName())) {
-                return each;
-            }
+        Optional<DataSetMetadata> result = metadataList.stream().filter(each -> tableName.equals(each.getTableName())).findFirst();
+        if (result.isPresent()) {
+            return result.get();
         }
         throw new IllegalArgumentException(String.format("Cannot find expected metadata via table name: '%s'", tableName));
     }
@@ -68,21 +68,15 @@ public final class DataSet {
      * @return data set meta data belong to current data node
      */
     public DataSetMetadata findMetadata(final DataNode dataNode) {
-        for (DataSetMetadata each : metadataList) {
-            if (contains(new InlineExpressionParser(each.getDataNodes()).splitAndEvaluate(), dataNode)) {
-                return each;
-            }
+        Optional<DataSetMetadata> result = metadataList.stream().filter(each -> contains(new InlineExpressionParser(each.getDataNodes()).splitAndEvaluate(), dataNode)).findFirst();
+        if (result.isPresent()) {
+            return result.get();
         }
         throw new IllegalArgumentException(String.format("Cannot find data node: %s", dataNode));
     }
     
     private boolean contains(final List<String> dataNodes, final DataNode dataNode) {
-        for (String each : dataNodes) {
-            if (new DataNode(each).equals(dataNode)) {
-                return true;
-            }
-        }
-        return false;
+        return dataNodes.stream().anyMatch(each -> new DataNode(each).equals(dataNode));
     }
     
     /**
@@ -92,12 +86,6 @@ public final class DataSet {
      * @return data set rows belong to current data node
      */
     public List<DataSetRow> findRows(final DataNode dataNode) {
-        List<DataSetRow> result = new ArrayList<>(rows.size());
-        for (DataSetRow each : rows) {
-            if (new DataNode(each.getDataNode()).equals(dataNode)) {
-                result.add(each);
-            }
-        }
-        return result;
+        return rows.stream().filter(each -> new DataNode(each.getDataNode()).equals(dataNode)).collect(Collectors.toList());
     }
 }
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/root/SQLValue.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/value/SQLValue.java
similarity index 95%
rename from shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/root/SQLValue.java
rename to shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/value/SQLValue.java
index 71cae8d..ba2e8aa 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/root/SQLValue.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/value/SQLValue.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.test.integration.cases.assertion.root;
+package org.apache.shardingsphere.test.integration.cases.value;
 
 import lombok.Getter;
 
@@ -54,7 +54,7 @@ public final class SQLValue {
         if ("datetime".equals(type)) {
             return new Date(new SimpleDateFormat("yyyy-MM-dd").parse(value).getTime());
         }
-        throw new UnsupportedOperationException(String.format("Cannot support type: '%s'", type));
+        throw new UnsupportedOperationException(String.format("Cannot support type: `%s`", type));
     }
     
     @Override
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/root/SQLValueGroup.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/value/SQLValueGroup.java
similarity index 95%
rename from shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/root/SQLValueGroup.java
rename to shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/value/SQLValueGroup.java
index 5d17b6a..399f4b1 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/root/SQLValueGroup.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/value/SQLValueGroup.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.test.integration.cases.assertion.root;
+package org.apache.shardingsphere.test.integration.cases.value;
 
 import lombok.Getter;
 import org.apache.shardingsphere.test.integration.cases.dataset.metadata.DataSetMetadata;
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/BatchIT.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/BatchIT.java
index 13ec641..d469e51 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/BatchIT.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/BatchIT.java
@@ -22,8 +22,8 @@ import lombok.Getter;
 import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import org.apache.shardingsphere.infra.datanode.DataNode;
 import org.apache.shardingsphere.sharding.algorithm.sharding.inline.InlineExpressionParser;
-import org.apache.shardingsphere.test.integration.cases.assertion.IntegrateTestCaseContext;
-import org.apache.shardingsphere.test.integration.cases.assertion.root.IntegrateTestCaseAssertion;
+import org.apache.shardingsphere.test.integration.cases.IntegrateTestCaseContext;
+import org.apache.shardingsphere.test.integration.cases.assertion.IntegrateTestCaseAssertion;
 import org.apache.shardingsphere.test.integration.cases.dataset.DataSet;
 import org.apache.shardingsphere.test.integration.cases.dataset.DataSetLoader;
 import org.apache.shardingsphere.test.integration.cases.dataset.metadata.DataSetColumn;
@@ -74,7 +74,7 @@ public abstract class BatchIT extends BaseIT {
         this.testCaseContext = testCaseContext;
         this.sql = sql;
         dataSets = new LinkedList<>();
-        for (IntegrateTestCaseAssertion each : testCaseContext.getTestCase().getIntegrateTestCaseAssertions()) {
+        for (IntegrateTestCaseAssertion each : testCaseContext.getTestCase().getAssertions()) {
             dataSets.add(DataSetLoader.load(testCaseContext.getParentPath(), scenario, databaseType, each.getExpectedDataFile()));
         }
         dataSetEnvironmentManager = new DataSetEnvironmentManager(EnvironmentPath.getDataSetFile(scenario), getActualDataSources());
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/SingleIT.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/SingleIT.java
index 0f42718..d76eb27 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/SingleIT.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/SingleIT.java
@@ -20,9 +20,9 @@ package org.apache.shardingsphere.test.integration.engine.it;
 import lombok.AccessLevel;
 import lombok.Getter;
 import org.apache.shardingsphere.infra.database.type.DatabaseType;
-import org.apache.shardingsphere.test.integration.cases.assertion.root.IntegrateTestCaseAssertion;
-import org.apache.shardingsphere.test.integration.cases.assertion.root.SQLCaseType;
-import org.apache.shardingsphere.test.integration.cases.assertion.root.SQLValue;
+import org.apache.shardingsphere.test.integration.cases.assertion.IntegrateTestCaseAssertion;
+import org.apache.shardingsphere.test.integration.engine.param.SQLCaseType;
+import org.apache.shardingsphere.test.integration.cases.value.SQLValue;
 import org.apache.shardingsphere.test.integration.cases.dataset.DataSet;
 import org.apache.shardingsphere.test.integration.cases.dataset.DataSetLoader;
 import org.apache.shardingsphere.test.integration.engine.watcher.ITWatcher;
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/dcl/BaseDCLIT.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/dcl/BaseDCLIT.java
index 1f5cb3e..3179eec 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/dcl/BaseDCLIT.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/dcl/BaseDCLIT.java
@@ -20,8 +20,8 @@ package org.apache.shardingsphere.test.integration.engine.it.dcl;
 import org.apache.shardingsphere.infra.database.metadata.DataSourceMetaData;
 import org.apache.shardingsphere.infra.database.metadata.MemorizedDataSourceMetaData;
 import org.apache.shardingsphere.infra.database.type.DatabaseType;
-import org.apache.shardingsphere.test.integration.cases.assertion.dcl.DCLIntegrateTestCaseAssertion;
-import org.apache.shardingsphere.test.integration.cases.assertion.root.SQLCaseType;
+import org.apache.shardingsphere.test.integration.cases.assertion.IntegrateTestCaseAssertion;
+import org.apache.shardingsphere.test.integration.engine.param.SQLCaseType;
 import org.apache.shardingsphere.test.integration.engine.it.SingleIT;
 import org.apache.shardingsphere.test.integration.env.EnvironmentPath;
 import org.apache.shardingsphere.test.integration.env.authority.AuthorityEnvironmentManager;
@@ -48,7 +48,7 @@ public abstract class BaseDCLIT extends SingleIT {
     
     private final AuthorityEnvironmentManager authorityEnvironmentManager;
     
-    protected BaseDCLIT(final String parentPath, final DCLIntegrateTestCaseAssertion assertion, final String scenario,
+    protected BaseDCLIT(final String parentPath, final IntegrateTestCaseAssertion assertion, final String scenario,
                         final DatabaseType databaseType, final SQLCaseType caseType, final String sql) throws IOException, JAXBException, SQLException, ParseException {
         super(parentPath, assertion, scenario, databaseType, caseType, sql);
         authorityEnvironmentManager = new AuthorityEnvironmentManager(
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/dcl/GeneralDCLIT.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/dcl/GeneralDCLIT.java
index 9a3c832..a8051ca 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/dcl/GeneralDCLIT.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/dcl/GeneralDCLIT.java
@@ -17,11 +17,11 @@
 
 package org.apache.shardingsphere.test.integration.engine.it.dcl;
 
-import org.apache.shardingsphere.test.integration.cases.assertion.dcl.DCLIntegrateTestCaseAssertion;
-import org.apache.shardingsphere.test.integration.cases.assertion.root.SQLCaseType;
+import org.apache.shardingsphere.infra.database.type.DatabaseTypeRegistry;
 import org.apache.shardingsphere.test.integration.cases.IntegrateTestCaseType;
+import org.apache.shardingsphere.test.integration.cases.assertion.IntegrateTestCaseAssertion;
+import org.apache.shardingsphere.test.integration.engine.param.SQLCaseType;
 import org.apache.shardingsphere.test.integration.engine.param.IntegrateTestParameters;
-import org.apache.shardingsphere.infra.database.type.DatabaseTypeRegistry;
 import org.junit.Test;
 import org.junit.runners.Parameterized.Parameters;
 
@@ -34,7 +34,7 @@ import java.util.Collection;
 
 public final class GeneralDCLIT extends BaseDCLIT {
     
-    public GeneralDCLIT(final String parentPath, final DCLIntegrateTestCaseAssertion assertion, final String scenario,
+    public GeneralDCLIT(final String parentPath, final IntegrateTestCaseAssertion assertion, final String scenario,
                         final String databaseType, final SQLCaseType caseType, final String sql) throws IOException, JAXBException, SQLException, ParseException {
         super(parentPath, assertion, scenario, DatabaseTypeRegistry.getActualDatabaseType(databaseType), caseType, sql);
     }
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/ddl/BaseDDLIT.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/ddl/BaseDDLIT.java
index 145ac42..5021983 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/ddl/BaseDDLIT.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/ddl/BaseDDLIT.java
@@ -18,12 +18,11 @@
 package org.apache.shardingsphere.test.integration.engine.it.ddl;
 
 import com.google.common.base.Splitter;
-import com.google.common.base.Strings;
 import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import org.apache.shardingsphere.infra.datanode.DataNode;
 import org.apache.shardingsphere.sharding.algorithm.sharding.inline.InlineExpressionParser;
-import org.apache.shardingsphere.test.integration.cases.assertion.ddl.DDLIntegrateTestCaseAssertion;
-import org.apache.shardingsphere.test.integration.cases.assertion.root.SQLCaseType;
+import org.apache.shardingsphere.test.integration.cases.assertion.IntegrateTestCaseAssertion;
+import org.apache.shardingsphere.test.integration.engine.param.SQLCaseType;
 import org.apache.shardingsphere.test.integration.cases.dataset.metadata.DataSetColumn;
 import org.apache.shardingsphere.test.integration.cases.dataset.metadata.DataSetIndex;
 import org.apache.shardingsphere.test.integration.cases.dataset.metadata.DataSetMetadata;
@@ -53,16 +52,19 @@ import java.util.stream.Collectors;
 
 import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertThat;
 
 public abstract class BaseDDLIT extends SingleIT {
     
     private final DataSetEnvironmentManager dataSetEnvironmentManager;
     
-    protected BaseDDLIT(final String parentPath, final DDLIntegrateTestCaseAssertion assertion, final String scenario, 
+    protected BaseDDLIT(final String parentPath, final IntegrateTestCaseAssertion assertion, final String scenario,
                         final DatabaseType databaseType, final SQLCaseType caseType, final String sql) throws IOException, JAXBException, SQLException, ParseException {
         super(parentPath, assertion, scenario, databaseType, caseType, sql);
         dataSetEnvironmentManager = new DataSetEnvironmentManager(EnvironmentPath.getDataSetFile(scenario), getActualDataSources());
+        assertNotNull("Expected affected table is required", assertion.getInitialSQL());
+        assertNotNull("Expected affected table is required", assertion.getInitialSQL().getAffectedTable());
     }
     
     @BeforeClass
@@ -86,10 +88,10 @@ public abstract class BaseDDLIT extends SingleIT {
     }
     
     private void executeInitSQLs(final Connection connection) throws SQLException {
-        if (Strings.isNullOrEmpty(((DDLIntegrateTestCaseAssertion) getAssertion()).getInitSQL())) {
+        if (null == getAssertion().getInitialSQL().getSql()) {
             return;
         }
-        for (String each : Splitter.on(";").trimResults().splitToList(((DDLIntegrateTestCaseAssertion) getAssertion()).getInitSQL())) {
+        for (String each : Splitter.on(";").trimResults().splitToList(getAssertion().getInitialSQL().getSql())) {
             connection.prepareStatement(each).executeUpdate();
         }
     }
@@ -103,14 +105,14 @@ public abstract class BaseDDLIT extends SingleIT {
     }
     
     private void dropInitializedTable(final Connection connection) {
-        try (PreparedStatement preparedStatement = connection.prepareStatement(String.format("DROP TABLE %s", ((DDLIntegrateTestCaseAssertion) getAssertion()).getTable()))) {
+        try (PreparedStatement preparedStatement = connection.prepareStatement(String.format("DROP TABLE %s", getAssertion().getInitialSQL().getAffectedTable()))) {
             preparedStatement.executeUpdate();
         } catch (final SQLException ignored) {
         }
     }
     
     protected final void assertTableMetaData() throws SQLException {
-        String tableName = ((DDLIntegrateTestCaseAssertion) getAssertion()).getTable();
+        String tableName = getAssertion().getInitialSQL().getAffectedTable();
         DataSetMetadata expected = getDataSet().findMetadata(tableName);
         Collection<DataNode> dataNodes = new InlineExpressionParser(expected.getDataNodes()).splitAndEvaluate().stream().map(DataNode::new).collect(Collectors.toList());
         if (expected.getColumns().isEmpty()) {
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/ddl/GeneralDDLIT.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/ddl/GeneralDDLIT.java
index d6216f1..e412577 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/ddl/GeneralDDLIT.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/ddl/GeneralDDLIT.java
@@ -19,8 +19,8 @@ package org.apache.shardingsphere.test.integration.engine.it.ddl;
 
 import org.apache.shardingsphere.infra.database.type.DatabaseTypeRegistry;
 import org.apache.shardingsphere.test.integration.cases.IntegrateTestCaseType;
-import org.apache.shardingsphere.test.integration.cases.assertion.ddl.DDLIntegrateTestCaseAssertion;
-import org.apache.shardingsphere.test.integration.cases.assertion.root.SQLCaseType;
+import org.apache.shardingsphere.test.integration.cases.assertion.IntegrateTestCaseAssertion;
+import org.apache.shardingsphere.test.integration.engine.param.SQLCaseType;
 import org.apache.shardingsphere.test.integration.engine.param.IntegrateTestParameters;
 import org.junit.Test;
 import org.junit.runners.Parameterized.Parameters;
@@ -34,7 +34,7 @@ import java.util.Collection;
 
 public final class GeneralDDLIT extends BaseDDLIT {
     
-    public GeneralDDLIT(final String parentPath, final DDLIntegrateTestCaseAssertion assertion, final String scenario,
+    public GeneralDDLIT(final String parentPath, final IntegrateTestCaseAssertion assertion, final String scenario,
                         final String databaseType, final SQLCaseType caseType, final String sql) throws IOException, JAXBException, SQLException, ParseException {
         super(parentPath, assertion, scenario, DatabaseTypeRegistry.getActualDatabaseType(databaseType), caseType, sql);
     }
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/dml/AdditionalDMLIT.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/dml/AdditionalDMLIT.java
index 5b484a1..70fcdbd 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/dml/AdditionalDMLIT.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/dml/AdditionalDMLIT.java
@@ -17,13 +17,13 @@
 
 package org.apache.shardingsphere.test.integration.engine.it.dml;
 
-import org.apache.shardingsphere.test.integration.cases.assertion.dml.DMLIntegrateTestCaseAssertion;
-import org.apache.shardingsphere.test.integration.cases.assertion.root.SQLValue;
-import org.apache.shardingsphere.test.integration.cases.assertion.root.SQLCaseType;
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import org.apache.shardingsphere.test.integration.cases.IntegrateTestCaseType;
+import org.apache.shardingsphere.test.integration.cases.assertion.IntegrateTestCaseAssertion;
+import org.apache.shardingsphere.test.integration.engine.param.SQLCaseType;
+import org.apache.shardingsphere.test.integration.cases.value.SQLValue;
 import org.apache.shardingsphere.test.integration.engine.param.IntegrateTestParameters;
 import org.apache.shardingsphere.test.integration.env.IntegrateTestEnvironment;
-import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import org.junit.Test;
 import org.junit.runners.Parameterized.Parameters;
 
@@ -41,9 +41,9 @@ import static org.junit.Assert.assertFalse;
 
 public final class AdditionalDMLIT extends BaseDMLIT {
     
-    private final DMLIntegrateTestCaseAssertion assertion;
+    private final IntegrateTestCaseAssertion assertion;
     
-    public AdditionalDMLIT(final String parentPath, final DMLIntegrateTestCaseAssertion assertion, final String scenario,
+    public AdditionalDMLIT(final String parentPath, final IntegrateTestCaseAssertion assertion, final String scenario,
                            final DatabaseType databaseType, final SQLCaseType caseType, final String sql) throws IOException, JAXBException, SQLException, ParseException {
         super(parentPath, assertion, scenario, databaseType, caseType, sql);
         this.assertion = assertion;
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/dml/BaseDMLIT.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/dml/BaseDMLIT.java
index cafec63..b7ca7e8 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/dml/BaseDMLIT.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/dml/BaseDMLIT.java
@@ -21,8 +21,8 @@ import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import org.apache.shardingsphere.infra.database.type.dialect.PostgreSQLDatabaseType;
 import org.apache.shardingsphere.infra.datanode.DataNode;
 import org.apache.shardingsphere.sharding.algorithm.sharding.inline.InlineExpressionParser;
-import org.apache.shardingsphere.test.integration.cases.assertion.dml.DMLIntegrateTestCaseAssertion;
-import org.apache.shardingsphere.test.integration.cases.assertion.root.SQLCaseType;
+import org.apache.shardingsphere.test.integration.cases.assertion.IntegrateTestCaseAssertion;
+import org.apache.shardingsphere.test.integration.engine.param.SQLCaseType;
 import org.apache.shardingsphere.test.integration.cases.dataset.metadata.DataSetColumn;
 import org.apache.shardingsphere.test.integration.cases.dataset.metadata.DataSetMetadata;
 import org.apache.shardingsphere.test.integration.cases.dataset.row.DataSetRow;
@@ -56,7 +56,7 @@ public abstract class BaseDMLIT extends SingleIT {
     
     private final DataSetEnvironmentManager dataSetEnvironmentManager;
     
-    protected BaseDMLIT(final String parentPath, final DMLIntegrateTestCaseAssertion assertion, final String scenario,
+    protected BaseDMLIT(final String parentPath, final IntegrateTestCaseAssertion assertion, final String scenario,
                         final DatabaseType databaseType, final SQLCaseType caseType, final String sql) throws IOException, JAXBException, SQLException, ParseException {
         super(parentPath, assertion, scenario, databaseType, caseType, sql);
         dataSetEnvironmentManager = new DataSetEnvironmentManager(EnvironmentPath.getDataSetFile(scenario), getActualDataSources());
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/dml/BatchDMLIT.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/dml/BatchDMLIT.java
index b7dd92b..ea61e81 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/dml/BatchDMLIT.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/dml/BatchDMLIT.java
@@ -19,9 +19,9 @@ package org.apache.shardingsphere.test.integration.engine.it.dml;
 
 import org.apache.shardingsphere.infra.database.type.DatabaseTypeRegistry;
 import org.apache.shardingsphere.test.integration.cases.IntegrateTestCaseType;
-import org.apache.shardingsphere.test.integration.cases.assertion.IntegrateTestCaseContext;
-import org.apache.shardingsphere.test.integration.cases.assertion.root.IntegrateTestCaseAssertion;
-import org.apache.shardingsphere.test.integration.cases.assertion.root.SQLValue;
+import org.apache.shardingsphere.test.integration.cases.IntegrateTestCaseContext;
+import org.apache.shardingsphere.test.integration.cases.assertion.IntegrateTestCaseAssertion;
+import org.apache.shardingsphere.test.integration.cases.value.SQLValue;
 import org.apache.shardingsphere.test.integration.engine.it.BatchIT;
 import org.apache.shardingsphere.test.integration.engine.param.IntegrateTestParameters;
 import org.junit.Test;
@@ -71,7 +71,7 @@ public final class BatchDMLIT extends BatchIT {
     
     private int[] executeBatchForPreparedStatement(final Connection connection) throws SQLException, ParseException {
         try (PreparedStatement preparedStatement = connection.prepareStatement(getSql())) {
-            for (IntegrateTestCaseAssertion each : testCaseContext.getTestCase().getIntegrateTestCaseAssertions()) {
+            for (IntegrateTestCaseAssertion each : testCaseContext.getTestCase().getAssertions()) {
                 addBatch(preparedStatement, each);
             }
             return preparedStatement.executeBatch();
@@ -97,7 +97,7 @@ public final class BatchDMLIT extends BatchIT {
         }
         try (Connection connection = getTargetDataSource().getConnection()) {
             try (PreparedStatement preparedStatement = connection.prepareStatement(getSql())) {
-                for (IntegrateTestCaseAssertion each : testCaseContext.getTestCase().getIntegrateTestCaseAssertions()) {
+                for (IntegrateTestCaseAssertion each : testCaseContext.getTestCase().getAssertions()) {
                     addBatch(preparedStatement, each);
                 }
                 preparedStatement.clearBatch();
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/dml/GeneralDMLIT.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/dml/GeneralDMLIT.java
index b073fa9..5b73188 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/dml/GeneralDMLIT.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/dml/GeneralDMLIT.java
@@ -19,9 +19,9 @@ package org.apache.shardingsphere.test.integration.engine.it.dml;
 
 import org.apache.shardingsphere.infra.database.type.DatabaseTypeRegistry;
 import org.apache.shardingsphere.test.integration.cases.IntegrateTestCaseType;
-import org.apache.shardingsphere.test.integration.cases.assertion.dml.DMLIntegrateTestCaseAssertion;
-import org.apache.shardingsphere.test.integration.cases.assertion.root.SQLCaseType;
-import org.apache.shardingsphere.test.integration.cases.assertion.root.SQLValue;
+import org.apache.shardingsphere.test.integration.cases.assertion.IntegrateTestCaseAssertion;
+import org.apache.shardingsphere.test.integration.engine.param.SQLCaseType;
+import org.apache.shardingsphere.test.integration.cases.value.SQLValue;
 import org.apache.shardingsphere.test.integration.engine.param.IntegrateTestParameters;
 import org.junit.Test;
 import org.junit.runners.Parameterized.Parameters;
@@ -39,9 +39,9 @@ import static org.junit.Assert.assertFalse;
 
 public final class GeneralDMLIT extends BaseDMLIT {
     
-    private final DMLIntegrateTestCaseAssertion assertion;
+    private final IntegrateTestCaseAssertion assertion;
     
-    public GeneralDMLIT(final String parentPath, final DMLIntegrateTestCaseAssertion assertion, final String scenario,
+    public GeneralDMLIT(final String parentPath, final IntegrateTestCaseAssertion assertion, final String scenario,
                         final String databaseType, final SQLCaseType caseType, final String sql) throws IOException, JAXBException, SQLException, ParseException {
         super(parentPath, assertion, scenario, DatabaseTypeRegistry.getActualDatabaseType(databaseType), caseType, sql);
         this.assertion = assertion;
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/dql/AdditionalDQLIT.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/dql/AdditionalDQLIT.java
index f5f3582..213d4b5 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/dql/AdditionalDQLIT.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/dql/AdditionalDQLIT.java
@@ -17,13 +17,13 @@
 
 package org.apache.shardingsphere.test.integration.engine.it.dql;
 
-import org.apache.shardingsphere.test.integration.cases.assertion.dql.DQLIntegrateTestCaseAssertion;
-import org.apache.shardingsphere.test.integration.cases.assertion.root.SQLValue;
-import org.apache.shardingsphere.test.integration.cases.assertion.root.SQLCaseType;
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import org.apache.shardingsphere.test.integration.cases.IntegrateTestCaseType;
+import org.apache.shardingsphere.test.integration.cases.assertion.IntegrateTestCaseAssertion;
+import org.apache.shardingsphere.test.integration.engine.param.SQLCaseType;
+import org.apache.shardingsphere.test.integration.cases.value.SQLValue;
 import org.apache.shardingsphere.test.integration.engine.param.IntegrateTestParameters;
 import org.apache.shardingsphere.test.integration.env.IntegrateTestEnvironment;
-import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import org.junit.Test;
 import org.junit.runners.Parameterized.Parameters;
 
@@ -42,9 +42,9 @@ import static org.junit.Assert.assertTrue;
 
 public final class AdditionalDQLIT extends BaseDQLIT {
     
-    private final DQLIntegrateTestCaseAssertion assertion;
+    private final IntegrateTestCaseAssertion assertion;
     
-    public AdditionalDQLIT(final String parentPath, final DQLIntegrateTestCaseAssertion assertion, final String scenario,
+    public AdditionalDQLIT(final String parentPath, final IntegrateTestCaseAssertion assertion, final String scenario,
                            final DatabaseType databaseType, final SQLCaseType caseType, final String sql) throws IOException, JAXBException, SQLException, ParseException {
         super(parentPath, assertion, scenario, databaseType, caseType, sql);
         this.assertion = assertion;
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/dql/BaseDQLIT.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/dql/BaseDQLIT.java
index cab0517..053ac2d 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/dql/BaseDQLIT.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/dql/BaseDQLIT.java
@@ -18,8 +18,8 @@
 package org.apache.shardingsphere.test.integration.engine.it.dql;
 
 import org.apache.shardingsphere.infra.database.type.DatabaseType;
-import org.apache.shardingsphere.test.integration.cases.assertion.dql.DQLIntegrateTestCaseAssertion;
-import org.apache.shardingsphere.test.integration.cases.assertion.root.SQLCaseType;
+import org.apache.shardingsphere.test.integration.cases.assertion.IntegrateTestCaseAssertion;
+import org.apache.shardingsphere.test.integration.engine.param.SQLCaseType;
 import org.apache.shardingsphere.test.integration.cases.dataset.metadata.DataSetColumn;
 import org.apache.shardingsphere.test.integration.cases.dataset.metadata.DataSetMetadata;
 import org.apache.shardingsphere.test.integration.cases.dataset.row.DataSetRow;
@@ -50,7 +50,7 @@ import static org.junit.Assert.assertTrue;
 
 public abstract class BaseDQLIT extends SingleIT {
     
-    protected BaseDQLIT(final String parentPath, final DQLIntegrateTestCaseAssertion assertion, final String scenario,
+    protected BaseDQLIT(final String parentPath, final IntegrateTestCaseAssertion assertion, final String scenario,
                         final DatabaseType databaseType, final SQLCaseType caseType, final String sql) throws IOException, JAXBException, SQLException, ParseException {
         super(parentPath, assertion, scenario, databaseType, caseType, sql);
     }
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/dql/GeneralDQLIT.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/dql/GeneralDQLIT.java
index 5178f81..e8282c1 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/dql/GeneralDQLIT.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/dql/GeneralDQLIT.java
@@ -17,12 +17,12 @@
 
 package org.apache.shardingsphere.test.integration.engine.it.dql;
 
-import org.apache.shardingsphere.test.integration.cases.assertion.dql.DQLIntegrateTestCaseAssertion;
-import org.apache.shardingsphere.test.integration.cases.assertion.root.SQLValue;
-import org.apache.shardingsphere.test.integration.cases.assertion.root.SQLCaseType;
+import org.apache.shardingsphere.infra.database.type.DatabaseTypeRegistry;
 import org.apache.shardingsphere.test.integration.cases.IntegrateTestCaseType;
+import org.apache.shardingsphere.test.integration.cases.assertion.IntegrateTestCaseAssertion;
+import org.apache.shardingsphere.test.integration.engine.param.SQLCaseType;
+import org.apache.shardingsphere.test.integration.cases.value.SQLValue;
 import org.apache.shardingsphere.test.integration.engine.param.IntegrateTestParameters;
-import org.apache.shardingsphere.infra.database.type.DatabaseTypeRegistry;
 import org.junit.Test;
 import org.junit.runners.Parameterized.Parameters;
 
@@ -40,9 +40,9 @@ import static org.junit.Assert.assertTrue;
 
 public final class GeneralDQLIT extends BaseDQLIT {
     
-    private final DQLIntegrateTestCaseAssertion assertion;
+    private final IntegrateTestCaseAssertion assertion;
     
-    public GeneralDQLIT(final String parentPath, final DQLIntegrateTestCaseAssertion assertion, final String scenario,
+    public GeneralDQLIT(final String parentPath, final IntegrateTestCaseAssertion assertion, final String scenario,
                         final String databaseType, final SQLCaseType caseType, final String sql) throws IOException, JAXBException, SQLException, ParseException {
         super(parentPath, assertion, scenario, DatabaseTypeRegistry.getActualDatabaseType(databaseType), caseType, sql);
         this.assertion = assertion;
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/param/IntegrateTestParameters.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/param/IntegrateTestParameters.java
index 42a3368..555a5d9 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/param/IntegrateTestParameters.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/param/IntegrateTestParameters.java
@@ -27,10 +27,9 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import org.apache.shardingsphere.infra.database.type.DatabaseTypeRegistry;
 import org.apache.shardingsphere.test.integration.cases.IntegrateTestCaseType;
-import org.apache.shardingsphere.test.integration.cases.assertion.IntegrateTestCaseContext;
-import org.apache.shardingsphere.test.integration.cases.assertion.IntegrateTestCasesLoader;
-import org.apache.shardingsphere.test.integration.cases.assertion.root.IntegrateTestCaseAssertion;
-import org.apache.shardingsphere.test.integration.cases.assertion.root.SQLCaseType;
+import org.apache.shardingsphere.test.integration.cases.IntegrateTestCaseContext;
+import org.apache.shardingsphere.test.integration.cases.IntegrateTestCasesLoader;
+import org.apache.shardingsphere.test.integration.cases.assertion.IntegrateTestCaseAssertion;
 import org.apache.shardingsphere.test.integration.env.IntegrateTestEnvironment;
 import org.junit.Test;
 
@@ -79,11 +78,11 @@ public final class IntegrateTestParameters {
     
     private static Collection<Object[]> getParametersWithAssertion(final DatabaseType databaseType, final SQLCaseType caseType, final IntegrateTestCaseContext testCaseContext) {
         Collection<Object[]> result = new LinkedList<>();
-        if (testCaseContext.getTestCase().getIntegrateTestCaseAssertions().isEmpty()) {
+        if (testCaseContext.getTestCase().getAssertions().isEmpty()) {
             result.addAll(getParametersWithAssertion(testCaseContext, null, databaseType, caseType));
             return result;
         }
-        for (IntegrateTestCaseAssertion each : testCaseContext.getTestCase().getIntegrateTestCaseAssertions()) {
+        for (IntegrateTestCaseAssertion each : testCaseContext.getTestCase().getAssertions()) {
             result.addAll(getParametersWithAssertion(testCaseContext, each, databaseType, caseType));
         }
         return result;
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/root/SQLCaseType.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/param/SQLCaseType.java
similarity index 92%
rename from shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/root/SQLCaseType.java
rename to shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/param/SQLCaseType.java
index e433623..aa16154 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/assertion/root/SQLCaseType.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/param/SQLCaseType.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.test.integration.cases.assertion.root;
+package org.apache.shardingsphere.test.integration.engine.param;
 
 /**
  * SQL case type.
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/env/dataset/DataSetEnvironmentManager.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/env/dataset/DataSetEnvironmentManager.java
index 4e5e79e..bbf0de3 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/env/dataset/DataSetEnvironmentManager.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/env/dataset/DataSetEnvironmentManager.java
@@ -26,8 +26,8 @@ import org.apache.shardingsphere.infra.executor.kernel.thread.ExecutorServiceMan
 import org.apache.shardingsphere.infra.metadata.schema.builder.loader.dialect.DatabaseMetaDataDialectHandler;
 import org.apache.shardingsphere.infra.metadata.schema.builder.loader.dialect.DatabaseMetaDataDialectHandlerFactory;
 import org.apache.shardingsphere.sharding.algorithm.sharding.inline.InlineExpressionParser;
-import org.apache.shardingsphere.test.integration.cases.assertion.root.SQLValue;
-import org.apache.shardingsphere.test.integration.cases.assertion.root.SQLValueGroup;
+import org.apache.shardingsphere.test.integration.cases.value.SQLValue;
+import org.apache.shardingsphere.test.integration.cases.value.SQLValueGroup;
 import org.apache.shardingsphere.test.integration.cases.dataset.DataSet;
 import org.apache.shardingsphere.test.integration.cases.dataset.metadata.DataSetColumn;
 import org.apache.shardingsphere.test.integration.cases.dataset.metadata.DataSetMetadata;
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/dcl/dcl-integrate-test-cases.xml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/dcl/dcl-integrate-test-cases.xml
index f60a944..2257f53 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/dcl/dcl-integrate-test-cases.xml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/dcl/dcl-integrate-test-cases.xml
@@ -15,167 +15,167 @@
   ~ limitations under the License.
   -->
 <integrate-test-cases>
-    <dcl-test-case sql="CREATE USER 'user_dev_new'@'localhost'" db-types="MySQL" />
-    <dcl-test-case sql="CREATE USER user_dev_new" db-types="PostgreSQL" />
-    <dcl-test-case sql="CREATE USER 'user_dev_new'@'localhost' identified by 'passwd_dev'" db-types="MySQL"/>
-    <dcl-test-case sql="CREATE USER user_dev_new identified by passwd_dev" db-types="Oracle" />
-    <dcl-test-case sql="CREATE USER user_dev_new FOR LOGIN login_dev" db-types="SQLServer"/>
-    <dcl-test-case sql="CREATE USER user_dev_new PASSWORD 'passwd_dev'" db-types="PostgreSQL"/>
-    <dcl-test-case sql="CREATE LOGIN login_dev_new WITH PASSWORD = 'passwd_dev'" db-types="SQLServer"/>
-    <dcl-test-case sql="CREATE ROLE role_dev" db-types="MySQL,Oracle,PostgreSQL,SQLServer"/>
-    <dcl-test-case sql="CREATE ROLE role_dev_new identified by dev_passwd" db-types="Oracle"/>
-    <dcl-test-case sql="CREATE ROLE role_dev_new PASSWORD 'passwd_dev'" db-types="PostgreSQL"/>
-    <dcl-test-case sql="ALTER ROLE ALL RESET client_min_messages" db-types="PostgreSQL"/>
-    <dcl-test-case sql="ALTER ROLE ALL SET client_min_messages = DEBUG" db-types="PostgreSQL"/>
-    <dcl-test-case sql="ALTER USER ALL RESET client_min_messages" db-types="PostgreSQL"/>
-    <dcl-test-case sql="ALTER USER ALL SET client_min_messages = DEBUG" db-types="PostgreSQL"/>
-    <dcl-test-case sql="ALTER USER 'user_dev'@'localhost'" db-types="MySQL"/>
-    <dcl-test-case sql="ALTER USER user_dev identified by passwd_dev" db-types="Oracle"/>
-    <dcl-test-case sql="ALTER USER 'user_dev'@'localhost' identified by 'passwd_dev'" db-types="MySQL"/>
-    <dcl-test-case sql="ALTER USER user_dev account lock" db-types="Oracle"/>
-    <dcl-test-case sql="ALTER LOGIN login_dev WITH NAME = login_dev_new" db-types="SQLServer"/>
-    <dcl-test-case sql="ALTER LOGIN login_dev WITH PASSWORD = 'passwd_dev'" db-types="SQLServer"/>
-    <dcl-test-case sql="ALTER USER user_dev WITH NAME = user_dev_new" db-types="SQLServer"/>
-    <dcl-test-case sql="ALTER USER default_user RENAME TO user_dev_new" db-types="PostgreSQL"/>
-    <dcl-test-case sql="ALTER USER user_dev WITH PASSWORD = 'passwd_dev'" db-types="SQLServer"/>
-    <dcl-test-case sql="ALTER USER default_user WITH PASSWORD 'passwd_dev'" db-types="PostgreSQL"/>
-    <dcl-test-case sql="ALTER ROLE role_dev_bak DROP MEMBER member1" db-types="SQLServer"/>
-    <dcl-test-case sql="ALTER ROLE role_dev IDENTIFIED EXTERNALLY"  db-types="Oracle"/>
-    <dcl-test-case sql="ALTER USER user_dev IDENTIFIED EXTERNALLY" db-types="Oracle"/>
-    <dcl-test-case sql="ALTER ROLE role_dev IDENTIFIED GLOBALLY"  db-types="Oracle"/>
-    <dcl-test-case sql="ALTER USER user_dev IDENTIFIED GLOBALLY AS 'CN=user_dev'" db-types="Oracle"/>
-    <dcl-test-case sql="ALTER LOGIN login1 ADD CREDENTIAL credential" db-types="SQLServer"/>
-    <dcl-test-case sql="ALTER LOGIN login1 ENABLE" db-types="SQLServer"/>
-    <dcl-test-case sql="ALTER LOGIN login1_bak WITH NAME = login1" db-types="SQLServer"/>
-    <dcl-test-case sql="ALTER LOGIN login1 WITH DEFAULT_DATABASE = database" db-types="SQLServer"/>
-    <dcl-test-case sql="ALTER LOGIN login1 WITH PASSWORD = 0x01000CF35567C60BFB41EBDE4CF700A985A13D773D6B45B90900 HASHED" db-types="SQLServer"/>
-    <dcl-test-case sql="ALTER LOGIN login1 WITH PASSWORD = 'password'" db-types="SQLServer"/>
-    <dcl-test-case sql="ALTER LOGIN login1 WITH PASSWORD = 'password' OLD_PASSWORD = 'password'" db-types="SQLServer"/>
-    <dcl-test-case sql="ALTER LOGIN login1 WITH PASSWORD = 'password' UNLOCK" db-types="SQLServer"/>
-    <dcl-test-case sql="ALTER ROLE role_dev NOT IDENTIFIED"  db-types="Oracle"/>
-    <dcl-test-case sql="ALTER ROLE role_dev_bak WITH NAME = role_dev" db-types="SQLServer"/>
-    <dcl-test-case sql="ALTER ROLE default_role RESET ALL" db-types="PostgreSQL"/>
-    <dcl-test-case sql="ALTER ROLE default_role RESET client_min_messages" db-types="PostgreSQL"/>
-    <dcl-test-case sql="ALTER ROLE default_role SET client_min_messages = DEBUG" db-types="PostgreSQL"/>
-    <dcl-test-case sql="ALTER ROLE default_role SET client_min_messages FROM CURRENT" db-types="PostgreSQL"/>
-    <dcl-test-case sql="ALTER ROLE role_dev NOT IDENTIFIED CONTAINER = ALL"  db-types="Oracle"/>
-    <dcl-test-case sql="ALTER ROLE default_role WITH SUPERUSER" db-types="PostgreSQL"/>
-    <dcl-test-case sql="ALTER ROLE default_role WITH CREATEDB CREATEROLE" db-types="PostgreSQL"/>
-    <dcl-test-case sql="ALTER ROLE role_dev IDENTIFIED BY password"  db-types="Oracle"/>
-    <dcl-test-case sql="ALTER ROLE default_role WITH ENCRYPTED PASSWORD 'password'" db-types="PostgreSQL"/>
-    <dcl-test-case sql="ALTER USER user_dev PASSWORD EXPIRE ACCOUNT LOCK" db-types="Oracle"/>
-    <dcl-test-case sql="ALTER USER user_dev GRANT CONNECT THROUGH user2" db-types="Oracle"/>
-    <dcl-test-case sql="ALTER USER user_dev GRANT CONNECT THROUGH user2 WITH ROLE role_dev" db-types="Oracle"/>
-    <dcl-test-case sql="ALTER USER IF EXISTS user_dev" db-types="MySQL"/>
-    <dcl-test-case sql="ALTER USER user_dev IDENTIFIED BY password ACCOUNT LOCK" db-types="Oracle"/>
-    <dcl-test-case sql="ALTER USER user_dev GRANT CONNECT THROUGH user2 REVOKE CONNECT THROUGH user3" db-types="Oracle"/>
-    <dcl-test-case sql="ALTER USER user_dev_bak WITH NAME = user_dev" db-types="SQLServer"/>
-    <dcl-test-case sql="ALTER USER default_user RESET ALL" db-types="PostgreSQL"/>
-    <dcl-test-case sql="ALTER USER default_user RESET client_min_messages" db-types="PostgreSQL"/>
-    <dcl-test-case sql="ALTER USER user_dev REVOKE CONNECT THROUGH user2" db-types="Oracle"/>
-    <dcl-test-case sql="ALTER USER default_user SET client_min_messages = DEBUG" db-types="PostgreSQL"/>
-    <dcl-test-case sql="ALTER USER default_user SET client_min_messages FROM CURRENT" db-types="PostgreSQL"/>
-    <dcl-test-case sql="ALTER USER user_dev WITH DEFAULT_SCHEMA = schema" db-types="SQLServer"/>
-    <dcl-test-case sql="ALTER USER user_dev WITH LOGIN = login1" db-types="SQLServer"/>
-    <dcl-test-case sql="ALTER USER user_dev WITH PASSWORD = 'password'" db-types="SQLServer"/>
-    <dcl-test-case sql="ALTER USER user_dev CONTAINER = ALL" db-types="Oracle"/>
-    <dcl-test-case sql="ALTER USER default_user WITH SUPERUSER" db-types="PostgreSQL"/>
-    <dcl-test-case sql="ALTER USER default_user WITH CREATEDB CREATEROLE" db-types="PostgreSQL"/>
-    <dcl-test-case sql="ALTER USER default_user WITH ENCRYPTED PASSWORD 'password'" db-types="PostgreSQL"/>
-    <dcl-test-case sql="ALTER USER user_dev QUOTA 1M ON tablespace1" db-types="Oracle"/>
-    <dcl-test-case sql="ALTER USER user_dev DEFAULT TABLESPACE tablespace1" db-types="Oracle"/>
-    <dcl-test-case sql="CREATE ROLE role_dev IDENTIFIED EXTERNALLY" db-types="Oracle"/>
-    <dcl-test-case sql="CREATE USER user_dev IDENTIFIED EXTERNALLY" db-types="Oracle"/>
-    <dcl-test-case sql="CREATE ROLE role_dev IDENTIFIED GLOBALLY" db-types="Oracle"/>
-    <dcl-test-case sql="CREATE USER user_dev IDENTIFIED GLOBALLY" db-types="Oracle"/>
-    <dcl-test-case sql="CREATE LOGIN login1 WITH PASSWORD = 'password', CREDENTIAL = credential" db-types="SQLServer"/>
-    <dcl-test-case sql="CREATE LOGIN login1 FROM ASYMMETRIC KEY asym_key" db-types="SQLServer"/>
-    <dcl-test-case sql="CREATE LOGIN login1 FROM CERTIFICATE certificate" db-types="SQLServer"/>
-    <dcl-test-case sql="CREATE LOGIN login1 WITH PASSWORD = 'password', DEFAULT_DATABASE = database" db-types="SQLServer"/>
-    <dcl-test-case sql="CREATE LOGIN login1 WITH PASSWORD = 'password' MUST_CHANGE, CHECK_EXPIRATION = ON" db-types="SQLServer"/>
-    <dcl-test-case sql="CREATE LOGIN login1 WITH PASSWORD = 0x01000CF35567C60BFB41EBDE4CF700A985A13D773D6B45B90900 HASHED" db-types="SQLServer"/>
-    <dcl-test-case sql="CREATE LOGIN login1 WITH PASSWORD = 'password'" db-types="SQLServer"/>
-    <dcl-test-case sql="CREATE ROLE role_dev NOT IDENTIFIED" db-types="Oracle"/>
-    <dcl-test-case sql="CREATE ROLE role_dev AUTHORIZATION authorization" db-types="SQLServer"/>
-    <dcl-test-case sql="CREATE ROLE IF NOT EXISTS role_dev" db-types="MySQL"/>
-    <dcl-test-case sql="CREATE ROLE role_dev CONTAINER = ALL" db-types="Oracle"/>
-    <dcl-test-case sql="CREATE ROLE role_dev WITH SUPERUSER" db-types="PostgreSQL"/>
-    <dcl-test-case sql="CREATE ROLE role_dev WITH CREATEDB CREATEROLE" db-types="PostgreSQL"/>
-    <dcl-test-case sql="CREATE ROLE role_dev IDENTIFIED BY password" db-types="Oracle"/>
-    <dcl-test-case sql="CREATE ROLE role_dev WITH ROLE role2" db-types="PostgreSQL"/>
-    <dcl-test-case sql="CREATE ROLE role_dev WITH ROLE role2, role3" db-types="PostgreSQL"/>
-    <dcl-test-case sql="CREATE USER IF NOT EXISTS user_dev DEFAULT ROLE default_role" db-types="MySQL"/>
-    <dcl-test-case sql="CREATE USER user_dev" db-types="PostgreSQL,SQLServer"/>
-    <dcl-test-case sql="CREATE USER user_dev FROM ASYMMETRIC KEY asym_key" db-types="SQLServer"/>
-    <dcl-test-case sql="CREATE USER user_dev FROM CERTIFICATE certificate" db-types="SQLServer"/>
-    <dcl-test-case sql="CREATE USER user_dev FROM LOGIN login1" db-types="SQLServer"/>
-    <dcl-test-case sql="CREATE USER user_dev WITHOUT LOGIN" db-types="SQLServer"/>
-    <dcl-test-case sql="CREATE USER user_dev WITH SUPERUSER" db-types="PostgreSQL"/>
-    <dcl-test-case sql="CREATE USER user_dev WITH CREATEDB CREATEROLE" db-types="PostgreSQL"/>
-    <dcl-test-case sql="CREATE USER user_dev WITH ENCRYPTED PASSWORD 'password'" db-types="PostgreSQL"/>
-    <dcl-test-case sql="CREATE USER user_dev IDENTIFIED BY password QUOTA 1M ON tablespace1" db-types="Oracle"/>
-    <dcl-test-case sql="CREATE USER user_dev WITH ROLE role2" db-types="PostgreSQL"/>
-    <dcl-test-case sql="CREATE USER user_dev WITH ROLE role2, role3" db-types="PostgreSQL"/>
-    <dcl-test-case sql="CREATE USER user_dev WITH DEFAULT_SCHEMA = schema" db-types="SQLServer"/>
-    <dcl-test-case sql="CREATE USER user_dev IDENTIFIED BY password DEFAULT TABLESPACE tablespace1" db-types="Oracle"/>
-    <dcl-test-case sql="DENY UPDATE ON t_order TO user_dev CASCADEK" db-types="SQLServer"/>
-    <dcl-test-case sql="DENY ALL PRIVILEGES ON t_order TO user_dev" db-types="SQLServer"/>
-    <dcl-test-case sql="DENY INSERT, SELECT, UPDATE, DELETE ON t_order TO user_dev" db-types="SQLServer"/>
-    <dcl-test-case sql="DENY SELECT ON t_order TO user_dev" db-types="SQLServer"/>
-    <dcl-test-case sql="DENY SELECT (order_id) ON t_order TO user_dev" db-types="SQLServer"/>
-    <dcl-test-case sql="DENY SELECT (order_id) ON t_order TO user_dev, user2" db-types="SQLServer"/>
-    <dcl-test-case sql="DROP ROLE IF EXISTS default_role" db-types="MySQL,PostgreSQL,SQLServer"/>
-    <dcl-test-case sql="DROP USER default_user" db-types="Oracle,PostgreSQL,SQLServer"/>
-    <dcl-test-case sql="DROP USER user_dev@localhost" db-types="MySQL,Oracle"/>
-    <dcl-test-case sql="DROP USER user_dev CASCADE" db-types="Oracle"/>
-    <dcl-test-case sql="DROP ROLE default_role" db-types="MySQL,Oracle,PostgreSQL,SQLServer"/>
-    <dcl-test-case sql="DROP LOGIN login1" db-types="SQLServer"/>
-    <dcl-test-case sql="RENAME USER 'user_dev'@'localhost' TO 'user_dev'@'127.0.0.1'" db-types="MySQL"/>
-    <dcl-test-case sql="GRANT select, update, insert, delete on t_order to default_user" db-types="Oracle,SQLServer"/>
-    <dcl-test-case sql="GRANT select, update, insert, delete on t_order to default_user with GRANT option" db-types="Oracle,SQLServer"/>
-    <dcl-test-case sql="GRANT role2 to role3" db-types="Oracle,PostgreSQL,SQLServer"/>
-    <dcl-test-case sql="GRANT ADVISOR, ALTER DATABASE to user_dev with admin option" db-types="Oracle"/>
-    <dcl-test-case sql="GRANT ALL ON sharding_db.* TO 'user_dev'@'localhost'" db-types="MySQL"/>
-    <dcl-test-case sql="GRANT ALL ON t_order TO 'user_dev'@'localhost'" db-types="MySQL"/>
-    <dcl-test-case sql="GRANT ALL ON sharding_db.t_order TO 'user_dev'@'localhost'" db-types="MySQL"/>
-    <dcl-test-case sql="GRANT select, update ON t_order TO 'user_dev'@'localhost'" db-types="MySQL"/>
-    <dcl-test-case sql="REVOKE select, update on t_order from default_user" db-types="Oracle,PostgreSQL,SQLServer"/>
-    <dcl-test-case sql="REVOKE default_role from default_user" db-types="Oracle,PostgreSQL,SQLServer"/>
-    <dcl-test-case sql="REVOKE ADVISOR, ALTER DATABASE from user_dev" db-types="Oracle"/>
-    <dcl-test-case sql="REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'user_dev'@'localhost'" db-types="MySQL"/>
-    <dcl-test-case sql="REVOKE select, insert ON * FROM 'user_dev'@'localhost'" db-types="MySQL"/>
-    <dcl-test-case sql="REVOKE select, insert ON t_order FROM 'user_dev'@'localhost'" db-types="MySQL"/>
-    <dcl-test-case sql="REVOKE select, insert ON primary_ds.t_order FROM 'user_dev'@'localhost'" db-types="MySQL"/>
-    <dcl-test-case sql="REVOKE ALL PRIVILEGES ON *.* FROM user_dev" db-types="MySQL"/>
-    <dcl-test-case sql="REVOKE ALL PRIVILEGES (order_id) ON TABLE t_order FROM role2" db-types="PostgreSQL"/>
-    <dcl-test-case sql="REVOKE ALL PRIVILEGES (order_id) ON TABLE t_order FROM role2, role3" db-types="PostgreSQL"/>
-    <dcl-test-case sql="REVOKE ALL PRIVILEGES ON db_0.t_order FROM user_dev" db-types="Oracle"/>
-    <dcl-test-case sql="REVOKE ALL PRIVILEGES ON SCHEMA public FROM default_role" db-types="PostgreSQL"/>
-    <dcl-test-case sql="REVOKE ALL PRIVILEGES ON SCHEMA public FROM default_role, role2" db-types="PostgreSQL"/>
-    <dcl-test-case sql="REVOKE ALL PRIVILEGES ON TABLE t_order FROM default_role, role2" db-types="PostgreSQL"/>
-    <dcl-test-case sql="REVOKE ALL PRIVILEGES FROM user_dev" db-types="Oracle"/>
-    <dcl-test-case sql="REVOKE CREATE ON SCHEMA public FROM default_role" db-types="PostgreSQL"/>
-    <dcl-test-case sql="REVOKE INSERT, SELECT, UPDATE, DELETE ON *.* FROM user_dev" db-types="MySQL"/>
-    <dcl-test-case sql="REVOKE INSERT, SELECT, UPDATE, DELETE ON t_order FROM user_dev" db-types="SQLServer"/>
-    <dcl-test-case sql="REVOKE EXECUTE ON ALL FUNCTIONS IN SCHEMA public FROM default_role" db-types="PostgreSQL"/>
-    <dcl-test-case sql="REVOKE SELECT ON db_0.t_order FROM user_dev" db-types="Oracle"/>
-    <dcl-test-case sql="REVOKE SELECT (order_id) ON db_0.t_order FROM user_dev" db-types="Oracle"/>
-    <dcl-test-case sql="REVOKE SELECT ON db_0.t_order FROM user_dev, user2" db-types="Oracle"/>
-    <dcl-test-case sql="REVOKE INSERT, SELECT, UPDATE, DELETE ON db_0.t_order FROM user_dev" db-types="Oracle"/>
-    <dcl-test-case sql="REVOKE role_dev FROM FUNCTION db_0.function1" db-types="Oracle"/>
-    <dcl-test-case sql="REVOKE default_role, role2 FROM role3, role4" db-types="PostgreSQL"/>
-    <dcl-test-case sql="REVOKE role_dev, role2 FROM FUNCTION db_0.function1, FUNCTION db_0.function2" db-types="Oracle"/>
-    <dcl-test-case sql="REVOKE SELECT ON *.* FROM user_dev" db-types="MySQL"/>
-    <dcl-test-case sql="REVOKE SELECT (order_id) ON TABLE t_order FROM default_role" db-types="PostgreSQL"/>
-    <dcl-test-case sql="REVOKE SELECT ON  *.* FROM 'user_dev'@'localhost'" db-types="MySQL"/>
-    <dcl-test-case sql="REVOKE SELECT ON ALL SEQUENCES IN SCHEMA public FROM default_role" db-types="PostgreSQL"/>
-    <dcl-test-case sql="REVOKE SELECT ON ALL TABLES IN SCHEMA public FROM default_role" db-types="PostgreSQL"/>
-    <dcl-test-case sql="REVOKE SELECT (order_id) ON t_order FROM user_dev, user2" db-types="SQLServer"/>
-    <dcl-test-case sql="REVOKE CREATE SESSION FROM user_dev" db-types="Oracle"/>
-    <dcl-test-case sql="REVOKE CREATE SESSION FROM user_dev, user2" db-types="Oracle"/>
-    <dcl-test-case sql="REVOKE CREATE ANY MATERIALIZED VIEW, ALTER ANY MATERIALIZED VIEW, DROP ANY MATERIALIZED VIEW FROM user_dev" db-types="Oracle"/>
-    <dcl-test-case sql="REVOKE SELECT ON TABLE t_order FROM default_role" db-types="PostgreSQL"/>
-    <dcl-test-case sql="REVOKE SELECT ON t_order FROM user_dev" db-types="SQLServer"/>
-    <dcl-test-case sql="SET ROLE ALL EXCEPT role_dev" db-types="MySQL"/>
-    <dcl-test-case sql="SET ROLE ALL EXCEPT role_dev, role2" db-types="MySQL"/>
+    <test-case sql="CREATE USER 'user_dev_new'@'localhost'" db-types="MySQL" />
+    <test-case sql="CREATE USER user_dev_new" db-types="PostgreSQL" />
+    <test-case sql="CREATE USER 'user_dev_new'@'localhost' identified by 'passwd_dev'" db-types="MySQL"/>
+    <test-case sql="CREATE USER user_dev_new identified by passwd_dev" db-types="Oracle" />
+    <test-case sql="CREATE USER user_dev_new FOR LOGIN login_dev" db-types="SQLServer"/>
+    <test-case sql="CREATE USER user_dev_new PASSWORD 'passwd_dev'" db-types="PostgreSQL"/>
+    <test-case sql="CREATE LOGIN login_dev_new WITH PASSWORD = 'passwd_dev'" db-types="SQLServer"/>
+    <test-case sql="CREATE ROLE role_dev" db-types="MySQL,Oracle,PostgreSQL,SQLServer"/>
+    <test-case sql="CREATE ROLE role_dev_new identified by dev_passwd" db-types="Oracle"/>
+    <test-case sql="CREATE ROLE role_dev_new PASSWORD 'passwd_dev'" db-types="PostgreSQL"/>
+    <test-case sql="ALTER ROLE ALL RESET client_min_messages" db-types="PostgreSQL"/>
+    <test-case sql="ALTER ROLE ALL SET client_min_messages = DEBUG" db-types="PostgreSQL"/>
+    <test-case sql="ALTER USER ALL RESET client_min_messages" db-types="PostgreSQL"/>
+    <test-case sql="ALTER USER ALL SET client_min_messages = DEBUG" db-types="PostgreSQL"/>
+    <test-case sql="ALTER USER 'user_dev'@'localhost'" db-types="MySQL"/>
+    <test-case sql="ALTER USER user_dev identified by passwd_dev" db-types="Oracle"/>
+    <test-case sql="ALTER USER 'user_dev'@'localhost' identified by 'passwd_dev'" db-types="MySQL"/>
+    <test-case sql="ALTER USER user_dev account lock" db-types="Oracle"/>
+    <test-case sql="ALTER LOGIN login_dev WITH NAME = login_dev_new" db-types="SQLServer"/>
+    <test-case sql="ALTER LOGIN login_dev WITH PASSWORD = 'passwd_dev'" db-types="SQLServer"/>
+    <test-case sql="ALTER USER user_dev WITH NAME = user_dev_new" db-types="SQLServer"/>
+    <test-case sql="ALTER USER default_user RENAME TO user_dev_new" db-types="PostgreSQL"/>
+    <test-case sql="ALTER USER user_dev WITH PASSWORD = 'passwd_dev'" db-types="SQLServer"/>
+    <test-case sql="ALTER USER default_user WITH PASSWORD 'passwd_dev'" db-types="PostgreSQL"/>
+    <test-case sql="ALTER ROLE role_dev_bak DROP MEMBER member1" db-types="SQLServer"/>
+    <test-case sql="ALTER ROLE role_dev IDENTIFIED EXTERNALLY"  db-types="Oracle"/>
+    <test-case sql="ALTER USER user_dev IDENTIFIED EXTERNALLY" db-types="Oracle"/>
+    <test-case sql="ALTER ROLE role_dev IDENTIFIED GLOBALLY"  db-types="Oracle"/>
+    <test-case sql="ALTER USER user_dev IDENTIFIED GLOBALLY AS 'CN=user_dev'" db-types="Oracle"/>
+    <test-case sql="ALTER LOGIN login1 ADD CREDENTIAL credential" db-types="SQLServer"/>
+    <test-case sql="ALTER LOGIN login1 ENABLE" db-types="SQLServer"/>
+    <test-case sql="ALTER LOGIN login1_bak WITH NAME = login1" db-types="SQLServer"/>
+    <test-case sql="ALTER LOGIN login1 WITH DEFAULT_DATABASE = database" db-types="SQLServer"/>
+    <test-case sql="ALTER LOGIN login1 WITH PASSWORD = 0x01000CF35567C60BFB41EBDE4CF700A985A13D773D6B45B90900 HASHED" db-types="SQLServer"/>
+    <test-case sql="ALTER LOGIN login1 WITH PASSWORD = 'password'" db-types="SQLServer"/>
+    <test-case sql="ALTER LOGIN login1 WITH PASSWORD = 'password' OLD_PASSWORD = 'password'" db-types="SQLServer"/>
+    <test-case sql="ALTER LOGIN login1 WITH PASSWORD = 'password' UNLOCK" db-types="SQLServer"/>
+    <test-case sql="ALTER ROLE role_dev NOT IDENTIFIED"  db-types="Oracle"/>
+    <test-case sql="ALTER ROLE role_dev_bak WITH NAME = role_dev" db-types="SQLServer"/>
+    <test-case sql="ALTER ROLE default_role RESET ALL" db-types="PostgreSQL"/>
+    <test-case sql="ALTER ROLE default_role RESET client_min_messages" db-types="PostgreSQL"/>
+    <test-case sql="ALTER ROLE default_role SET client_min_messages = DEBUG" db-types="PostgreSQL"/>
+    <test-case sql="ALTER ROLE default_role SET client_min_messages FROM CURRENT" db-types="PostgreSQL"/>
+    <test-case sql="ALTER ROLE role_dev NOT IDENTIFIED CONTAINER = ALL"  db-types="Oracle"/>
+    <test-case sql="ALTER ROLE default_role WITH SUPERUSER" db-types="PostgreSQL"/>
+    <test-case sql="ALTER ROLE default_role WITH CREATEDB CREATEROLE" db-types="PostgreSQL"/>
+    <test-case sql="ALTER ROLE role_dev IDENTIFIED BY password"  db-types="Oracle"/>
+    <test-case sql="ALTER ROLE default_role WITH ENCRYPTED PASSWORD 'password'" db-types="PostgreSQL"/>
+    <test-case sql="ALTER USER user_dev PASSWORD EXPIRE ACCOUNT LOCK" db-types="Oracle"/>
+    <test-case sql="ALTER USER user_dev GRANT CONNECT THROUGH user2" db-types="Oracle"/>
+    <test-case sql="ALTER USER user_dev GRANT CONNECT THROUGH user2 WITH ROLE role_dev" db-types="Oracle"/>
+    <test-case sql="ALTER USER IF EXISTS user_dev" db-types="MySQL"/>
+    <test-case sql="ALTER USER user_dev IDENTIFIED BY password ACCOUNT LOCK" db-types="Oracle"/>
+    <test-case sql="ALTER USER user_dev GRANT CONNECT THROUGH user2 REVOKE CONNECT THROUGH user3" db-types="Oracle"/>
+    <test-case sql="ALTER USER user_dev_bak WITH NAME = user_dev" db-types="SQLServer"/>
+    <test-case sql="ALTER USER default_user RESET ALL" db-types="PostgreSQL"/>
+    <test-case sql="ALTER USER default_user RESET client_min_messages" db-types="PostgreSQL"/>
+    <test-case sql="ALTER USER user_dev REVOKE CONNECT THROUGH user2" db-types="Oracle"/>
+    <test-case sql="ALTER USER default_user SET client_min_messages = DEBUG" db-types="PostgreSQL"/>
+    <test-case sql="ALTER USER default_user SET client_min_messages FROM CURRENT" db-types="PostgreSQL"/>
+    <test-case sql="ALTER USER user_dev WITH DEFAULT_SCHEMA = schema" db-types="SQLServer"/>
+    <test-case sql="ALTER USER user_dev WITH LOGIN = login1" db-types="SQLServer"/>
+    <test-case sql="ALTER USER user_dev WITH PASSWORD = 'password'" db-types="SQLServer"/>
+    <test-case sql="ALTER USER user_dev CONTAINER = ALL" db-types="Oracle"/>
+    <test-case sql="ALTER USER default_user WITH SUPERUSER" db-types="PostgreSQL"/>
+    <test-case sql="ALTER USER default_user WITH CREATEDB CREATEROLE" db-types="PostgreSQL"/>
+    <test-case sql="ALTER USER default_user WITH ENCRYPTED PASSWORD 'password'" db-types="PostgreSQL"/>
+    <test-case sql="ALTER USER user_dev QUOTA 1M ON tablespace1" db-types="Oracle"/>
+    <test-case sql="ALTER USER user_dev DEFAULT TABLESPACE tablespace1" db-types="Oracle"/>
+    <test-case sql="CREATE ROLE role_dev IDENTIFIED EXTERNALLY" db-types="Oracle"/>
+    <test-case sql="CREATE USER user_dev IDENTIFIED EXTERNALLY" db-types="Oracle"/>
+    <test-case sql="CREATE ROLE role_dev IDENTIFIED GLOBALLY" db-types="Oracle"/>
+    <test-case sql="CREATE USER user_dev IDENTIFIED GLOBALLY" db-types="Oracle"/>
+    <test-case sql="CREATE LOGIN login1 WITH PASSWORD = 'password', CREDENTIAL = credential" db-types="SQLServer"/>
+    <test-case sql="CREATE LOGIN login1 FROM ASYMMETRIC KEY asym_key" db-types="SQLServer"/>
+    <test-case sql="CREATE LOGIN login1 FROM CERTIFICATE certificate" db-types="SQLServer"/>
+    <test-case sql="CREATE LOGIN login1 WITH PASSWORD = 'password', DEFAULT_DATABASE = database" db-types="SQLServer"/>
+    <test-case sql="CREATE LOGIN login1 WITH PASSWORD = 'password' MUST_CHANGE, CHECK_EXPIRATION = ON" db-types="SQLServer"/>
+    <test-case sql="CREATE LOGIN login1 WITH PASSWORD = 0x01000CF35567C60BFB41EBDE4CF700A985A13D773D6B45B90900 HASHED" db-types="SQLServer"/>
+    <test-case sql="CREATE LOGIN login1 WITH PASSWORD = 'password'" db-types="SQLServer"/>
+    <test-case sql="CREATE ROLE role_dev NOT IDENTIFIED" db-types="Oracle"/>
+    <test-case sql="CREATE ROLE role_dev AUTHORIZATION authorization" db-types="SQLServer"/>
+    <test-case sql="CREATE ROLE IF NOT EXISTS role_dev" db-types="MySQL"/>
+    <test-case sql="CREATE ROLE role_dev CONTAINER = ALL" db-types="Oracle"/>
+    <test-case sql="CREATE ROLE role_dev WITH SUPERUSER" db-types="PostgreSQL"/>
+    <test-case sql="CREATE ROLE role_dev WITH CREATEDB CREATEROLE" db-types="PostgreSQL"/>
+    <test-case sql="CREATE ROLE role_dev IDENTIFIED BY password" db-types="Oracle"/>
+    <test-case sql="CREATE ROLE role_dev WITH ROLE role2" db-types="PostgreSQL"/>
+    <test-case sql="CREATE ROLE role_dev WITH ROLE role2, role3" db-types="PostgreSQL"/>
+    <test-case sql="CREATE USER IF NOT EXISTS user_dev DEFAULT ROLE default_role" db-types="MySQL"/>
+    <test-case sql="CREATE USER user_dev" db-types="PostgreSQL,SQLServer"/>
+    <test-case sql="CREATE USER user_dev FROM ASYMMETRIC KEY asym_key" db-types="SQLServer"/>
+    <test-case sql="CREATE USER user_dev FROM CERTIFICATE certificate" db-types="SQLServer"/>
+    <test-case sql="CREATE USER user_dev FROM LOGIN login1" db-types="SQLServer"/>
+    <test-case sql="CREATE USER user_dev WITHOUT LOGIN" db-types="SQLServer"/>
+    <test-case sql="CREATE USER user_dev WITH SUPERUSER" db-types="PostgreSQL"/>
+    <test-case sql="CREATE USER user_dev WITH CREATEDB CREATEROLE" db-types="PostgreSQL"/>
+    <test-case sql="CREATE USER user_dev WITH ENCRYPTED PASSWORD 'password'" db-types="PostgreSQL"/>
+    <test-case sql="CREATE USER user_dev IDENTIFIED BY password QUOTA 1M ON tablespace1" db-types="Oracle"/>
+    <test-case sql="CREATE USER user_dev WITH ROLE role2" db-types="PostgreSQL"/>
+    <test-case sql="CREATE USER user_dev WITH ROLE role2, role3" db-types="PostgreSQL"/>
+    <test-case sql="CREATE USER user_dev WITH DEFAULT_SCHEMA = schema" db-types="SQLServer"/>
+    <test-case sql="CREATE USER user_dev IDENTIFIED BY password DEFAULT TABLESPACE tablespace1" db-types="Oracle"/>
+    <test-case sql="DENY UPDATE ON t_order TO user_dev CASCADEK" db-types="SQLServer"/>
+    <test-case sql="DENY ALL PRIVILEGES ON t_order TO user_dev" db-types="SQLServer"/>
+    <test-case sql="DENY INSERT, SELECT, UPDATE, DELETE ON t_order TO user_dev" db-types="SQLServer"/>
+    <test-case sql="DENY SELECT ON t_order TO user_dev" db-types="SQLServer"/>
+    <test-case sql="DENY SELECT (order_id) ON t_order TO user_dev" db-types="SQLServer"/>
+    <test-case sql="DENY SELECT (order_id) ON t_order TO user_dev, user2" db-types="SQLServer"/>
+    <test-case sql="DROP ROLE IF EXISTS default_role" db-types="MySQL,PostgreSQL,SQLServer"/>
+    <test-case sql="DROP USER default_user" db-types="Oracle,PostgreSQL,SQLServer"/>
+    <test-case sql="DROP USER user_dev@localhost" db-types="MySQL,Oracle"/>
+    <test-case sql="DROP USER user_dev CASCADE" db-types="Oracle"/>
+    <test-case sql="DROP ROLE default_role" db-types="MySQL,Oracle,PostgreSQL,SQLServer"/>
+    <test-case sql="DROP LOGIN login1" db-types="SQLServer"/>
+    <test-case sql="RENAME USER 'user_dev'@'localhost' TO 'user_dev'@'127.0.0.1'" db-types="MySQL"/>
+    <test-case sql="GRANT select, update, insert, delete on t_order to default_user" db-types="Oracle,SQLServer"/>
+    <test-case sql="GRANT select, update, insert, delete on t_order to default_user with GRANT option" db-types="Oracle,SQLServer"/>
+    <test-case sql="GRANT role2 to role3" db-types="Oracle,PostgreSQL,SQLServer"/>
+    <test-case sql="GRANT ADVISOR, ALTER DATABASE to user_dev with admin option" db-types="Oracle"/>
+    <test-case sql="GRANT ALL ON sharding_db.* TO 'user_dev'@'localhost'" db-types="MySQL"/>
+    <test-case sql="GRANT ALL ON t_order TO 'user_dev'@'localhost'" db-types="MySQL"/>
+    <test-case sql="GRANT ALL ON sharding_db.t_order TO 'user_dev'@'localhost'" db-types="MySQL"/>
+    <test-case sql="GRANT select, update ON t_order TO 'user_dev'@'localhost'" db-types="MySQL"/>
+    <test-case sql="REVOKE select, update on t_order from default_user" db-types="Oracle,PostgreSQL,SQLServer"/>
+    <test-case sql="REVOKE default_role from default_user" db-types="Oracle,PostgreSQL,SQLServer"/>
+    <test-case sql="REVOKE ADVISOR, ALTER DATABASE from user_dev" db-types="Oracle"/>
+    <test-case sql="REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'user_dev'@'localhost'" db-types="MySQL"/>
+    <test-case sql="REVOKE select, insert ON * FROM 'user_dev'@'localhost'" db-types="MySQL"/>
+    <test-case sql="REVOKE select, insert ON t_order FROM 'user_dev'@'localhost'" db-types="MySQL"/>
+    <test-case sql="REVOKE select, insert ON primary_ds.t_order FROM 'user_dev'@'localhost'" db-types="MySQL"/>
+    <test-case sql="REVOKE ALL PRIVILEGES ON *.* FROM user_dev" db-types="MySQL"/>
+    <test-case sql="REVOKE ALL PRIVILEGES (order_id) ON TABLE t_order FROM role2" db-types="PostgreSQL"/>
+    <test-case sql="REVOKE ALL PRIVILEGES (order_id) ON TABLE t_order FROM role2, role3" db-types="PostgreSQL"/>
+    <test-case sql="REVOKE ALL PRIVILEGES ON db_0.t_order FROM user_dev" db-types="Oracle"/>
+    <test-case sql="REVOKE ALL PRIVILEGES ON SCHEMA public FROM default_role" db-types="PostgreSQL"/>
+    <test-case sql="REVOKE ALL PRIVILEGES ON SCHEMA public FROM default_role, role2" db-types="PostgreSQL"/>
+    <test-case sql="REVOKE ALL PRIVILEGES ON TABLE t_order FROM default_role, role2" db-types="PostgreSQL"/>
+    <test-case sql="REVOKE ALL PRIVILEGES FROM user_dev" db-types="Oracle"/>
+    <test-case sql="REVOKE CREATE ON SCHEMA public FROM default_role" db-types="PostgreSQL"/>
+    <test-case sql="REVOKE INSERT, SELECT, UPDATE, DELETE ON *.* FROM user_dev" db-types="MySQL"/>
+    <test-case sql="REVOKE INSERT, SELECT, UPDATE, DELETE ON t_order FROM user_dev" db-types="SQLServer"/>
+    <test-case sql="REVOKE EXECUTE ON ALL FUNCTIONS IN SCHEMA public FROM default_role" db-types="PostgreSQL"/>
+    <test-case sql="REVOKE SELECT ON db_0.t_order FROM user_dev" db-types="Oracle"/>
+    <test-case sql="REVOKE SELECT (order_id) ON db_0.t_order FROM user_dev" db-types="Oracle"/>
+    <test-case sql="REVOKE SELECT ON db_0.t_order FROM user_dev, user2" db-types="Oracle"/>
+    <test-case sql="REVOKE INSERT, SELECT, UPDATE, DELETE ON db_0.t_order FROM user_dev" db-types="Oracle"/>
+    <test-case sql="REVOKE role_dev FROM FUNCTION db_0.function1" db-types="Oracle"/>
+    <test-case sql="REVOKE default_role, role2 FROM role3, role4" db-types="PostgreSQL"/>
+    <test-case sql="REVOKE role_dev, role2 FROM FUNCTION db_0.function1, FUNCTION db_0.function2" db-types="Oracle"/>
+    <test-case sql="REVOKE SELECT ON *.* FROM user_dev" db-types="MySQL"/>
+    <test-case sql="REVOKE SELECT (order_id) ON TABLE t_order FROM default_role" db-types="PostgreSQL"/>
+    <test-case sql="REVOKE SELECT ON  *.* FROM 'user_dev'@'localhost'" db-types="MySQL"/>
+    <test-case sql="REVOKE SELECT ON ALL SEQUENCES IN SCHEMA public FROM default_role" db-types="PostgreSQL"/>
+    <test-case sql="REVOKE SELECT ON ALL TABLES IN SCHEMA public FROM default_role" db-types="PostgreSQL"/>
+    <test-case sql="REVOKE SELECT (order_id) ON t_order FROM user_dev, user2" db-types="SQLServer"/>
+    <test-case sql="REVOKE CREATE SESSION FROM user_dev" db-types="Oracle"/>
+    <test-case sql="REVOKE CREATE SESSION FROM user_dev, user2" db-types="Oracle"/>
+    <test-case sql="REVOKE CREATE ANY MATERIALIZED VIEW, ALTER ANY MATERIALIZED VIEW, DROP ANY MATERIALIZED VIEW FROM user_dev" db-types="Oracle"/>
+    <test-case sql="REVOKE SELECT ON TABLE t_order FROM default_role" db-types="PostgreSQL"/>
+    <test-case sql="REVOKE SELECT ON t_order FROM user_dev" db-types="SQLServer"/>
+    <test-case sql="SET ROLE ALL EXCEPT role_dev" db-types="MySQL"/>
+    <test-case sql="SET ROLE ALL EXCEPT role_dev, role2" db-types="MySQL"/>
 </integrate-test-cases>
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/ddl-integrate-test-cases.xml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/ddl-integrate-test-cases.xml
index d5ed235..f516a57 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/ddl-integrate-test-cases.xml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/ddl-integrate-test-cases.xml
@@ -16,37 +16,53 @@
   -->
 
 <integrate-test-cases>
-    <ddl-test-case sql="CREATE TABLE t_order_details(id int PRIMARY KEY, description varchar(10))">
-        <assertion table="t_order_details" expected-data-file="create_table.xml" />
-    </ddl-test-case>
-
-    <ddl-test-case sql="CREATE INDEX t_order_details_index ON t_order_details (id)">
-        <assertion init-sql="CREATE TABLE t_order_details(id int, description varchar(10))" table="t_order_details" expected-data-file="create_index.xml" />
-    </ddl-test-case>
-
-    <ddl-test-case sql="CREATE UNIQUE INDEX t_order_details_index ON t_order_details (id)">
-        <assertion init-sql="CREATE TABLE t_order_details(id int, description varchar(10))" table="t_order_details" expected-data-file="create_unique_index.xml" />
-    </ddl-test-case>
+    <test-case sql="CREATE TABLE t_order_details(id int PRIMARY KEY, description varchar(10))">
+        <assertion expected-data-file="create_table.xml">
+            <initial-sql affected-table="t_order_details" />
+        </assertion>
+    </test-case>
+    
+    <test-case sql="CREATE INDEX t_order_details_index ON t_order_details (id)">
+        <assertion expected-data-file="create_index.xml">
+            <initial-sql sql="CREATE TABLE t_order_details(id int, description varchar(10))" affected-table="t_order_details" />
+        </assertion>
+    </test-case>
+    
+    <test-case sql="CREATE UNIQUE INDEX t_order_details_index ON t_order_details (id)">
+        <assertion expected-data-file="create_unique_index.xml">
+            <initial-sql sql="CREATE TABLE t_order_details(id int, description varchar(10))" affected-table="t_order_details" />
+        </assertion>
+    </test-case>
     
-    <ddl-test-case sql="ALTER TABLE t_order_details ADD name varchar(10)">
-        <assertion init-sql="CREATE TABLE t_order_details(id int, description varchar(10))" table="t_order_details" expected-data-file="alter_table.xml" />
-    </ddl-test-case>
+    <test-case sql="ALTER TABLE t_order_details ADD name varchar(10)">
+        <assertion expected-data-file="alter_table.xml">
+            <initial-sql sql="CREATE TABLE t_order_details(id int, description varchar(10))" affected-table="t_order_details" />
+        </assertion>
+    </test-case>
     
-    <ddl-test-case sql="DROP TABLE t_order_details">
-        <assertion init-sql="CREATE TABLE t_order_details(id int, description varchar(10))" table="t_order_details" expected-data-file="drop_table.xml" />
-    </ddl-test-case>
+    <test-case sql="DROP TABLE t_order_details">
+        <assertion expected-data-file="drop_table.xml">
+            <initial-sql sql="CREATE TABLE t_order_details(id int, description varchar(10))" affected-table="t_order_details" />
+        </assertion>
+    </test-case>
     
-    <ddl-test-case sql="DROP INDEX t_order_details_index ON t_order_details" db-types="MySQL,SQLServer">
-        <assertion init-sql="CREATE TABLE t_order_details(id int, description varchar(10));CREATE INDEX t_order_details_index ON t_order_details(description)" table="t_order_details" expected-data-file="unchanged_table.xml" />
-    </ddl-test-case>
+    <test-case sql="DROP INDEX t_order_details_index ON t_order_details" db-types="MySQL,SQLServer">
+        <assertion expected-data-file="unchanged_table.xml">
+            <initial-sql sql="CREATE TABLE t_order_details(id int, description varchar(10));CREATE INDEX t_order_details_index ON t_order_details(description)" affected-table="t_order_details" />
+        </assertion>
+    </test-case>
     
-    <ddl-test-case sql="DROP INDEX order_index" db-types="PostgreSQL,Oracle">
-        <assertion init-sql="CREATE TABLE t_order_details(id int, description varchar(10));CREATE INDEX t_order_details_index ON t_order_details(description)" table="t_order_details" expected-data-file="unchanged_table.xml" />
-    </ddl-test-case>
+    <test-case sql="DROP INDEX order_index" db-types="PostgreSQL,Oracle">
+        <assertion expected-data-file="unchanged_table.xml">
+            <initial-sql sql="CREATE TABLE t_order_details(id int, description varchar(10));CREATE INDEX t_order_details_index ON t_order_details(description)" affected-table="t_order_details" />
+        </assertion>
+    </test-case>
     
-    <ddl-test-case sql="TRUNCATE TABLE t_order_details">
-        <assertion init-sql="CREATE TABLE t_order_details(id int, description varchar(10))" table="t_order_details" expected-data-file="unchanged_table.xml" />
-    </ddl-test-case>
+    <test-case sql="TRUNCATE TABLE t_order_details">
+        <assertion expected-data-file="unchanged_table.xml">
+            <initial-sql sql="CREATE TABLE t_order_details(id int, description varchar(10))" affected-table="t_order_details" />
+        </assertion>
+    </test-case>
     
     <!-- TODO add single table DDL test cases -->
 </integrate-test-cases>
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/dml/dml-integrate-test-cases.xml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/dml/dml-integrate-test-cases.xml
index 915aa9c..8145c10 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/dml/dml-integrate-test-cases.xml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/dml/dml-integrate-test-cases.xml
@@ -16,144 +16,144 @@
   -->
 
 <integrate-test-cases>
-   <dml-test-case sql="INSERT INTO t_order (order_id, user_id, status) VALUES (?, ?, ?)">
+   <test-case sql="INSERT INTO t_order (order_id, user_id, status) VALUES (?, ?, ?)">
        <assertion parameters="1:int, 1:int, insert:String" expected-data-file="insert_for_order_1.xml" />
        <assertion parameters="2:int, 2:int, insert:String" expected-data-file="insert_for_order_2.xml" />
-    </dml-test-case>
+    </test-case>
     
-    <dml-test-case sql="INSERT INTO t_order_item (item_id, order_id, user_id, status, creation_date) VALUES (?, ?, ?, 'insert', now())" db-types="MySQL">
+    <test-case sql="INSERT INTO t_order_item (item_id, order_id, user_id, status, creation_date) VALUES (?, ?, ?, 'insert', now())" db-types="MySQL">
         <assertion parameters="1:int, 1:int, 1:int" expected-data-file="insert_with_now_function.xml" />
-    </dml-test-case>
+    </test-case>
     
-    <dml-test-case sql="INSERT INTO t_order (order_id, user_id, status) VALUES (1, 1, 'insert'), (2, 2, 'insert2')" db-types="MySQL">
+    <test-case sql="INSERT INTO t_order (order_id, user_id, status) VALUES (1, 1, 'insert'), (2, 2, 'insert2')" db-types="MySQL">
         <assertion expected-data-file="insert_multiple_values_for_order_1_2.xml" />
-    </dml-test-case>
+    </test-case>
     
-    <dml-test-case sql="INSERT INTO t_order (order_id, user_id, status) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE status = VALUES(status)" db-types="MySQL">
+    <test-case sql="INSERT INTO t_order (order_id, user_id, status) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE status = VALUES(status)" db-types="MySQL">
         <assertion parameters="1000:int, 10:int, update:String" expected-data-file="insert_on_duplicate_key_update.xml" />
-    </dml-test-case>
+    </test-case>
     
     <!-- TODO fixme -->
-    <!--<dml-test-case sql="INSERT INTO t_order (t_order.order_id, t_order.user_id, t_order.status) VALUES (?, ?, ?)">-->
+    <!--<test-case sql="INSERT INTO t_order (t_order.order_id, t_order.user_id, t_order.status) VALUES (?, ?, ?)">-->
         <!--<assertion parameters="1:int, 1:int, insert:String" expected-data-file="insert_for_order_1.xml" />-->
         <!--<assertion parameters="2:int, 2:int, insert:String" expected-data-file="insert_for_order_2.xml" />-->
-    <!--</dml-test-case>-->
+    <!--</test-case>-->
     
-    <dml-test-case sql="INSERT INTO t_order VALUES (?, ?, ?)">
+    <test-case sql="INSERT INTO t_order VALUES (?, ?, ?)">
         <assertion parameters="1:int, 1:int, insert:String" expected-data-file="insert_for_order_1.xml" />
         <assertion parameters="2:int, 2:int, insert:String" expected-data-file="insert_for_order_2.xml" />
-    </dml-test-case>
+    </test-case>
     
-    <dml-test-case sql="INSERT INTO t_order SET order_id = ?, user_id = ?, status = ?" db-types="MySQL">
+    <test-case sql="INSERT INTO t_order SET order_id = ?, user_id = ?, status = ?" db-types="MySQL">
         <assertion parameters="1:int, 1:int, insert:String" expected-data-file="insert_for_order_1.xml" />
         <assertion parameters="2:int, 2:int, insert:String" expected-data-file="insert_for_order_2.xml" />
-    </dml-test-case>
+    </test-case>
     
     <!-- TODO fixme -->
-    <!--<dml-test-case sql="INSERT INTO t_order SET t_order.order_id = ?, t_order.user_id = ?, t_order.status = ?" db-types="MySQL">-->
+    <!--<test-case sql="INSERT INTO t_order SET t_order.order_id = ?, t_order.user_id = ?, t_order.status = ?" db-types="MySQL">-->
         <!--<assertion parameters="1:int, 1:int, insert:String" expected-data-file="insert_for_order_1.xml" />-->
         <!--<assertion parameters="2:int, 2:int, insert:String" expected-data-file="insert_for_order_2.xml" />-->
-    <!--</dml-test-case>-->
+    <!--</test-case>-->
     
-    <dml-test-case sql="INSERT INTO t_order SET order_id = ?, user_id = ?, status = 'insert'" db-types="MySQL">
+    <test-case sql="INSERT INTO t_order SET order_id = ?, user_id = ?, status = 'insert'" db-types="MySQL">
         <assertion parameters="1:int, 1:int" expected-data-file="insert_for_order_1.xml" />
         <assertion parameters="2:int, 2:int" expected-data-file="insert_for_order_2.xml" />
-    </dml-test-case>
+    </test-case>
     
-    <dml-test-case sql="INSERT INTO t_order_item(item_id, order_id, user_id, status, creation_date) values (?, ?, ?, 'insert', '2017-08-08')">
+    <test-case sql="INSERT INTO t_order_item(item_id, order_id, user_id, status, creation_date) values (?, ?, ?, 'insert', '2017-08-08')">
         <assertion parameters="1:int, 1:int, 1:int" expected-data-file="insert_with_generate_key_column.xml" />
-    </dml-test-case>
+    </test-case>
     
-    <dml-test-case sql="INSERT INTO t_order_item values(?, ?, ?, 'insert', '2017-08-08')">
+    <test-case sql="INSERT INTO t_order_item values(?, ?, ?, 'insert', '2017-08-08')">
         <assertion parameters="1:int, 1:int, 1:int" expected-data-file="insert_with_generate_key_column.xml" />
-    </dml-test-case>
+    </test-case>
     
-    <dml-test-case sql="INSERT INTO t_order_item SET item_id = ?, order_id = ?, user_id = ?, status = 'insert', creation_date='2017-08-08'" db-types="MySQL">
+    <test-case sql="INSERT INTO t_order_item SET item_id = ?, order_id = ?, user_id = ?, status = 'insert', creation_date='2017-08-08'" db-types="MySQL">
         <assertion parameters="1:int, 1:int, 1:int" expected-data-file="insert_with_generate_key_column.xml" />
-    </dml-test-case>
+    </test-case>
     
-    <dml-test-case sql="INSERT INTO t_order_item values(?, ?, 'insert', '2017-08-08')">
+    <test-case sql="INSERT INTO t_order_item values(?, ?, 'insert', '2017-08-08')">
         <assertion sharding-rule-type="dbtbl_with_replica_query" parameters="1:int, 1:int" expected-data-file="insert_with_generate_key_column.xml" />
         <!-- TODO add gen column on create table -->
         <!--<assertion parameters="1:int, 1:int" expected-data-file="insert_with_generate_key_column.xml" />-->
-    </dml-test-case>
+    </test-case>
     
-    <dml-test-case sql="INSERT INTO t_order_item(order_id, user_id, status, creation_date) values (?, ?, 'insert', '2017-08-08')">
+    <test-case sql="INSERT INTO t_order_item(order_id, user_id, status, creation_date) values (?, ?, 'insert', '2017-08-08')">
         <assertion parameters="1:int, 1:int" expected-data-file="insert_without_generate_key_column.xml" />
-    </dml-test-case>
+    </test-case>
 
-    <dml-test-case sql="INSERT INTO t_order_item SET order_id = ?, user_id = ?, status = 'insert', creation_date='2017-08-08'" db-types="MySQL">
+    <test-case sql="INSERT INTO t_order_item SET order_id = ?, user_id = ?, status = 'insert', creation_date='2017-08-08'" db-types="MySQL">
         <assertion parameters="1:int, 1:int" expected-data-file="insert_without_generate_key_column.xml" />
-    </dml-test-case>
+    </test-case>
     
-    <dml-test-case sql="INSERT INTO t_order (order_id, user_id, status) VALUES (?, ?, ?), (?, ?, ?)">
+    <test-case sql="INSERT INTO t_order (order_id, user_id, status) VALUES (?, ?, ?), (?, ?, ?)">
         <assertion parameters="1:int, 1:int, insert:String, 2:int, 2:int, insert:String" expected-data-file="batch_insert_for_order.xml" />
-    </dml-test-case>
+    </test-case>
 
-    <dml-test-case sql="INSERT INTO t_order (order_id, user_id, status) VALUES (?, 1, 'insert'), (?, ?, ?)">
+    <test-case sql="INSERT INTO t_order (order_id, user_id, status) VALUES (?, 1, 'insert'), (?, ?, ?)">
         <assertion parameters="1:int, 2:int, 2:int, insert:String" expected-data-file="batch_insert_for_order.xml" />
-    </dml-test-case>
+    </test-case>
 
-    <!--<dml-test-case sql="INSERT INTO t_order (order_id, user_id, status) VALUES (?, ?, SUBSTR(?, 1)), (?, ?, SUBSTR(?, 1))" db-types="H2,MySQL" >-->
+    <!--<test-case sql="INSERT INTO t_order (order_id, user_id, status) VALUES (?, ?, SUBSTR(?, 1)), (?, ?, SUBSTR(?, 1))" db-types="H2,MySQL" >-->
         <!--<assertion parameters="1:int, 1:int, insert:String, 2:int, 2:int, insert:String" expected-data-file="batch_insert_for_order.xml" />-->
-    <!--</dml-test-case>-->
+    <!--</test-case>-->
     
-    <dml-test-case sql="INSERT INTO t_order_item(item_id, order_id, user_id, status, creation_date) values (?, ?, ?, 'insert', '2017-08-08'), (?, ?, ?, 'insert', '2017-08-08')">
+    <test-case sql="INSERT INTO t_order_item(item_id, order_id, user_id, status, creation_date) values (?, ?, ?, 'insert', '2017-08-08'), (?, ?, ?, 'insert', '2017-08-08')">
         <assertion parameters="1:int, 1:int, 1:int, 2:int, 2:int, 2:int" expected-data-file="batch_insert_with_generate_key_column.xml" />
-    </dml-test-case>
+    </test-case>
     
-    <!--<dml-test-case sql="INSERT INTO t_order_item(order_id, user_id, status, creation_date) values (?, ?, 'insert', '2017-08-08'), (?, ?, 'insert', '2017-08-08')">-->
+    <!--<test-case sql="INSERT INTO t_order_item(order_id, user_id, status, creation_date) values (?, ?, 'insert', '2017-08-08'), (?, ?, 'insert', '2017-08-08')">-->
         <!--<assertion sharding-rule-type="dbtbl_with_replica_query" parameters="1:int, 1:int, 2:int, 2:int" expected-data-file="batch_insert_without_generate_key_column.xml" />-->
         <!--&lt;!&ndash; TODO add gen column on create table &ndash;&gt;-->
         <!--&lt;!&ndash;<assertion parameters="1:int, 1:int, 2:int, 2:int" expected-data-file="batch_insert_without_generate_key_column.xml" />&ndash;&gt;-->
-    <!--</dml-test-case>-->
+    <!--</test-case>-->
     
-    <dml-test-case sql="UPDATE t_order SET status = ? WHERE order_id = ? AND user_id = ?">
+    <test-case sql="UPDATE t_order SET status = ? WHERE order_id = ? AND user_id = ?">
         <assertion parameters="update:String, 1000:int, 10:int" expected-data-file="update.xml" />
-    </dml-test-case>
+    </test-case>
     
-    <dml-test-case sql="UPDATE t_order AS o SET o.status = ? WHERE o.order_id = ? AND o.user_id = ?" db-types="MySQL,H2">
+    <test-case sql="UPDATE t_order AS o SET o.status = ? WHERE o.order_id = ? AND o.user_id = ?" db-types="MySQL,H2">
         <assertion parameters="update:String, 1000:int, 10:int" expected-data-file="update.xml" />
-    </dml-test-case>
+    </test-case>
     
-    <dml-test-case sql="UPDATE t_order o SET o.status = 'finished'" db-types="MySQL,H2">
+    <test-case sql="UPDATE t_order o SET o.status = 'finished'" db-types="MySQL,H2">
         <assertion expected-data-file="update_without_condition.xml" />
-    </dml-test-case>
+    </test-case>
     
-    <dml-test-case sql="UPDATE /*+ index(field1) */ ONLY t_order SET status=? WHERE order_id = ? AND user_id = ? RETURN * LOG ERRORS INTO TABLE_LOG" db-types="Oracle">
+    <test-case sql="UPDATE /*+ index(field1) */ ONLY t_order SET status=? WHERE order_id = ? AND user_id = ? RETURN * LOG ERRORS INTO TABLE_LOG" db-types="Oracle">
         <assertion parameters="update:String, 1000:int, 10:int" expected-data-file="update.xml" />
-    </dml-test-case>
+    </test-case>
     
-    <dml-test-case sql="UPDATE t_order SET status = 'update' WHERE order_id = 1000 AND user_id = 10">
+    <test-case sql="UPDATE t_order SET status = 'update' WHERE order_id = 1000 AND user_id = 10">
         <assertion expected-data-file="update.xml" />
-    </dml-test-case>
+    </test-case>
 
-    <dml-test-case sql="UPDATE t_order SET status = 'update' WHERE (order_id = ? OR order_id = ?) AND user_id = ?">
+    <test-case sql="UPDATE t_order SET status = 'update' WHERE (order_id = ? OR order_id = ?) AND user_id = ?">
         <assertion parameters="1000:int, 0:int, 10:int" expected-data-file="update.xml" />
-    </dml-test-case>
+    </test-case>
 
-    <dml-test-case sql="update t_order set status = status where user_id = user_id AND order_id = 1000">
+    <test-case sql="update t_order set status = status where user_id = user_id AND order_id = 1000">
         <assertion expected-data-file="update_with_column_equal_column.xml" />
-    </dml-test-case>
+    </test-case>
 
-    <dml-test-case sql="DELETE FROM t_order WHERE order_id = ? AND user_id = ? AND status=?">
+    <test-case sql="DELETE FROM t_order WHERE order_id = ? AND user_id = ? AND status=?">
         <assertion parameters="1000:int, 10:int, init:String" expected-data-file="delete_with_sharding_value.xml" />
-    </dml-test-case>
+    </test-case>
     
-    <dml-test-case sql="DELETE FROM t_order WHERE status=?">
+    <test-case sql="DELETE FROM t_order WHERE status=?">
         <assertion parameters="init:String" expected-data-file="delete_without_sharding_value.xml" />
-    </dml-test-case>
+    </test-case>
     
-    <dml-test-case sql="DELETE /*+ index(status) */ ONLY t_order WHERE status=1 RETURN * LOG ERRORS INTO TABLE_LOG" db-types="Oracle">
+    <test-case sql="DELETE /*+ index(status) */ ONLY t_order WHERE status=1 RETURN * LOG ERRORS INTO TABLE_LOG" db-types="Oracle">
         <assertion expected-data-file="delete_with_special_comments_return_without_sharding_value.xml" />
-    </dml-test-case>
+    </test-case>
     
-    <dml-test-case sql="DELETE /*+ index(status) */ ONLY (t_order) WHERE status=1 RETURNING *" db-types="Oracle">
+    <test-case sql="DELETE /*+ index(status) */ ONLY (t_order) WHERE status=1 RETURNING *" db-types="Oracle">
         <assertion expected-data-file="delete_with_special_comments_returning_without_sharding_value.xml" />
-    </dml-test-case>
+    </test-case>
     
     <!-- Can't support delete multiple tables-->
-    <!--<dml-test-case sql="DELETE o FROM t_order AS o WHERE status=?" db-types="MySQL,Oracle,SQLServer">-->
+    <!--<test-case sql="DELETE o FROM t_order AS o WHERE status=?" db-types="MySQL,Oracle,SQLServer">-->
         <!--<assertion parameters="init:String" expected-data-file="delete_with_alias.xml" />-->
-    <!--</dml-test-case>-->
+    <!--</test-case>-->
 </integrate-test-cases>
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/dql/dql-integrate-test-cases.xml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/dql/dql-integrate-test-cases.xml
index 52ea4e5..fa1fd4f 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/dql/dql-integrate-test-cases.xml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/dql/dql-integrate-test-cases.xml
@@ -16,465 +16,465 @@
   -->
 
 <integrate-test-cases>
-    <dql-test-case sql="SELECT 1 as a">
+    <test-case sql="SELECT 1 as a">
         <assertion expected-data-file="select_constant_without_table.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT t_order.* FROM t_order t_order WHERE user_id = ? AND order_id = ?">
+    <test-case sql="SELECT t_order.* FROM t_order t_order WHERE user_id = ? AND order_id = ?">
         <assertion parameters="10:int, 1000:int" expected-data-file="select_equal_with_single_table.xml" />
         <assertion parameters="12:int, 1000:int" expected-data-file="empty_order.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT t_order.order_id,t_order.user_id,status FROM t_order t_order WHERE t_order.user_id = ? AND order_id = ?" db-types="MySQL,H2">
+    <test-case sql="SELECT t_order.order_id,t_order.user_id,status FROM t_order t_order WHERE t_order.user_id = ? AND order_id = ?" db-types="MySQL,H2">
         <assertion parameters="10:int, 1000:int" expected-data-file="select_equal_with_single_table.xml" />
         <assertion parameters="12:int, 1000:int" expected-data-file="empty_order.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT * FROM t_order_item WHERE item_id &lt;&gt; ? ORDER BY item_id">
+    <test-case sql="SELECT * FROM t_order_item WHERE item_id &lt;&gt; ? ORDER BY item_id">
         <assertion parameters="100001:int" expected-data-file="select_not_equal_with_single_table.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT * FROM t_order_item WHERE item_id != ? ORDER BY item_id">
+    <test-case sql="SELECT * FROM t_order_item WHERE item_id != ? ORDER BY item_id">
         <assertion parameters="100001:int" expected-data-file="select_not_equal_with_single_table.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT * FROM t_order_item WHERE item_id IS NOT NULL AND item_id NOT IN (?, ?) ORDER BY item_id">
+    <test-case sql="SELECT * FROM t_order_item WHERE item_id IS NOT NULL AND item_id NOT IN (?, ?) ORDER BY item_id">
         <assertion parameters="100000:int, 100001:int" expected-data-file="select_not_in_with_single_table.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT * FROM t_order_item WHERE item_id IS NOT NULL AND item_id NOT BETWEEN ? AND ? ORDER BY item_id">
+    <test-case sql="SELECT * FROM t_order_item WHERE item_id IS NOT NULL AND item_id NOT BETWEEN ? AND ? ORDER BY item_id">
         <assertion parameters="100000:int, 100001:int" expected-data-file="select_not_in_with_single_table.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT * FROM t_order WHERE user_id = ? AND order_id = ?">
+    <test-case sql="SELECT * FROM t_order WHERE user_id = ? AND order_id = ?">
         <assertion parameters="10:int, 1000:int" expected-data-file="select_equal_with_single_table.xml" />
         <assertion parameters="12:int, 1000:int" expected-data-file="empty_order.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT * FROM t_order WHERE order_id = ? AND order_id = ?">
+    <test-case sql="SELECT * FROM t_order WHERE order_id = ? AND order_id = ?">
         <assertion parameters="1000:int, 1001:int" expected-data-file="empty_order.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT * FROM t_order WHERE order_id IN (?, ?) AND order_id IN (?, ?) ORDER BY order_id">
+    <test-case sql="SELECT * FROM t_order WHERE order_id IN (?, ?) AND order_id IN (?, ?) ORDER BY order_id">
         <assertion parameters="1000:int, 1001:int, 1001:int, 1100:int" expected-data-file="select_in_with_same_sharding_column.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT * FROM t_order WHERE user_id IN (?, ?, ?) AND order_id IN (?, ?) ORDER BY user_id, order_id">
+    <test-case sql="SELECT * FROM t_order WHERE user_id IN (?, ?, ?) AND order_id IN (?, ?) ORDER BY user_id, order_id">
         <assertion parameters="10:int, 12:int, 15:int, 1000:int, 1101:int" expected-data-file="select_in_with_single_table.xml" />
         <assertion parameters="10:int, 12:int, 15:int, 1309:int, 1408:int" expected-data-file="empty_order.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT * FROM t_order WHERE user_id BETWEEN ? AND ? AND order_id BETWEEN ? AND ? ORDER BY user_id, order_id">
+    <test-case sql="SELECT * FROM t_order WHERE user_id BETWEEN ? AND ? AND order_id BETWEEN ? AND ? ORDER BY user_id, order_id">
         <assertion parameters="10:int, 12:int, 1009:int, 1108:int" expected-data-file="select_between_with_single_table.xml" />
         <assertion parameters="10:int, 12:int, 1309:int, 1408:int" expected-data-file="empty_order.xml" />
-    </dql-test-case>
-
-    <dql-test-case sql="SELECT * FROM t_order WHERE user_id &gt;= ? AND user_id &lt;= ? AND order_id &gt;= ? AND order_id &lt;= ? ORDER BY user_id, order_id">
+    </test-case>
+    
+    <test-case sql="SELECT * FROM t_order WHERE user_id &gt;= ? AND user_id &lt;= ? AND order_id &gt;= ? AND order_id &lt;= ? ORDER BY user_id, order_id">
         <assertion parameters="10:int, 12:int, 1009:int, 1108:int" expected-data-file="select_comparison_symbol_with_single_table.xml" />
         <assertion parameters="10:int, 12:int, 1309:int, 1408:int" expected-data-file="empty_order.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT count(0) as orders_count FROM t_order o WHERE o.status LIKE CONCAT('%%', ?, '%%') AND o.user_id IN (?, ?) AND o.order_id BETWEEN ? AND ?">
+    <test-case sql="SELECT count(0) as orders_count FROM t_order o WHERE o.status LIKE CONCAT('%%', ?, '%%') AND o.user_id IN (?, ?) AND o.order_id BETWEEN ? AND ?">
         <assertion parameters="init:String, 10:int, 11:int, 1000:int, 2901:int" expected-data-file="select_count_like_concat.xml" />
-    </dql-test-case>
-
-    <dql-test-case sql="SELECT count(0) as orders_count FROM t_order o WHERE o.status ~~ CONCAT('%%', ?, '%%') AND o.user_id IN (?, ?) AND o.order_id BETWEEN ? AND ?" db-types="PostgreSQL">
+    </test-case>
+    
+    <test-case sql="SELECT count(0) as orders_count FROM t_order o WHERE o.status ~~ CONCAT('%%', ?, '%%') AND o.user_id IN (?, ?) AND o.order_id BETWEEN ? AND ?" db-types="PostgreSQL">
         <assertion parameters="init:String, 10:int, 11:int, 1000:int, 2901:int" expected-data-file="select_count_tilde_concat.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT i.* FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id WHERE o.user_id IN (?, ?) AND o.order_id BETWEEN ? AND ? ORDER BY i.item_id">
+    <test-case sql="SELECT i.* FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id WHERE o.user_id IN (?, ?) AND o.order_id BETWEEN ? AND ? ORDER BY i.item_id">
         <assertion parameters="10:int, 11:int, 1000:int, 1909:int" expected-data-file="select_sharding_route_with_binding_tables.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT i.* FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id ORDER BY i.item_id">
+    <test-case sql="SELECT i.* FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id ORDER BY i.item_id">
         <assertion expected-data-file="select_full_route_with_binding_tables.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT i.* FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id JOIN t_broadcast_table c ON o.status = c.status WHERE o.user_id IN (?, ?) AND o.order_id BETWEEN ? AND ? AND o.status = ? ORDER BY i.item_id">
+    <test-case sql="SELECT i.* FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id JOIN t_broadcast_table c ON o.status = c.status WHERE o.user_id IN (?, ?) AND o.order_id BETWEEN ? AND ? AND o.status = ? ORDER BY i.item_id">
         <assertion parameters="10:int, 11:int, 1001:int, 1100:int, init:String" expected-data-file="select_sharding_route_with_broadcast_table.xml" />
         <assertion parameters="10:int, 11:int, 1009:int, 1108:int, none:String" expected-data-file="empty_order_item.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT length.item_id password FROM t_order_item length where length.item_id = ? " db-types="MySQL,H2,SQLServer,Oracle">
+    <test-case sql="SELECT length.item_id password FROM t_order_item length where length.item_id = ? " db-types="MySQL,H2,SQLServer,Oracle">
         <assertion parameters="100001:int" expected-data-file="select_alias_as_keyword.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT i.* FROM t_order o FORCE INDEX(order_index) JOIN t_order_item i ON o.order_id=i.order_id WHERE o.order_id = ?" db-types="MySQL">
+    <test-case sql="SELECT i.* FROM t_order o FORCE INDEX(order_index) JOIN t_order_item i ON o.order_id=i.order_id WHERE o.order_id = ?" db-types="MySQL">
         <assertion parameters="1000:int" expected-data-file="select_with_force_index_join.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT SUM(user_id) AS user_id_sum FROM t_order">
+    <test-case sql="SELECT SUM(user_id) AS user_id_sum FROM t_order">
         <assertion expected-data-file="select_sum.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT COUNT(*) AS orders_count FROM t_order">
+    <test-case sql="SELECT COUNT(*) AS orders_count FROM t_order">
         <assertion expected-data-file="select_count.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT COUNT(*) AS orders_count FROM t_order WHERE order_id > 1-1">
+    <test-case sql="SELECT COUNT(*) AS orders_count FROM t_order WHERE order_id > 1-1">
         <assertion expected-data-file="select_count_with_sub.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT COUNT(*) AS orders_count FROM t_order WHERE order_id > 1 - 1">
+    <test-case sql="SELECT COUNT(*) AS orders_count FROM t_order WHERE order_id > 1 - 1">
         <assertion expected-data-file="select_count_with_sub_with_whitespace.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT MAX(user_id) AS max_user_id FROM t_order">
+    <test-case sql="SELECT MAX(user_id) AS max_user_id FROM t_order">
         <assertion expected-data-file="select_max.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT MIN(user_id) AS min_user_id FROM t_order">
+    <test-case sql="SELECT MIN(user_id) AS min_user_id FROM t_order">
         <assertion expected-data-file="select_min.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT AVG(user_id) AS user_id_avg FROM t_order">
+    <test-case sql="SELECT AVG(user_id) AS user_id_avg FROM t_order">
         <assertion expected-data-file="select_avg.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT COUNT(*) AS items_count FROM t_order o, t_order_item i WHERE o.user_id = i.user_id AND o.order_id = i.order_id AND o.user_id IN (?, ?) AND o.order_id BETWEEN ? AND ?">
+    <test-case sql="SELECT COUNT(*) AS items_count FROM t_order o, t_order_item i WHERE o.user_id = i.user_id AND o.order_id = i.order_id AND o.user_id IN (?, ?) AND o.order_id BETWEEN ? AND ?">
         <assertion parameters="10:int, 11:int, 1000:int, 1909:int" expected-data-file="select_count_with_binding_tables.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT COUNT(*) AS items_count FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id WHERE o.user_id IN (?, ?) AND o.order_id BETWEEN ? AND ?">
+    <test-case sql="SELECT COUNT(*) AS items_count FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id WHERE o.user_id IN (?, ?) AND o.order_id BETWEEN ? AND ?">
         <assertion parameters="10:int, 11:int, 1000:int, 1909:int" expected-data-file="select_count_with_binding_tables.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT COUNT(`order_id`) AS orders_count FROM t_order" db-types="MySQL">
+    <test-case sql="SELECT COUNT(`order_id`) AS orders_count FROM t_order" db-types="MySQL">
         <assertion expected-data-file="select_count.xml" />
-    </dql-test-case>
-
-    <dql-test-case sql="SELECT * /* this is &#x000D;&#x000A; block comment */ FROM /* this is another &#x000A; block comment */ t_order where status='1'" db-types="MySQL">
+    </test-case>
+    
+    <test-case sql="SELECT * /* this is &#x000D;&#x000A; block comment */ FROM /* this is another &#x000A; block comment */ t_order where status='1'" db-types="MySQL">
         <assertion expected-data-file="empty_order.xml" />
-    </dql-test-case>
-
-    <dql-test-case sql="SELECT * -- this is an line comment &#x000D;&#x000A; FROM -- this is another line comment &#x000A; t_order where status='1'" db-types="MySQL">
+    </test-case>
+    
+    <test-case sql="SELECT * -- this is an line comment &#x000D;&#x000A; FROM -- this is another line comment &#x000A; t_order where status='1'" db-types="MySQL">
         <assertion expected-data-file="empty_order.xml" />
-    </dql-test-case>
-
-    <dql-test-case sql="SELECT o.order_id + 1 * 2 as exp FROM t_order AS o ORDER BY o.order_id">
+    </test-case>
+    
+    <test-case sql="SELECT o.order_id + 1 * 2 as exp FROM t_order AS o ORDER BY o.order_id">
         <assertion expected-data-file="select_with_expression.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT DATE(i.creation_date) AS creation_date FROM `t_order_item` AS i ORDER BY DATE(i.creation_date) DESC" db-types="MySQL">
+    <test-case sql="SELECT DATE(i.creation_date) AS creation_date FROM `t_order_item` AS i ORDER BY DATE(i.creation_date) DESC" db-types="MySQL">
         <assertion expected-data-file="select_with_date_function.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT * FROM t_order_item t WHERE t.status REGEXP ? AND t.item_id IN (?, ?)" db-types="MySQL">
+    <test-case sql="SELECT * FROM t_order_item t WHERE t.status REGEXP ? AND t.item_id IN (?, ?)" db-types="MySQL">
         <assertion parameters="init:String, 100000:int, 100001:int" expected-data-file="select_with_regexp.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT SUM(order_id) AS orders_sum, user_id FROM t_order GROUP BY user_id ORDER BY user_id">
+    <test-case sql="SELECT SUM(order_id) AS orders_sum, user_id FROM t_order GROUP BY user_id ORDER BY user_id">
         <assertion expected-data-file="select_group_by_with_sum.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT COUNT(order_id) AS orders_count, user_id FROM t_order GROUP BY user_id ORDER BY user_id">
+    <test-case sql="SELECT COUNT(order_id) AS orders_count, user_id FROM t_order GROUP BY user_id ORDER BY user_id">
         <assertion expected-data-file="select_group_by_with_count.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT MAX(order_id) AS max_order_id, user_id FROM t_order GROUP BY user_id ORDER BY user_id">
+    <test-case sql="SELECT MAX(order_id) AS max_order_id, user_id FROM t_order GROUP BY user_id ORDER BY user_id">
         <assertion expected-data-file="select_group_by_with_max.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT MIN(order_id) AS min_order_id, user_id FROM t_order GROUP BY user_id ORDER BY user_id">
+    <test-case sql="SELECT MIN(order_id) AS min_order_id, user_id FROM t_order GROUP BY user_id ORDER BY user_id">
         <assertion expected-data-file="select_group_by_with_min.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT AVG(order_id) AS orders_avg, user_id FROM t_order GROUP BY user_id ORDER BY user_id">
+    <test-case sql="SELECT AVG(order_id) AS orders_avg, user_id FROM t_order GROUP BY user_id ORDER BY user_id">
         <assertion expected-data-file="select_group_by_with_avg.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT SUM(order_id) AS orders_sum, user_id FROM t_order GROUP BY user_id ORDER BY orders_sum DESC">
+    <test-case sql="SELECT SUM(order_id) AS orders_sum, user_id FROM t_order GROUP BY user_id ORDER BY orders_sum DESC">
         <assertion expected-data-file="select_group_by_with_order_by_desc.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT count(*) as items_count FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id WHERE o.user_id IN (?, ?) AND o.order_id BETWEEN ? AND ? GROUP BY o.user_id">
+    <test-case sql="SELECT count(*) as items_count FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id WHERE o.user_id IN (?, ?) AND o.order_id BETWEEN ? AND ? GROUP BY o.user_id">
         <assertion parameters="10:int, 11:int, 1000:int, 1109:int" expected-data-file="select_group_by_without_grouped_column.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT user_id FROM t_order GROUP BY user_id ORDER BY user_id LIMIT ?" db-types="H2,MySQL,PostgreSQL">
+    <test-case sql="SELECT user_id FROM t_order GROUP BY user_id ORDER BY user_id LIMIT ?" db-types="H2,MySQL,PostgreSQL">
         <assertion parameters="1:int" expected-data-file="select_group_by_with_limit.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT user_id, SUM(order_id) AS orders_sum FROM t_order GROUP BY user_id ORDER BY SUM(order_id) LIMIT ?" db-types="H2,MySQL,PostgreSQL">
+    <test-case sql="SELECT user_id, SUM(order_id) AS orders_sum FROM t_order GROUP BY user_id ORDER BY SUM(order_id) LIMIT ?" db-types="H2,MySQL,PostgreSQL">
         <assertion parameters="1:int" expected-data-file="select_group_by_with_order_by_and_limit.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT o.user_id uid FROM t_order o GROUP BY o.user_id ORDER BY o.user_id" db-types="H2,MySQL,SQLServer,PostgreSQL">
+    <test-case sql="SELECT o.user_id uid FROM t_order o GROUP BY o.user_id ORDER BY o.user_id" db-types="H2,MySQL,SQLServer,PostgreSQL">
         <assertion expected-data-file="select_with_item_alias_match_order_by_and_group_by_items.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT SUM(order_id) AS orders_sum, user_id as `key` FROM t_order GROUP BY `key`" db-types="MySQL">
+    <test-case sql="SELECT SUM(order_id) AS orders_sum, user_id as `key` FROM t_order GROUP BY `key`" db-types="MySQL">
         <assertion expected-data-file="select_group_by_with_keyword_alias.xml" />
-    </dql-test-case>
+    </test-case>
 
-    <dql-test-case sql="SELECT COUNT(order_id) AS orders_count, user_id FROM t_order GROUP BY 2 ORDER BY 2" db-types="MySQL,Oracle,SQLServer,PostgreSQL">
+    <test-case sql="SELECT COUNT(order_id) AS orders_count, user_id FROM t_order GROUP BY 2 ORDER BY 2" db-types="MySQL,Oracle,SQLServer,PostgreSQL">
         <assertion expected-data-file="select_group_by_with_count_without_column_name.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <!--<dql-test-case sql="SELECT date_format(creation_date,  '%%y-%%m-%%d') as creation_date, count(*) as c_number FROM `t_order_item` WHERE order_id in (?, ?) GROUP BY date_format(creation_date, '%%y-%%m-%%d')" db-types="MySQL">-->
+    <!--<test-case sql="SELECT date_format(creation_date,  '%%y-%%m-%%d') as creation_date, count(*) as c_number FROM `t_order_item` WHERE order_id in (?, ?) GROUP BY date_format(creation_date, '%%y-%%m-%%d')" db-types="MySQL">-->
         <!--<assertion sharding-rule-type="dbtbl_with_replica_query" parameters="1000:int, 1100:int" expected-data-file="select_group_by_with_date_function.xml" />-->
-    <!--</dql-test-case>-->
+    <!--</test-case>-->
     
-    <dql-test-case sql="SELECT * FROM t_order WHERE order_id = ? OR order_id = ?">
+    <test-case sql="SELECT * FROM t_order WHERE order_id = ? OR order_id = ?">
         <assertion parameters="1000:int, 1001:int" expected-data-file="select_or_with_same_sharding_columns.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT * FROM t_order WHERE order_id = ? OR user_id = ?">
+    <test-case sql="SELECT * FROM t_order WHERE order_id = ? OR user_id = ?">
         <assertion parameters="1000:int, 11:int" expected-data-file="select_or_with_different_sharding_columns.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT * FROM t_order WHERE order_id = ? OR status = ?">
+    <test-case sql="SELECT * FROM t_order WHERE order_id = ? OR status = ?">
         <assertion parameters="1000:int, init:String" expected-data-file="select_or_with_none_sharding_columns.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT * FROM t_order WHERE (order_id = ? OR status = ?) AND user_id = ?">
+    <test-case sql="SELECT * FROM t_order WHERE (order_id = ? OR status = ?) AND user_id = ?">
         <assertion parameters="1000:int, init:String, 11:int" expected-data-file="select_or_mix_and_for_simple_pattern.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT * FROM t_order WHERE ((status = ? AND (order_id = ? OR (order_id = ?)) AND (user_id = ? OR (user_id = ?))))">
+    <test-case sql="SELECT * FROM t_order WHERE ((status = ? AND (order_id = ? OR (order_id = ?)) AND (user_id = ? OR (user_id = ?))))">
         <assertion parameters="init:String, 1000:int, 1100:int, 10:int, 11:int" expected-data-file="select_or_mix_and_for_complex_pattern.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT i.* FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id WHERE (o.order_id = ? OR o.order_id = ?) AND o.user_id = ?">
+    <test-case sql="SELECT i.* FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id WHERE (o.order_id = ? OR o.order_id = ?) AND o.user_id = ?">
         <assertion parameters="1000:int, 1100:int, 11:int" expected-data-file="select_or_mix_and_with_binding_tables.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT i.* FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id JOIN t_broadcast_table c ON o.status = c.status WHERE (o.order_id = ? OR o.order_id = ?) AND o.user_id = ? AND o.status = ?">
+    <test-case sql="SELECT i.* FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id JOIN t_broadcast_table c ON o.status = c.status WHERE (o.order_id = ? OR o.order_id = ?) AND o.user_id = ? AND o.status = ?">
         <assertion parameters="1000:int, 1100:int, 11:int, init:String" expected-data-file="select_or_mix_and_with_binding_and_broadcast_tables.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT * FROM t_order o ORDER BY o.order_id, 2 DESC">
+    <test-case sql="SELECT * FROM t_order o ORDER BY o.order_id, 2 DESC">
         <assertion expected-data-file="select_order_by_asc_and_index_desc.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT i.* FROM t_order o, t_order_item i WHERE o.order_id = i.order_id AND o.status = 'init' ORDER BY o.order_id DESC, 1">
+    <test-case sql="SELECT i.* FROM t_order o, t_order_item i WHERE o.order_id = i.order_id AND o.status = 'init' ORDER BY o.order_id DESC, 1">
         <assertion expected-data-file="select_order_by_desc_and_index_asc.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT o.order_id as gen_order_id_ FROM t_order o ORDER BY o.order_id">
+    <test-case sql="SELECT o.order_id as gen_order_id_ FROM t_order o ORDER BY o.order_id">
         <assertion expected-data-file="select_order_by_with_ordered_column.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT i.* FROM t_order o, t_order_item i WHERE o.order_id = i.order_id AND o.status = 'init' ORDER BY i.creation_date DESC, o.order_id DESC, i.item_id">
+    <test-case sql="SELECT i.* FROM t_order o, t_order_item i WHERE o.order_id = i.order_id AND o.status = 'init' ORDER BY i.creation_date DESC, o.order_id DESC, i.item_id">
         <assertion expected-data-file="select_order_by_with_date.xml" />
-    </dql-test-case>
+    </test-case>
     
     <!-- // TODO add null data -->
-    <dql-test-case sql="SELECT o.order_id as gen_order_id_ FROM t_order o ORDER BY o.order_id NULLS FIRST" db-types="Oracle">
+    <test-case sql="SELECT o.order_id as gen_order_id_ FROM t_order o ORDER BY o.order_id NULLS FIRST" db-types="Oracle">
         <assertion expected-data-file="select_order_by_with_ordered_column.xml" />
-    </dql-test-case>
+    </test-case>
     
     <!-- // TODO add null data -->
-    <dql-test-case sql="SELECT o.order_id as gen_order_id_ FROM t_order o ORDER BY o.order_id ASC NULLS LAST" db-types="Oracle">
+    <test-case sql="SELECT o.order_id as gen_order_id_ FROM t_order o ORDER BY o.order_id ASC NULLS LAST" db-types="Oracle">
         <assertion expected-data-file="select_order_by_with_ordered_column.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT *, order_id, o.* FROM t_order o ORDER BY o.order_id">
+    <test-case sql="SELECT *, order_id, o.* FROM t_order o ORDER BY o.order_id">
         <assertion expected-data-file="select_order_by_with_multiple_stars.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT o.* FROM t_order o ORDER BY o.order_id" db-types="H2,MySQL">
+    <test-case sql="SELECT o.* FROM t_order o ORDER BY o.order_id" db-types="H2,MySQL">
         <assertion expected-data-file="select_order_by_with_alias_star_alias_name.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT o.* FROM t_order o ORDER BY o.order_id" db-types="H2,MySQL">
+    <test-case sql="SELECT o.* FROM t_order o ORDER BY o.order_id" db-types="H2,MySQL">
         <assertion expected-data-file="select_order_by_with_alias_star_alias_name.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT * FROM t_order o ORDER BY order_id" db-types="H2,MySQL">
+    <test-case sql="SELECT * FROM t_order o ORDER BY order_id" db-types="H2,MySQL">
         <assertion expected-data-file="select_order_by_with_star_table_alias.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT t_order.* FROM t_order ORDER BY t_order.order_id" db-types="H2,MySQL">
+    <test-case sql="SELECT t_order.* FROM t_order ORDER BY t_order.order_id" db-types="H2,MySQL">
         <assertion expected-data-file="select_order_by_with_table_star_table_name.xml" />
-    </dql-test-case>
+    </test-case>
     
     <!--TODO need to add later-->
-    <!--<dql-test-case sql="SELECT * FROM t_order o ORDER BY ?" db-types="H2,MySQL">-->
+    <!--<test-case sql="SELECT * FROM t_order o ORDER BY ?" db-types="H2,MySQL">-->
         <!--<assertion parameters="order_id:String" expected-data-file="select_order_by_with_star_table_alias.xml" />-->
-    <!--</dql-test-case>-->
+    <!--</test-case>-->
     
-    <dql-test-case sql="SELECT * FROM t_order ORDER BY order_id" db-types="H2,MySQL">
+    <test-case sql="SELECT * FROM t_order ORDER BY order_id" db-types="H2,MySQL">
         <assertion expected-data-file="select_order_by_with_star_no_table_alias.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT i.* FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id WHERE o.user_id IN (?, ?) AND o.order_id BETWEEN ? AND ? ORDER BY i.item_id DESC OFFSET ?" db-types="PostgreSQL">
+    <test-case sql="SELECT i.* FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id WHERE o.user_id IN (?, ?) AND o.order_id BETWEEN ? AND ? ORDER BY i.item_id DESC OFFSET ?" db-types="PostgreSQL">
         <assertion parameters="10:int, 19:int, 1000:int, 1909:int, 6:int" expected-data-file="select_pagination_with_offset.xml" />
-    </dql-test-case>
-
-    <dql-test-case sql="SELECT i.*, o.* FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id ORDER BY item_id" db-types="H2,MySQL">
+    </test-case>
+    
+    <test-case sql="SELECT i.*, o.* FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id ORDER BY item_id" db-types="H2,MySQL">
         <assertion expected-data-file="select_order_by_with_table_star_without_table_name.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT i.* FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id WHERE o.user_id IN (?, ?) AND o.order_id BETWEEN ? AND ? ORDER BY i.item_id DESC LIMIT ?" db-types="MySQL,H2,PostgreSQL">
+    <test-case sql="SELECT i.* FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id WHERE o.user_id IN (?, ?) AND o.order_id BETWEEN ? AND ? ORDER BY i.item_id DESC LIMIT ?" db-types="MySQL,H2,PostgreSQL">
         <assertion parameters="10:int, 19:int, 1000:int, 1909:int, 2:int" expected-data-file="select_pagination_with_row_count.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT * FROM (SELECT TOP (?) row_number() OVER (ORDER BY i.item_id DESC) AS rownum_, i.item_id, o.order_id as order_id, o.status as status, o.user_id as user_id FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id WHERE o.user_id IN (?, ?) AND o.order_id BETWEEN ? AND ?) AS row_" db-types="SQLServer">
+    <test-case sql="SELECT * FROM (SELECT TOP (?) row_number() OVER (ORDER BY i.item_id DESC) AS rownum_, i.item_id, o.order_id as order_id, o.status as status, o.user_id as user_id FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id WHERE o.user_id IN (?, ?) AND o.order_id BETWEEN ? AND ?) AS row_" db-types="SQLServer">
         <assertion parameters="2:int, 10:int, 19:int, 1000:int, 1909:int" expected-data-file="select_pagination_with_row_count.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT * FROM (SELECT row_.*, rownum rownum_ FROM (SELECT order0_.order_id as order_id, order0_.status as status, order0_.user_id as user_id FROM t_order order0_ JOIN t_order_item i ON order0_.user_id = i.user_id AND order0_.order_id = i.order_id WHERE order0_.user_id IN (?, ?) AND order0_.order_id BETWEEN ? AND ? ORDER BY i.item_id DESC) row_ WHERE rownum &lt;= ?)" db-types="Oracle">
+    <test-case sql="SELECT * FROM (SELECT row_.*, rownum rownum_ FROM (SELECT order0_.order_id as order_id, order0_.status as status, order0_.user_id as user_id FROM t_order order0_ JOIN t_order_item i ON order0_.user_id = i.user_id AND order0_.order_id = i.order_id WHERE order0_.user_id IN (?, ?) AND order0_.order_id BETWEEN ? AND ? ORDER BY i.item_id DESC) row_ WHERE rownum &lt;= ?)" db-types="Oracle">
         <assertion parameters="10:int, 19:int, 1000:int, 1909:int, 2:int" expected-data-file="select_pagination_with_row_count.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT i.* FROM `t_order` o JOIN `t_order_item` i ON o.user_id = i.user_id AND o.order_id = i.order_id WHERE o.`user_id` IN (?, ?) AND o.`order_id` BETWEEN ? AND ? ORDER BY i.item_id DESC LIMIT ?, ?" db-types="MySQL">
+    <test-case sql="SELECT i.* FROM `t_order` o JOIN `t_order_item` i ON o.user_id = i.user_id AND o.order_id = i.order_id WHERE o.`user_id` IN (?, ?) AND o.`order_id` BETWEEN ? AND ? ORDER BY i.item_id DESC LIMIT ?, ?" db-types="MySQL">
         <assertion parameters="10:int, 19:int, 1000:int, 1909:int, 2:int, 2:int" expected-data-file="select_pagination_with_offset_and_row_count.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT i.* FROM `t_order` o JOIN `t_order_item` i ON o.user_id = i.user_id AND o.order_id = i.order_id WHERE o.`user_id` IN (?, ?) AND o.`order_id` BETWEEN ? AND ? ORDER BY i.item_id DESC LIMIT ? OFFSET ?" db-types="MySQL">
+    <test-case sql="SELECT i.* FROM `t_order` o JOIN `t_order_item` i ON o.user_id = i.user_id AND o.order_id = i.order_id WHERE o.`user_id` IN (?, ?) AND o.`order_id` BETWEEN ? AND ? ORDER BY i.item_id DESC LIMIT ? OFFSET ?" db-types="MySQL">
         <assertion parameters="10:int, 19:int, 1000:int, 1909:int, 2:int, 2:int" expected-data-file="select_pagination_with_offset_and_row_count.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT i.* FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id WHERE o.user_id IN (?, ?) AND o.order_id BETWEEN ? AND ? ORDER BY i.item_id DESC OFFSET ? LIMIT ?" db-types="PostgreSQL">
+    <test-case sql="SELECT i.* FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id WHERE o.user_id IN (?, ?) AND o.order_id BETWEEN ? AND ? ORDER BY i.item_id DESC OFFSET ? LIMIT ?" db-types="PostgreSQL">
         <assertion parameters="10:int, 19:int, 1000:int, 1909:int, 2:int, 2:int" expected-data-file="select_pagination_with_offset_and_limit.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT * FROM (SELECT TOP (?) row_number() OVER (ORDER BY i.item_id DESC) AS rownum_, i.item_id, o.order_id as order_id, o.status as status, o.user_id as user_id FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id WHERE o.user_id IN (?, ?) AND o.order_id BETWEEN ? AND ?) AS row_ WHERE row_.rownum_ &gt; ?" db-types="SQLServer">
+    <test-case sql="SELECT * FROM (SELECT TOP (?) row_number() OVER (ORDER BY i.item_id DESC) AS rownum_, i.item_id, o.order_id as order_id, o.status as status, o.user_id as user_id FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id WHERE o.user_id IN (?, ?) AND o.order_id BETWEEN ? AND ?) AS row_ WHERE row_.rownum_ &gt; ?" db-types="SQLServer">
         <assertion parameters="4:int, 10:int, 19:int, 1000:int, 1909:int, 2:int" expected-data-file="select_pagination_with_top_and_limit.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT * FROM (SELECT TOP (?) row_number() OVER (ORDER BY i.item_id DESC) AS rownum_, i.item_id, o.order_id as order_id, o.status as status, o.user_id as user_id FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id WHERE o.user_id IN (?, ?) AND o.order_id BETWEEN ? AND ?) AS row_ WHERE row_.rownum_ &gt;= ?" db-types="SQLServer">
+    <test-case sql="SELECT * FROM (SELECT TOP (?) row_number() OVER (ORDER BY i.item_id DESC) AS rownum_, i.item_id, o.order_id as order_id, o.status as status, o.user_id as user_id FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id WHERE o.user_id IN (?, ?) AND o.order_id BETWEEN ? AND ?) AS row_ WHERE row_.rownum_ &gt;= ?" db-types="SQLServer">
         <assertion parameters="4:int, 10:int, 19:int, 1000:int, 1909:int, 3:int" expected-data-file="select_pagination_with_top_and_limit.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT * FROM (SELECT row_.*, rownum rownum_ FROM (SELECT order0_.order_id as order_id, order0_.status as status, order0_.user_id as user_id FROM t_order order0_ JOIN t_order_item i ON order0_.user_id = i.user_id AND order0_.order_id = i.order_id WHERE order0_.user_id IN (?, ?) AND order0_.order_id BETWEEN ? AND ? ORDER BY i.item_id DESC) row_ WHERE rownum &lt;= ?) t WHERE t.rownum_ &gt; ?" db-types="Oracle">
+    <test-case sql="SELECT * FROM (SELECT row_.*, rownum rownum_ FROM (SELECT order0_.order_id as order_id, order0_.status as status, order0_.user_id as user_id FROM t_order order0_ JOIN t_order_item i ON order0_.user_id = i.user_id AND order0_.order_id = i.order_id WHERE order0_.user_id IN (?, ?) AND order0_.order_id BETWEEN ? AND ? ORDER BY i.item_id DESC) row_ WHERE rownum &lt;= ?) t WHERE t.rownum_ &gt; ?" db-types="Oracle">
         <assertion parameters="10:int, 19:int, 1000:int, 1909:int, 4:int, 2:int" expected-data-file="select_pagination_with_row_number_and_limit.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT * FROM (SELECT row_.*, rownum rownum_ FROM (SELECT order0_.order_id as order_id, order0_.status as status, order0_.user_id as user_id FROM t_order order0_ JOIN t_order_item i ON order0_.user_id = i.user_id AND order0_.order_id = i.order_id WHERE order0_.user_id IN (?, ?) AND order0_.order_id BETWEEN ? AND ? ORDER BY i.item_id DESC) row_ WHERE rownum &lt;= ?) t WHERE t.rownum_ &gt;= ?" db-types="Oracle">
+    <test-case sql="SELECT * FROM (SELECT row_.*, rownum rownum_ FROM (SELECT order0_.order_id as order_id, order0_.status as status, order0_.user_id as user_id FROM t_order order0_ JOIN t_order_item i ON order0_.user_id = i.user_id AND order0_.order_id = i.order_id WHERE order0_.user_id IN (?, ?) AND order0_.order_id BETWEEN ? AND ? ORDER BY i.item_id DESC) row_ WHERE rownum &lt;= ?) t WHERE t.rownum_ &gt;= ?" db-types="Oracle">
         <assertion parameters="10:int, 19:int, 1000:int, 1909:int, 4:int, 3:int" expected-data-file="select_pagination_with_row_number_and_limit.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT * FROM t_order WHERE ROWNUM &lt;= ? ORDER BY order_id" db-types="Oracle">
+    <test-case sql="SELECT * FROM t_order WHERE ROWNUM &lt;= ? ORDER BY order_id" db-types="Oracle">
         <assertion parameters="20:int" expected-data-file="select_pagination_with_row_number_not_at_end.xml" />
-    </dql-test-case>
-
-    <dql-test-case sql="SELECT * FROM t_order ORDER BY order_id OFFSET 0 ROW FETCH NEXT ? ROWS ONLY" db-types="SQLServer">
+    </test-case>
+    
+    <test-case sql="SELECT * FROM t_order ORDER BY order_id OFFSET 0 ROW FETCH NEXT ? ROWS ONLY" db-types="SQLServer">
         <assertion parameters="20:int" expected-data-file="select_pagination_with_offset_fetch.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT i.user_id FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id WHERE o.user_id IN (?, ?) AND o.order_id BETWEEN ? AND ? GROUP BY i.item_id ORDER BY i.item_id DESC LIMIT ?, ?" db-types="MySQL,H2">
+    <test-case sql="SELECT i.user_id FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id WHERE o.user_id IN (?, ?) AND o.order_id BETWEEN ? AND ? GROUP BY i.item_id ORDER BY i.item_id DESC LIMIT ?, ?" db-types="MySQL,H2">
         <assertion parameters="10:int, 19:int, 1000:int, 1909:int, 1:int, 10:int" expected-data-file="select_pagination_with_group_by_and_order_by.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT i.user_id FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id WHERE o.user_id IN (?, ?) AND o.order_id BETWEEN ? AND ? GROUP BY i.user_id ORDER BY i.item_id DESC LIMIT ?, ?" db-types="MySQL">
+    <test-case sql="SELECT i.user_id FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id WHERE o.user_id IN (?, ?) AND o.order_id BETWEEN ? AND ? GROUP BY i.user_id ORDER BY i.item_id DESC LIMIT ?, ?" db-types="MySQL">
         <assertion parameters="10:int, 19:int, 1000:int, 1909:int, 1:int, 10:int" expected-data-file="select_pagination_with_diff_group_by_and_order_by.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT i.* FROM t_order o INNER JOIN t_order_item i ON o.order_id = i.order_id WHERE o.order_id = ?">
+    <test-case sql="SELECT i.* FROM t_order o INNER JOIN t_order_item i ON o.order_id = i.order_id WHERE o.order_id = ?">
         <assertion parameters="1000:int" expected-data-file="select_inner_join.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT t_order_item.* FROM t_order JOIN t_order_item ON t_order.order_id = t_order_item.order_id WHERE t_order.order_id = ?">
+    <test-case sql="SELECT t_order_item.* FROM t_order JOIN t_order_item ON t_order.order_id = t_order_item.order_id WHERE t_order.order_id = ?">
         <assertion parameters="1000:int" expected-data-file="select_inner_join.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT i.* FROM t_order o JOIN t_order_item i USING(order_id) WHERE o.order_id = ?" db-types="MySQL,PostgreSQL">
+    <test-case sql="SELECT i.* FROM t_order o JOIN t_order_item i USING(order_id) WHERE o.order_id = ?" db-types="MySQL,PostgreSQL">
         <assertion parameters="1000:int" expected-data-file="select_inner_join.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT * FROM &quot;t_order_item&quot; WHERE &quot;item_id&quot; != ? ORDER BY &quot;item_id&quot;" db-types="PostgreSQL">
+    <test-case sql="SELECT * FROM &quot;t_order_item&quot; WHERE &quot;item_id&quot; != ? ORDER BY &quot;item_id&quot;" db-types="PostgreSQL">
         <assertion parameters="100001:int" expected-data-file="select_not_equal_with_single_table.xml" />
-    </dql-test-case>
-
-    <dql-test-case sql="SELECT * FROM t_order where status='\''" db-types="MySQL">
+    </test-case>
+    
+    <test-case sql="SELECT * FROM t_order where status='\''" db-types="MySQL">
         <assertion expected-data-file="empty_order.xml" />
-    </dql-test-case>
-
-    <dql-test-case sql="SELECT * FROM t_order where status=&quot;\&quot;&quot;" db-types="MySQL">
+    </test-case>
+    
+    <test-case sql="SELECT * FROM t_order where status=&quot;\&quot;&quot;" db-types="MySQL">
         <assertion expected-data-file="empty_order.xml" />
-    </dql-test-case>
-   
-    <dql-test-case sql="SELECT status as 'status' FROM t_order" db-types="MySQL">
+    </test-case>
+    
+    <test-case sql="SELECT status as 'status' FROM t_order" db-types="MySQL">
         <assertion expected-data-file="select_alias_as_single_quote_string.xml" />
-    </dql-test-case>
+    </test-case>
     
     <!-- // TODO -->
-<!--    <dql-test-case sql="SELECT DISTINCT item_id FROM t_order_item">-->
+<!--    <test-case sql="SELECT DISTINCT item_id FROM t_order_item">-->
 <!--        <assertion expected-data-file="select_distinct_with_single_column_without_order_by.xml" />-->
-<!--    </dql-test-case>-->
+<!--    </test-case>-->
 
-<!--    <dql-test-case sql="SELECT DISTINCT order_id, user_id, status FROM t_order">-->
+<!--    <test-case sql="SELECT DISTINCT order_id, user_id, status FROM t_order">-->
 <!--        <assertion expected-data-file="select_distinct_with_multi_column_without_order_by.xml" />-->
-<!--    </dql-test-case>-->
+<!--    </test-case>-->
     
     <!-- // TODO -->
-    <!--<dql-test-case sql="SELECT DISTINCT t_order.order_id FROM t_order order by t_order.order_id">-->
+    <!--<test-case sql="SELECT DISTINCT t_order.order_id FROM t_order order by t_order.order_id">-->
         <!--<assertion expected-data-file="select_distinct_with_owner_column_without_order_by.xml" />-->
-    <!--</dql-test-case>-->
-
-    <!--<dql-test-case sql="SELECT DISTINCT t_order.*, t_order_item.order_id FROM t_order, t_order_item WHERE t_order.order_id = t_order_item.order_id">-->
+    <!--</test-case>-->
+    
+    <!--<test-case sql="SELECT DISTINCT t_order.*, t_order_item.order_id FROM t_order, t_order_item WHERE t_order.order_id = t_order_item.order_id">-->
         <!--<assertion expected-data-file="select_distinct_with_owner_star_without_order_by.xml" />-->
-    <!--</dql-test-case>-->
-
-    <dql-test-case sql="SELECT DISTINCT item_id FROM t_order_item ORDER BY item_id">
+    <!--</test-case>-->
+    
+    <test-case sql="SELECT DISTINCT item_id FROM t_order_item ORDER BY item_id">
         <assertion expected-data-file="select_distinct_with_single_column.xml" />
-    </dql-test-case>
-
-    <dql-test-case sql="SELECT DISTINCT t_order.order_id FROM t_order ORDER BY order_id">
+    </test-case>
+    
+    <test-case sql="SELECT DISTINCT t_order.order_id FROM t_order ORDER BY order_id">
         <assertion expected-data-file="select_distinct_with_owner_column.xml" />
-    </dql-test-case>
-
-    <dql-test-case sql="SELECT DISTINCT order_id, user_id, status FROM t_order ORDER BY order_id">
+    </test-case>
+    
+    <test-case sql="SELECT DISTINCT order_id, user_id, status FROM t_order ORDER BY order_id">
         <assertion expected-data-file="select_distinct_with_multi_column.xml" />
-    </dql-test-case>
-
-    <dql-test-case sql="SELECT DISTINCT * FROM t_order WHERE order_id > 1100 ORDER BY order_id">
+    </test-case>
+    
+    <test-case sql="SELECT DISTINCT * FROM t_order WHERE order_id > 1100 ORDER BY order_id">
         <assertion expected-data-file="select_distinct_with_star.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT DISTINCT t_order.*, t_order_item.order_id FROM t_order, t_order_item WHERE t_order.order_id = t_order_item.order_id ORDER BY t_order.order_id">
+    <test-case sql="SELECT DISTINCT t_order.*, t_order_item.order_id FROM t_order, t_order_item WHERE t_order.order_id = t_order_item.order_id ORDER BY t_order.order_id">
         <assertion expected-data-file="select_distinct_with_owner_star.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT SUM(DISTINCT order_id) s FROM t_order WHERE order_id &lt; 1100">
+    <test-case sql="SELECT SUM(DISTINCT order_id) s FROM t_order WHERE order_id &lt; 1100">
         <assertion expected-data-file="select_distinct_with_sum.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT COUNT(DISTINCT order_id) c FROM t_order WHERE order_id &lt; 1100">
+    <test-case sql="SELECT COUNT(DISTINCT order_id) c FROM t_order WHERE order_id &lt; 1100">
         <assertion expected-data-file="select_distinct_with_count.xml" />
-    </dql-test-case>
+    </test-case>
     
     <!-- // TODO -->
-<!--    <dql-test-case sql="SELECT AVG(DISTINCT order_id) FROM t_order WHERE order_id &lt; 1100" db-types="MySQL">-->
+<!--    <test-case sql="SELECT AVG(DISTINCT order_id) FROM t_order WHERE order_id &lt; 1100" db-types="MySQL">-->
 <!--        <assertion expected-data-file="select_distinct_with_avg.xml" />-->
-<!--    </dql-test-case>-->
+<!--    </test-case>-->
     
-    <dql-test-case sql="SELECT DISTINCT(item_id) FROM t_order_item ORDER BY item_id">
+    <test-case sql="SELECT DISTINCT(item_id) FROM t_order_item ORDER BY item_id">
         <assertion expected-data-file="select_distinct_function.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT COUNT(DISTINCT order_id), SUM(DISTINCT order_id) FROM t_order WHERE order_id &lt; 1100" db-types="MySQL">
+    <test-case sql="SELECT COUNT(DISTINCT order_id), SUM(DISTINCT order_id) FROM t_order WHERE order_id &lt; 1100" db-types="MySQL">
         <assertion expected-data-file="select_distinct_with_count_sum.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT COUNT(DISTINCT user_id + order_id) c FROM t_order WHERE order_id &lt; 1100">
+    <test-case sql="SELECT COUNT(DISTINCT user_id + order_id) c FROM t_order WHERE order_id &lt; 1100">
         <assertion expected-data-file="select_distinct_with_count_calculation.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT order_id, COUNT(DISTINCT order_id) c FROM t_order WHERE order_id &lt; 1100 GROUP BY order_id ORDER BY order_id">
+    <test-case sql="SELECT order_id, COUNT(DISTINCT order_id) c FROM t_order WHERE order_id &lt; 1100 GROUP BY order_id ORDER BY order_id">
         <assertion expected-data-file="select_distinct_with_single_count_group_by.xml" />
-    </dql-test-case>
+    </test-case>
     
-    <dql-test-case sql="SELECT COUNT(DISTINCT order_id) c, order_id FROM t_order GROUP BY order_id ORDER BY order_id">
+    <test-case sql="SELECT COUNT(DISTINCT order_id) c, order_id FROM t_order GROUP BY order_id ORDER BY order_id">
         <assertion expected-data-file="select_distinct_with_count_group_by.xml" />
-    </dql-test-case>
-
-    <dql-test-case sql="SELECT sum(if(status=0, 1, 0)) func_status FROM t_order WHERE user_id = ? AND order_id = ?" db-types="MySQL">
+    </test-case>
+    
+    <test-case sql="SELECT sum(if(status=0, 1, 0)) func_status FROM t_order WHERE user_id = ? AND order_id = ?" db-types="MySQL">
         <assertion parameters="12:int, 1000:int" expected-data-file="select_special_function_nested.xml" />
-    </dql-test-case>
-
-    <dql-test-case sql="SELECT INTERVAL(status,1,5) func_status FROM t_order WHERE user_id = ? AND order_id = ?" db-types="MySQL">
+    </test-case>
+    
+    <test-case sql="SELECT INTERVAL(status,1,5) func_status FROM t_order WHERE user_id = ? AND order_id = ?" db-types="MySQL">
         <assertion parameters="12:int, 1000:int" expected-data-file="select_with_interval_function.xml" />
-    </dql-test-case>
-
-    <dql-test-case sql="SELECT * FROM t_order WHERE user_id = ? FOR UPDATE" lock-clause="true">
+    </test-case>
+    
+    <test-case sql="SELECT * FROM t_order WHERE user_id = ? FOR UPDATE" lock-clause="true">
         <assertion parameters="10:int" expected-data-file="select_for_update.xml" />
-    </dql-test-case>
-
-    <dql-test-case sql="select t.*,o.item_id as item_id,(case when t.status = 'init' then '已启用' when t.status = 'failed' then '已停用' end) as stateName
+    </test-case>
+    
+    <test-case sql="select t.*,o.item_id as item_id,(case when t.status = 'init' then '已启用' when t.status = 'failed' then '已停用' end) as stateName
     from t_order t left join t_order_item as o on o.order_id =t.order_id where t.order_id=1000 limit 1" db-types="MySQL,H2">
         <assertion expected-data-file="select_with_case_expression.xml" />
-    </dql-test-case>
+    </test-case>
 </integrate-test-cases>