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

wangguangyuan 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 cfec448  Parse package, type and indextype segment (#12083)
cfec448 is described below

commit cfec4481a7a41615956ce6640bce11621c190284
Author: Liangda-w <[email protected]>
AuthorDate: Thu Sep 2 02:44:25 2021 +0200

    Parse package, type and indextype segment (#12083)
---
 .../src/main/antlr4/imports/oracle/BaseRule.g4     |  2 +-
 .../src/main/antlr4/imports/oracle/DDLStatement.g4 |  6 +--
 .../impl/OracleDDLStatementSQLVisitor.java         | 33 +++++++++++++++++
 .../statement/impl/OracleStatementSQLVisitor.java  | 21 +++++++++++
 .../segment/ddl/index/IndextypeSegment.java}       | 35 ++++++++++++------
 .../segment/ddl/packages/PackageSegment.java}      | 35 ++++++++++++------
 .../segment/ddl/type/TypeSegment.java}             | 34 +++++++++++------
 .../ddl/OracleAssociateStatisticsStatement.java    | 15 ++++++--
 .../oracle/ddl/OracleCommentStatement.java         |  3 ++
 .../ddl/OracleDisassociateStatisticsStatement.java | 15 ++++++--
 .../asserts/segment/function/FunctionAssert.java   |  2 +-
 .../IndextypeAssert.java}                          | 24 ++++++------
 .../PackageAssert.java}                            | 23 ++++++------
 .../FunctionAssert.java => type/TypeAssert.java}   | 22 +++++------
 .../impl/AssociateStatisticsStatementAssert.java   | 43 +++++++++++++++++++++-
 .../statement/ddl/impl/CommentStatementAssert.java | 10 ++++-
 .../DisassociateStatisticsStatementAssert.java     | 43 +++++++++++++++++++++-
 .../impl/index/ExpectedIndextype.java}             | 18 ++++-----
 .../impl/packages/ExpectedPackage.java}            | 18 ++++-----
 .../impl/type/ExpectedType.java}                   | 18 ++++-----
 .../ddl/AssociateStatisticsStatementTestCase.java  | 18 +++++++--
 .../statement/ddl/CommentStatementTestCase.java    |  6 ++-
 .../DisassociateStatisticsStatementTestCase.java   | 18 +++++++--
 .../resources/case/ddl/associate-statistics.xml    | 22 +++++++----
 .../src/main/resources/case/ddl/comment.xml        |  4 +-
 .../resources/case/ddl/disassociate-statistics.xml | 22 +++++++----
 26 files changed, 369 insertions(+), 141 deletions(-)

diff --git 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/BaseRule.g4
 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/BaseRule.g4
index 33a94c4..93294a2 100644
--- 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/BaseRule.g4
+++ 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/BaseRule.g4
@@ -147,7 +147,7 @@ typeName
     : (owner DOT_)? name
     ;
 
-indexTypeName
+indextypeName
     : (owner DOT_)? name
     ;
 
diff --git 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/DDLStatement.g4
 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/DDLStatement.g4
index 38e0927..c0b2e1f 100644
--- 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/DDLStatement.g4
+++ 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/DDLStatement.g4
@@ -1819,7 +1819,7 @@ functionAssociation
     | PACKAGES packageName (COMMA_ packageName)*
     | TYPES typeName (COMMA_ typeName)*
     | INDEXES indexName (COMMA_ indexName)*
-    | INDEXTYPES indexTypeName (COMMA_ indexTypeName)*) 
+    | INDEXTYPES indextypeName (COMMA_ indextypeName)*) 
     (usingStatisticsType | defaultCostClause (COMMA_ 
defaultSelectivityClause)? | defaultSelectivityClause (COMMA_ 
defaultCostClause)?)
     ;
 
@@ -1846,7 +1846,7 @@ disassociateStatistics
     | PACKAGES packageName (COMMA_ packageName)*
     | TYPES typeName (COMMA_ typeName)*
     | INDEXES indexName (COMMA_ indexName)*
-    | INDEXTYPES indexTypeName (COMMA_ indexTypeName)*) FORCE?
+    | INDEXTYPES indextypeName (COMMA_ indextypeName)*) FORCE?
     ;
 
 audit
@@ -1882,7 +1882,7 @@ comment
     | AUDIT POLICY policyName
     | COLUMN (tableName | viewName | materializedViewName) DOT_ columnName
     | EDITION editionName
-    | INDEXTYPE indexTypeName
+    | INDEXTYPE indextypeName
     | MATERIALIZED VIEW materializedViewName
     | MINING MODEL modelName
     | OPERATOR operatorName
diff --git 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleDDLStatementSQLVisitor.java
 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleDDLStatementSQLVisitor.java
index 43de898..1325f1f 100644
--- 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleDDLStatementSQLVisitor.java
+++ 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleDDLStatementSQLVisitor.java
@@ -50,6 +50,7 @@ import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.Flashb
 import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.FlashbackTableContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.FunctionContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.IndexNameContext;
+import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.IndextypeNameContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.InlineConstraintContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.ModifyColPropertiesContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.ModifyColumnSpecificationContext;
@@ -58,11 +59,13 @@ import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.NoAudi
 import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.OperateColumnClauseContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.OutOfLineConstraintContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.OutOfLineRefConstraintContext;
+import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.PackageNameContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.PurgeContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.RelationalPropertyContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.RenameContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.TableNameContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.TruncateTableContext;
+import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.TypeNameContext;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.AlterDefinitionSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.CreateDefinitionSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.column.ColumnDefinitionSegment;
@@ -76,6 +79,9 @@ import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.constraint.al
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.constraint.alter.ModifyConstraintDefinitionSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.function.FunctionSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.index.IndexSegment;
+import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.index.IndextypeSegment;
+import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.packages.PackageSegment;
+import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.type.TypeSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.ColumnSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.DataTypeSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
@@ -430,6 +436,15 @@ public final class OracleDDLStatementSQLVisitor extends 
OracleStatementSQLVisito
             for (FunctionContext each: ctx.functionAssociation().function()) {
                 result.getFunctions().add((FunctionSegment) visit(each));
             }
+            for (PackageNameContext each: 
ctx.functionAssociation().packageName()) {
+                result.getPackages().add((PackageSegment) visit(each));
+            }
+            for (TypeNameContext each: ctx.functionAssociation().typeName()) {
+                result.getTypes().add((TypeSegment) visit(each));
+            }
+            for (IndextypeNameContext each: 
ctx.functionAssociation().indextypeName()) {
+                result.getIndextypes().add((IndextypeSegment) visit(each));
+            }
         }
         return result;
     }
@@ -455,6 +470,21 @@ public final class OracleDDLStatementSQLVisitor extends 
OracleStatementSQLVisito
                 result.getFunctions().add((FunctionSegment) visit(each));
             }
         }
+        if (null != ctx.packageName()) {
+            for (PackageNameContext each: ctx.packageName()) {
+                result.getPackages().add((PackageSegment) visit(each));
+            }
+        }
+        if (null != ctx.typeName()) {
+            for (TypeNameContext each: ctx.typeName()) {
+                result.getTypes().add((TypeSegment) visit(each));
+            }
+        }
+        if (null != ctx.indextypeName()) {
+            for (IndextypeNameContext each: ctx.indextypeName()) {
+                result.getIndextypes().add((IndextypeSegment) visit(each));
+            }
+        }
         return result;
     }
 
@@ -477,6 +507,9 @@ public final class OracleDDLStatementSQLVisitor extends 
OracleStatementSQLVisito
         if (null != ctx.columnName()) {
             result.setColumn((ColumnSegment) visit(ctx.columnName()));
         }
+        if (null != ctx.indextypeName()) {
+            result.setIndextype((IndextypeSegment) visit(ctx.indextypeName()));
+        }
         return result;
     }
 
diff --git 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleStatementSQLVisitor.java
 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleStatementSQLVisitor.java
index 12dacf7..ff3f9d5 100644
--- 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleStatementSQLVisitor.java
+++ 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleStatementSQLVisitor.java
@@ -45,12 +45,14 @@ import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.Functi
 import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.HexadecimalLiteralsContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.IdentifierContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.IndexNameContext;
+import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.IndextypeNameContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.LiteralsContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.NullValueLiteralsContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.NumberLiteralsContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.OrderByClauseContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.OrderByItemContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.OwnerContext;
+import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.PackageNameContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.ParameterMarkerContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.PredicateContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.RegularFunctionContext;
@@ -61,6 +63,7 @@ import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.String
 import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.SynonymNameContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.TableNameContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.TableNamesContext;
+import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.TypeNameContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.UnreservedWordContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.ViewNameContext;
 import 
org.apache.shardingsphere.sql.parser.sql.common.constant.AggregationType;
@@ -68,6 +71,9 @@ import 
org.apache.shardingsphere.sql.parser.sql.common.constant.OrderDirection;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.constraint.ConstraintSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.function.FunctionSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.index.IndexSegment;
+import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.index.IndextypeSegment;
+import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.packages.PackageSegment;
+import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.type.TypeSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.ColumnSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.BetweenExpression;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.BinaryOperationExpression;
@@ -247,6 +253,21 @@ public abstract class OracleStatementSQLVisitor extends 
OracleStatementBaseVisit
     }
     
     @Override
+    public final ASTNode visitPackageName(final PackageNameContext ctx) {
+        return new PackageSegment(ctx.getStart().getStartIndex(), 
ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.name()));
+    }
+    
+    @Override
+    public final ASTNode visitTypeName(final TypeNameContext ctx) {
+        return new TypeSegment(ctx.getStart().getStartIndex(), 
ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.name()));
+    }
+    
+    @Override
+    public final ASTNode visitIndextypeName(final IndextypeNameContext ctx) {
+        return new IndextypeSegment(ctx.getStart().getStartIndex(), 
ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.name()));
+    }
+    
+    @Override
     public final ASTNode visitConstraintName(final ConstraintNameContext ctx) {
         return new ConstraintSegment(ctx.getStart().getStartIndex(), 
ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.identifier()));
     }
diff --git 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/oracle/ddl/OracleCommentStatement.java
 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/ddl/index/IndextypeSegment.java
similarity index 54%
copy from 
shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/oracle/ddl/OracleCommentStatement.java
copy to 
shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/ddl/index/IndextypeSegment.java
index b916ef5..674f3c5 100644
--- 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/oracle/ddl/OracleCommentStatement.java
+++ 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/ddl/index/IndextypeSegment.java
@@ -15,26 +15,37 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl;
+package org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.index;
 
 import lombok.Getter;
+import lombok.RequiredArgsConstructor;
 import lombok.Setter;
-import lombok.ToString;
-import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.ColumnSegment;
-import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
-import 
org.apache.shardingsphere.sql.parser.sql.common.statement.AbstractSQLStatement;
-import 
org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DDLStatement;
-import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.OracleStatement;
+import org.apache.shardingsphere.sql.parser.sql.common.segment.SQLSegment;
+import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.OwnerAvailable;
+import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.OwnerSegment;
+import 
org.apache.shardingsphere.sql.parser.sql.common.value.identifier.IdentifierValue;
+
+import java.util.Optional;
 
 /**
- * Oracle comment statement.
+ * Indextype segment.
  */
+@RequiredArgsConstructor
 @Getter
 @Setter
-@ToString
-public final class OracleCommentStatement extends AbstractSQLStatement 
implements DDLStatement, OracleStatement {
+public final class IndextypeSegment implements SQLSegment, OwnerAvailable {
+
+    private final int startIndex;
+
+    private final int stopIndex;
+
+    private final IdentifierValue identifier;
+
+    private OwnerSegment owner;
 
-    private SimpleTableSegment table;
+    @Override
+    public Optional<OwnerSegment> getOwner() {
+        return Optional.ofNullable(owner);
+    }
 
-    private ColumnSegment column;
 }
diff --git 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/oracle/ddl/OracleCommentStatement.java
 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/ddl/packages/PackageSegment.java
similarity index 54%
copy from 
shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/oracle/ddl/OracleCommentStatement.java
copy to 
shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/ddl/packages/PackageSegment.java
index b916ef5..ab9a542 100644
--- 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/oracle/ddl/OracleCommentStatement.java
+++ 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/ddl/packages/PackageSegment.java
@@ -15,26 +15,37 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl;
+package org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.packages;
 
 import lombok.Getter;
+import lombok.RequiredArgsConstructor;
 import lombok.Setter;
-import lombok.ToString;
-import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.ColumnSegment;
-import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
-import 
org.apache.shardingsphere.sql.parser.sql.common.statement.AbstractSQLStatement;
-import 
org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DDLStatement;
-import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.OracleStatement;
+import org.apache.shardingsphere.sql.parser.sql.common.segment.SQLSegment;
+import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.OwnerAvailable;
+import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.OwnerSegment;
+import 
org.apache.shardingsphere.sql.parser.sql.common.value.identifier.IdentifierValue;
+
+import java.util.Optional;
 
 /**
- * Oracle comment statement.
+ * Package segment.
  */
+@RequiredArgsConstructor
 @Getter
 @Setter
-@ToString
-public final class OracleCommentStatement extends AbstractSQLStatement 
implements DDLStatement, OracleStatement {
+public final class PackageSegment implements SQLSegment, OwnerAvailable {
+
+    private final int startIndex;
+
+    private final int stopIndex;
+
+    private final IdentifierValue identifier;
+
+    private OwnerSegment owner;
 
-    private SimpleTableSegment table;
+    @Override
+    public Optional<OwnerSegment> getOwner() {
+        return Optional.ofNullable(owner);
+    }
 
-    private ColumnSegment column;
 }
diff --git 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/oracle/ddl/OracleCommentStatement.java
 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/ddl/type/TypeSegment.java
similarity index 54%
copy from 
shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/oracle/ddl/OracleCommentStatement.java
copy to 
shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/ddl/type/TypeSegment.java
index b916ef5..8f71f53 100644
--- 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/oracle/ddl/OracleCommentStatement.java
+++ 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/ddl/type/TypeSegment.java
@@ -15,26 +15,36 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl;
+package org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.type;
 
 import lombok.Getter;
+import lombok.RequiredArgsConstructor;
 import lombok.Setter;
-import lombok.ToString;
-import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.ColumnSegment;
-import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
-import 
org.apache.shardingsphere.sql.parser.sql.common.statement.AbstractSQLStatement;
-import 
org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DDLStatement;
-import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.OracleStatement;
+import org.apache.shardingsphere.sql.parser.sql.common.segment.SQLSegment;
+import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.OwnerAvailable;
+import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.OwnerSegment;
+import 
org.apache.shardingsphere.sql.parser.sql.common.value.identifier.IdentifierValue;
+
+import java.util.Optional;
 
 /**
- * Oracle comment statement.
+ * Type segment.
  */
+@RequiredArgsConstructor
 @Getter
 @Setter
-@ToString
-public final class OracleCommentStatement extends AbstractSQLStatement 
implements DDLStatement, OracleStatement {
+public final class TypeSegment implements SQLSegment, OwnerAvailable {
+
+    private final int startIndex;
+
+    private final int stopIndex;
+
+    private final IdentifierValue identifier;
 
-    private SimpleTableSegment table;
+    private OwnerSegment owner;
 
-    private ColumnSegment column;
+    @Override
+    public Optional<OwnerSegment> getOwner() {
+        return Optional.ofNullable(owner);
+    }
 }
diff --git 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/oracle/ddl/OracleAssociateStatisticsStatement.java
 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/oracle/ddl/OracleAssociateStatisticsStatement.java
index 754952e..18803dd 100644
--- 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/oracle/ddl/OracleAssociateStatisticsStatement.java
+++ 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/oracle/ddl/OracleAssociateStatisticsStatement.java
@@ -22,6 +22,9 @@ import lombok.Setter;
 import lombok.ToString;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.function.FunctionSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.index.IndexSegment;
+import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.index.IndextypeSegment;
+import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.packages.PackageSegment;
+import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.type.TypeSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.ColumnSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.AbstractSQLStatement;
@@ -38,12 +41,18 @@ import java.util.List;
 @Setter
 @ToString
 public final class OracleAssociateStatisticsStatement extends 
AbstractSQLStatement implements DDLStatement, OracleStatement {
-
+    
     private List<IndexSegment> indexes = new LinkedList<>();
     
     private List<SimpleTableSegment> tables = new LinkedList<>();
-
+    
     private List<ColumnSegment> columns = new LinkedList<>();
-
+    
     private List<FunctionSegment> functions = new LinkedList<>();
+    
+    private List<PackageSegment> packages = new LinkedList<>();
+    
+    private List<TypeSegment> types = new LinkedList<>();
+    
+    private List<IndextypeSegment> indextypes = new LinkedList<>();
 }
diff --git 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/oracle/ddl/OracleCommentStatement.java
 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/oracle/ddl/OracleCommentStatement.java
index b916ef5..8f7f7bf 100644
--- 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/oracle/ddl/OracleCommentStatement.java
+++ 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/oracle/ddl/OracleCommentStatement.java
@@ -20,6 +20,7 @@ package 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.ToString;
+import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.index.IndextypeSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.ColumnSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.AbstractSQLStatement;
@@ -37,4 +38,6 @@ public final class OracleCommentStatement extends 
AbstractSQLStatement implement
     private SimpleTableSegment table;
 
     private ColumnSegment column;
+
+    private IndextypeSegment indextype;
 }
diff --git 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/oracle/ddl/OracleDisassociateStatisticsStatement.java
 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/oracle/ddl/OracleDisassociateStatisticsStatement.java
index 7063a75..2ef68e1 100644
--- 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/oracle/ddl/OracleDisassociateStatisticsStatement.java
+++ 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/oracle/ddl/OracleDisassociateStatisticsStatement.java
@@ -22,6 +22,9 @@ import lombok.Setter;
 import lombok.ToString;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.function.FunctionSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.index.IndexSegment;
+import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.index.IndextypeSegment;
+import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.packages.PackageSegment;
+import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.type.TypeSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.ColumnSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.AbstractSQLStatement;
@@ -38,12 +41,18 @@ import java.util.List;
 @Setter
 @ToString
 public final class OracleDisassociateStatisticsStatement extends 
AbstractSQLStatement implements DDLStatement, OracleStatement {
-
+    
     private List<IndexSegment> indexes = new LinkedList<>();
     
     private List<SimpleTableSegment> tables = new LinkedList<>();
-
+    
     private List<ColumnSegment> columns = new LinkedList<>();
-
+    
     private List<FunctionSegment> functions = new LinkedList<>();
+    
+    private List<PackageSegment> packages = new LinkedList<>();
+    
+    private List<TypeSegment> types = new LinkedList<>();
+    
+    private List<IndextypeSegment> indextypes = new LinkedList<>();
 }
diff --git 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/function/FunctionAssert.java
 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/function/FunctionAssert.java
index d68d64c..908675f 100644
--- 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/function/FunctionAssert.java
+++ 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/function/FunctionAssert.java
@@ -37,7 +37,7 @@ import static org.junit.Assert.assertTrue;
 public final class FunctionAssert {
 
     /**
-     * Assert actual function segment is correct with expected index.
+     * Assert actual function segment is correct with expected function.
      *
      * @param assertContext assert context
      * @param actual actual function segment
diff --git 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/function/FunctionAssert.java
 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/index/IndextypeAssert.java
similarity index 81%
copy from 
shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/function/FunctionAssert.java
copy to 
shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/index/IndextypeAssert.java
index d68d64c..423fd52 100644
--- 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/function/FunctionAssert.java
+++ 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/index/IndextypeAssert.java
@@ -15,37 +15,37 @@
  * limitations under the License.
  */
 
-package 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.function;
+package 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.index;
 
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
-import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.function.FunctionSegment;
+import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.index.IndextypeSegment;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.SQLCaseAssertContext;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.SQLSegmentAssert;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.owner.OwnerAssert;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.value.IdentifierValueAssert;
-import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.function.ExpectedFunction;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.index.ExpectedIndextype;
 
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
 /**
- * Function assert.
+ * Indextype assert.
  */
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class FunctionAssert {
-
+public final class IndextypeAssert {
+    
     /**
-     * Assert actual function segment is correct with expected index.
+     * Assert actual indextype segment is correct with expected indextype.
      *
      * @param assertContext assert context
-     * @param actual actual function segment
-     * @param expected expected function
+     * @param actual actual indextype segment
+     * @param expected expected indextype
      */
-    public static void assertIs(final SQLCaseAssertContext assertContext, 
final FunctionSegment actual, final ExpectedFunction expected) {
-        assertNotNull(assertContext.getText("Function should exist."), 
expected);
-        IdentifierValueAssert.assertIs(assertContext, actual.getIdentifier(), 
expected, "Function");
+    public static void assertIs(final SQLCaseAssertContext assertContext, 
final IndextypeSegment actual, final ExpectedIndextype expected) {
+        assertNotNull(assertContext.getText("Indextype should exist."), 
expected);
+        IdentifierValueAssert.assertIs(assertContext, actual.getIdentifier(), 
expected, "Indextype");
         if (null != expected.getOwner()) {
             assertTrue(assertContext.getText("Actual owner should exist."), 
actual.getOwner().isPresent());
             OwnerAssert.assertIs(assertContext, actual.getOwner().get(), 
expected.getOwner());
diff --git 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/function/FunctionAssert.java
 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/packages/PackageAssert.java
similarity index 81%
copy from 
shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/function/FunctionAssert.java
copy to 
shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/packages/PackageAssert.java
index d68d64c..40e5081 100644
--- 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/function/FunctionAssert.java
+++ 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/packages/PackageAssert.java
@@ -15,37 +15,37 @@
  * limitations under the License.
  */
 
-package 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.function;
+package 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.packages;
 
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
-import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.function.FunctionSegment;
+import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.packages.PackageSegment;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.SQLCaseAssertContext;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.SQLSegmentAssert;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.owner.OwnerAssert;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.value.IdentifierValueAssert;
-import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.function.ExpectedFunction;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.packages.ExpectedPackage;
 
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
 /**
- * Function assert.
+ * Package assert.
  */
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class FunctionAssert {
+public final class PackageAssert {
 
     /**
-     * Assert actual function segment is correct with expected index.
+     * Assert actual package segment is correct with expected package.
      *
      * @param assertContext assert context
-     * @param actual actual function segment
-     * @param expected expected function
+     * @param actual actual package segment
+     * @param expected expected package
      */
-    public static void assertIs(final SQLCaseAssertContext assertContext, 
final FunctionSegment actual, final ExpectedFunction expected) {
-        assertNotNull(assertContext.getText("Function should exist."), 
expected);
-        IdentifierValueAssert.assertIs(assertContext, actual.getIdentifier(), 
expected, "Function");
+    public static void assertIs(final SQLCaseAssertContext assertContext, 
final PackageSegment actual, final ExpectedPackage expected) {
+        assertNotNull(assertContext.getText("Package should exist."), 
expected);
+        IdentifierValueAssert.assertIs(assertContext, actual.getIdentifier(), 
expected, "Package");
         if (null != expected.getOwner()) {
             assertTrue(assertContext.getText("Actual owner should exist."), 
actual.getOwner().isPresent());
             OwnerAssert.assertIs(assertContext, actual.getOwner().get(), 
expected.getOwner());
@@ -55,3 +55,4 @@ public final class FunctionAssert {
         SQLSegmentAssert.assertIs(assertContext, actual, expected);
     }
 }
+
diff --git 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/function/FunctionAssert.java
 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/type/TypeAssert.java
similarity index 81%
copy from 
shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/function/FunctionAssert.java
copy to 
shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/type/TypeAssert.java
index d68d64c..180f35d 100644
--- 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/function/FunctionAssert.java
+++ 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/type/TypeAssert.java
@@ -15,37 +15,37 @@
  * limitations under the License.
  */
 
-package 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.function;
+package 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.type;
 
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
-import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.function.FunctionSegment;
+import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.type.TypeSegment;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.SQLCaseAssertContext;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.SQLSegmentAssert;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.owner.OwnerAssert;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.value.IdentifierValueAssert;
-import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.function.ExpectedFunction;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.type.ExpectedType;
 
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
 /**
- * Function assert.
+ * Type assert.
  */
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class FunctionAssert {
+public final class TypeAssert {
 
     /**
-     * Assert actual function segment is correct with expected index.
+     * Assert actual type segment is correct with expected type.
      *
      * @param assertContext assert context
-     * @param actual actual function segment
-     * @param expected expected function
+     * @param actual actual type segment
+     * @param expected expected type
      */
-    public static void assertIs(final SQLCaseAssertContext assertContext, 
final FunctionSegment actual, final ExpectedFunction expected) {
-        assertNotNull(assertContext.getText("Function should exist."), 
expected);
-        IdentifierValueAssert.assertIs(assertContext, actual.getIdentifier(), 
expected, "Function");
+    public static void assertIs(final SQLCaseAssertContext assertContext, 
final TypeSegment actual, final ExpectedType expected) {
+        assertNotNull(assertContext.getText("Type should exist."), expected);
+        IdentifierValueAssert.assertIs(assertContext, actual.getIdentifier(), 
expected, "Type");
         if (null != expected.getOwner()) {
             assertTrue(assertContext.getText("Actual owner should exist."), 
actual.getOwner().isPresent());
             OwnerAssert.assertIs(assertContext, actual.getOwner().get(), 
expected.getOwner());
diff --git 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/ddl/impl/AssociateStatisticsStatementAssert.java
 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/ddl/impl/AssociateStatisticsStatementAssert.java
index 0397e99..dddade4 100644
--- 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/ddl/impl/AssociateStatisticsStatementAssert.java
+++ 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/ddl/impl/AssociateStatisticsStatementAssert.java
@@ -21,13 +21,19 @@ import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.function.FunctionSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.index.IndexSegment;
+import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.index.IndextypeSegment;
+import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.packages.PackageSegment;
+import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.type.TypeSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.ColumnSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAssociateStatisticsStatement;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.SQLCaseAssertContext;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.column.ColumnAssert;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.function.FunctionAssert;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.index.IndexAssert;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.index.IndextypeAssert;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.packages.PackageAssert;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.table.TableAssert;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.type.TypeAssert;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.ddl.AssociateStatisticsStatementTestCase;
 
 /**
@@ -48,6 +54,9 @@ public final class AssociateStatisticsStatementAssert {
         assertColumns(assertContext, actual, expected);
         assertIndexes(assertContext, actual, expected);
         assertFunctions(assertContext, actual, expected);
+        assertPackages(assertContext, actual, expected);
+        assertTypes(assertContext, actual, expected);
+        assertIndextypes(assertContext, actual, expected);
     }
     
     private static void assertTables(final SQLCaseAssertContext assertContext, 
final OracleAssociateStatisticsStatement actual, final 
AssociateStatisticsStatementTestCase expected) {
@@ -55,7 +64,7 @@ public final class AssociateStatisticsStatementAssert {
             TableAssert.assertIs(assertContext, actual.getTables(), 
expected.getTables());
         }
     }
-
+    
     private static void assertColumns(final SQLCaseAssertContext 
assertContext, final OracleAssociateStatisticsStatement actual, final 
AssociateStatisticsStatementTestCase expected) {
         if (null != expected.getColumns()) {
             int count = 0;
@@ -75,7 +84,7 @@ public final class AssociateStatisticsStatementAssert {
             }
         }
     }
-
+    
     private static void assertFunctions(final SQLCaseAssertContext 
assertContext, final OracleAssociateStatisticsStatement actual, final 
AssociateStatisticsStatementTestCase expected) {
         if (null != expected.getFunctions()) {
             int count = 0;
@@ -85,4 +94,34 @@ public final class AssociateStatisticsStatementAssert {
             }
         }
     }
+    
+    private static void assertPackages(final SQLCaseAssertContext 
assertContext, final OracleAssociateStatisticsStatement actual, final 
AssociateStatisticsStatementTestCase expected) {
+        if (null != expected.getPackages()) {
+            int count = 0;
+            for (PackageSegment each : actual.getPackages()) {
+                PackageAssert.assertIs(assertContext, each, 
expected.getPackages().get(count));
+                count++;
+            }
+        }
+    }
+    
+    private static void assertTypes(final SQLCaseAssertContext assertContext, 
final OracleAssociateStatisticsStatement actual, final 
AssociateStatisticsStatementTestCase expected) {
+        if (null != expected.getTypes()) {
+            int count = 0;
+            for (TypeSegment each : actual.getTypes()) {
+                TypeAssert.assertIs(assertContext, each, 
expected.getTypes().get(count));
+                count++;
+            }
+        }
+    }
+    
+    private static void assertIndextypes(final SQLCaseAssertContext 
assertContext, final OracleAssociateStatisticsStatement actual, final 
AssociateStatisticsStatementTestCase expected) {
+        if (null != expected.getIndextypes()) {
+            int count = 0;
+            for (IndextypeSegment each : actual.getIndextypes()) {
+                IndextypeAssert.assertIs(assertContext, each, 
expected.getIndextypes().get(count));
+                count++;
+            }
+        }
+    }
 }
diff --git 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/ddl/impl/CommentStatementAssert.java
 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/ddl/impl/CommentStatementAssert.java
index 849e9a0..c8cbd36 100644
--- 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/ddl/impl/CommentStatementAssert.java
+++ 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/ddl/impl/CommentStatementAssert.java
@@ -22,6 +22,7 @@ import lombok.NoArgsConstructor;
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCommentStatement;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.SQLCaseAssertContext;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.column.ColumnAssert;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.index.IndextypeAssert;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.table.TableAssert;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.ddl.CommentStatementTestCase;
 
@@ -41,6 +42,7 @@ public final class CommentStatementAssert {
     public static void assertIs(final SQLCaseAssertContext assertContext, 
final OracleCommentStatement actual, final CommentStatementTestCase expected) {
         assertTable(assertContext, actual, expected);
         assertColumn(assertContext, actual, expected);
+        assertIndextype(assertContext, actual, expected);
     }
     
     private static void assertTable(final SQLCaseAssertContext assertContext, 
final OracleCommentStatement actual, final CommentStatementTestCase expected) {
@@ -48,10 +50,16 @@ public final class CommentStatementAssert {
             TableAssert.assertIs(assertContext, actual.getTable(), 
expected.getTable());
         }
     }
-
+    
     private static void assertColumn(final SQLCaseAssertContext assertContext, 
final OracleCommentStatement actual, final CommentStatementTestCase expected) {
         if (null != expected.getColumn()) {
             ColumnAssert.assertIs(assertContext, actual.getColumn(), 
expected.getColumn());
         }
     }
+    
+    private static void assertIndextype(final SQLCaseAssertContext 
assertContext, final OracleCommentStatement actual, final 
CommentStatementTestCase expected) {
+        if (null != expected.getIndextype()) {
+            IndextypeAssert.assertIs(assertContext, actual.getIndextype(), 
expected.getIndextype());
+        }
+    }
 }
diff --git 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/ddl/impl/DisassociateStatisticsStatementAssert.java
 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/ddl/impl/DisassociateStatisticsStatementAssert.java
index 9994e97..32c04f5 100644
--- 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/ddl/impl/DisassociateStatisticsStatementAssert.java
+++ 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/ddl/impl/DisassociateStatisticsStatementAssert.java
@@ -21,13 +21,19 @@ import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.function.FunctionSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.index.IndexSegment;
+import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.index.IndextypeSegment;
+import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.packages.PackageSegment;
+import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.type.TypeSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.ColumnSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDisassociateStatisticsStatement;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.SQLCaseAssertContext;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.column.ColumnAssert;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.function.FunctionAssert;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.index.IndexAssert;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.index.IndextypeAssert;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.packages.PackageAssert;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.table.TableAssert;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.type.TypeAssert;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.ddl.DisassociateStatisticsStatementTestCase;
 
 /**
@@ -48,6 +54,9 @@ public final class DisassociateStatisticsStatementAssert {
         assertColumns(assertContext, actual, expected);
         assertIndexes(assertContext, actual, expected);
         assertFunctions(assertContext, actual, expected);
+        assertPackages(assertContext, actual, expected);
+        assertTypes(assertContext, actual, expected);
+        assertIndextypes(assertContext, actual, expected);
     }
     
     private static void assertTables(final SQLCaseAssertContext assertContext, 
final OracleDisassociateStatisticsStatement actual, final 
DisassociateStatisticsStatementTestCase expected) {
@@ -55,7 +64,7 @@ public final class DisassociateStatisticsStatementAssert {
             TableAssert.assertIs(assertContext, actual.getTables(), 
expected.getTables());
         }
     }
-
+    
     private static void assertColumns(final SQLCaseAssertContext 
assertContext, final OracleDisassociateStatisticsStatement actual, final 
DisassociateStatisticsStatementTestCase expected) {
         if (null != expected.getColumns()) {
             int count = 0;
@@ -75,7 +84,7 @@ public final class DisassociateStatisticsStatementAssert {
             }
         }
     }
-
+    
     private static void assertFunctions(final SQLCaseAssertContext 
assertContext, final OracleDisassociateStatisticsStatement actual, final 
DisassociateStatisticsStatementTestCase expected) {
         if (null != expected.getFunctions()) {
             int count = 0;
@@ -85,4 +94,34 @@ public final class DisassociateStatisticsStatementAssert {
             }
         }
     }
+    
+    private static void assertPackages(final SQLCaseAssertContext 
assertContext, final OracleDisassociateStatisticsStatement actual, final 
DisassociateStatisticsStatementTestCase expected) {
+        if (null != expected.getPackages()) {
+            int count = 0;
+            for (PackageSegment each : actual.getPackages()) {
+                PackageAssert.assertIs(assertContext, each, 
expected.getPackages().get(count));
+                count++;
+            }
+        }
+    }
+    
+    private static void assertTypes(final SQLCaseAssertContext assertContext, 
final OracleDisassociateStatisticsStatement actual, final 
DisassociateStatisticsStatementTestCase expected) {
+        if (null != expected.getTypes()) {
+            int count = 0;
+            for (TypeSegment each : actual.getTypes()) {
+                TypeAssert.assertIs(assertContext, each, 
expected.getTypes().get(count));
+                count++;
+            }
+        }
+    }
+    
+    private static void assertIndextypes(final SQLCaseAssertContext 
assertContext, final OracleDisassociateStatisticsStatement actual, final 
DisassociateStatisticsStatementTestCase expected) {
+        if (null != expected.getIndextypes()) {
+            int count = 0;
+            for (IndextypeSegment each : actual.getIndextypes()) {
+                IndextypeAssert.assertIs(assertContext, each, 
expected.getIndextypes().get(count));
+                count++;
+            }
+        }
+    }
 }
diff --git 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/ddl/CommentStatementTestCase.java
 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/index/ExpectedIndextype.java
similarity index 68%
copy from 
shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/ddl/CommentStatementTestCase.java
copy to 
shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/index/ExpectedIndextype.java
index 5572c1d..38f9b5b 100644
--- 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/ddl/CommentStatementTestCase.java
+++ 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/index/ExpectedIndextype.java
@@ -15,26 +15,22 @@
  * limitations under the License.
  */
 
-package 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.ddl;
+package 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.index;
 
 import lombok.Getter;
 import lombok.Setter;
-import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.column.ExpectedColumn;
-import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.table.ExpectedSimpleTable;
-import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.SQLParserTestCase;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.AbstractExpectedIdentifierSQLSegment;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.table.ExpectedOwner;
 
 import javax.xml.bind.annotation.XmlElement;
 
 /**
- * Comment statement test case.
+ * Expected indextype.
  */
 @Getter
 @Setter
-public final class CommentStatementTestCase extends SQLParserTestCase {
-    
-    @XmlElement(name = "table")
-    private ExpectedSimpleTable table;
+public final class ExpectedIndextype extends 
AbstractExpectedIdentifierSQLSegment {
 
-    @XmlElement(name = "column")
-    private ExpectedColumn column;
+    @XmlElement
+    private ExpectedOwner owner;
 }
diff --git 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/ddl/CommentStatementTestCase.java
 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/packages/ExpectedPackage.java
similarity index 68%
copy from 
shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/ddl/CommentStatementTestCase.java
copy to 
shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/packages/ExpectedPackage.java
index 5572c1d..b2dc166 100644
--- 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/ddl/CommentStatementTestCase.java
+++ 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/packages/ExpectedPackage.java
@@ -15,26 +15,22 @@
  * limitations under the License.
  */
 
-package 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.ddl;
+package 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.packages;
 
 import lombok.Getter;
 import lombok.Setter;
-import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.column.ExpectedColumn;
-import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.table.ExpectedSimpleTable;
-import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.SQLParserTestCase;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.AbstractExpectedIdentifierSQLSegment;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.table.ExpectedOwner;
 
 import javax.xml.bind.annotation.XmlElement;
 
 /**
- * Comment statement test case.
+ * Expected package.
  */
 @Getter
 @Setter
-public final class CommentStatementTestCase extends SQLParserTestCase {
-    
-    @XmlElement(name = "table")
-    private ExpectedSimpleTable table;
+public final class ExpectedPackage extends 
AbstractExpectedIdentifierSQLSegment {
 
-    @XmlElement(name = "column")
-    private ExpectedColumn column;
+    @XmlElement
+    private ExpectedOwner owner;
 }
diff --git 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/ddl/CommentStatementTestCase.java
 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/type/ExpectedType.java
similarity index 68%
copy from 
shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/ddl/CommentStatementTestCase.java
copy to 
shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/type/ExpectedType.java
index 5572c1d..8baf44b 100644
--- 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/ddl/CommentStatementTestCase.java
+++ 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/type/ExpectedType.java
@@ -15,26 +15,22 @@
  * limitations under the License.
  */
 
-package 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.ddl;
+package 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.type;
 
 import lombok.Getter;
 import lombok.Setter;
-import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.column.ExpectedColumn;
-import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.table.ExpectedSimpleTable;
-import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.SQLParserTestCase;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.AbstractExpectedIdentifierSQLSegment;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.table.ExpectedOwner;
 
 import javax.xml.bind.annotation.XmlElement;
 
 /**
- * Comment statement test case.
+ * Expected type.
  */
 @Getter
 @Setter
-public final class CommentStatementTestCase extends SQLParserTestCase {
-    
-    @XmlElement(name = "table")
-    private ExpectedSimpleTable table;
+public final class ExpectedType extends AbstractExpectedIdentifierSQLSegment {
 
-    @XmlElement(name = "column")
-    private ExpectedColumn column;
+    @XmlElement
+    private ExpectedOwner owner;
 }
diff --git 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/ddl/AssociateStatisticsStatementTestCase.java
 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/ddl/AssociateStatisticsStatementTestCase.java
index 2a0cd55..f0bbbe5 100644
--- 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/ddl/AssociateStatisticsStatementTestCase.java
+++ 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/ddl/AssociateStatisticsStatementTestCase.java
@@ -22,7 +22,10 @@ import lombok.Setter;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.column.ExpectedColumn;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.function.ExpectedFunction;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.index.ExpectedIndex;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.index.ExpectedIndextype;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.packages.ExpectedPackage;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.table.ExpectedSimpleTable;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.type.ExpectedType;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.SQLParserTestCase;
 
 import javax.xml.bind.annotation.XmlElement;
@@ -35,16 +38,25 @@ import java.util.List;
 @Getter
 @Setter
 public final class AssociateStatisticsStatementTestCase extends 
SQLParserTestCase {
-
+    
     @XmlElement(name = "index")
     private final List<ExpectedIndex> indexes = new LinkedList<>();
     
     @XmlElement(name = "table")
     private final List<ExpectedSimpleTable> tables = new LinkedList<>();
-
+    
     @XmlElement(name = "column")
     private final List<ExpectedColumn> columns = new LinkedList<>();
-
+    
     @XmlElement(name = "function")
     private final List<ExpectedFunction> functions = new LinkedList<>();
+    
+    @XmlElement(name = "package")
+    private final List<ExpectedPackage> packages = new LinkedList<>();
+    
+    @XmlElement(name = "type")
+    private final List<ExpectedType> types = new LinkedList<>();
+    
+    @XmlElement(name = "indextype")
+    private final List<ExpectedIndextype> indextypes = new LinkedList<>();
 }
diff --git 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/ddl/CommentStatementTestCase.java
 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/ddl/CommentStatementTestCase.java
index 5572c1d..65cefd9 100644
--- 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/ddl/CommentStatementTestCase.java
+++ 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/ddl/CommentStatementTestCase.java
@@ -20,6 +20,7 @@ package 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domai
 import lombok.Getter;
 import lombok.Setter;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.column.ExpectedColumn;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.index.ExpectedIndextype;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.table.ExpectedSimpleTable;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.SQLParserTestCase;
 
@@ -34,7 +35,10 @@ public final class CommentStatementTestCase extends 
SQLParserTestCase {
     
     @XmlElement(name = "table")
     private ExpectedSimpleTable table;
-
+    
     @XmlElement(name = "column")
     private ExpectedColumn column;
+    
+    @XmlElement(name = "indextype")
+    private ExpectedIndextype indextype;
 }
diff --git 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/ddl/DisassociateStatisticsStatementTestCase.java
 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/ddl/DisassociateStatisticsStatementTestCase.java
index 8e452d0..3071718 100644
--- 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/ddl/DisassociateStatisticsStatementTestCase.java
+++ 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/ddl/DisassociateStatisticsStatementTestCase.java
@@ -22,7 +22,10 @@ import lombok.Setter;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.column.ExpectedColumn;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.function.ExpectedFunction;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.index.ExpectedIndex;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.index.ExpectedIndextype;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.packages.ExpectedPackage;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.table.ExpectedSimpleTable;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.type.ExpectedType;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.SQLParserTestCase;
 
 import javax.xml.bind.annotation.XmlElement;
@@ -35,16 +38,25 @@ import java.util.List;
 @Getter
 @Setter
 public final class DisassociateStatisticsStatementTestCase extends 
SQLParserTestCase {
-
+    
     @XmlElement(name = "index")
     private final List<ExpectedIndex> indexes = new LinkedList<>();
     
     @XmlElement(name = "table")
     private final List<ExpectedSimpleTable> tables = new LinkedList<>();
-
+    
     @XmlElement(name = "column")
     private final List<ExpectedColumn> columns = new LinkedList<>();
-
+    
     @XmlElement(name = "function")
     private final List<ExpectedFunction> functions = new LinkedList<>();
+    
+    @XmlElement(name = "package")
+    private final List<ExpectedPackage> packages = new LinkedList<>();
+    
+    @XmlElement(name = "type")
+    private final List<ExpectedType> types = new LinkedList<>();
+    
+    @XmlElement(name = "indextype")
+    private final List<ExpectedIndextype> indextypes = new LinkedList<>();
 }
diff --git 
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/associate-statistics.xml
 
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/associate-statistics.xml
index 359abb3..0035ffc 100644
--- 
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/associate-statistics.xml
+++ 
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/associate-statistics.xml
@@ -21,23 +21,31 @@
         <table name="employee" start-index="34" stop-index="41" />
         <column name="age" start-index="43" stop-index="45" />
     </associate-statistics>
-
+    
     <associate-statistics sql-case-id="associate_statistics_with_columns">
         <table name="employee" start-index="34" stop-index="41" />
         <column name="age" start-index="43" stop-index="45" />
         <table name="employee" start-index="48" stop-index="55" />
         <column name="salary" start-index="57" stop-index="62" />
     </associate-statistics>   
-
+    
     <associate-statistics sql-case-id="associate_statistics_with_index">
         <index name="salary_index" start-index="34" stop-index="45" />
     </associate-statistics>
-
+    
     <associate-statistics sql-case-id="associate_statistics_with_function">
         <function name="myFunction" start-index="36" stop-index="45" />
     </associate-statistics>
-
-    <associate-statistics sql-case-id="associate_statistics_with_package" />
-    <associate-statistics sql-case-id="associate_statistics_with_type" />
-    <associate-statistics sql-case-id="associate_statistics_with_indextype" />
+    
+    <associate-statistics sql-case-id="associate_statistics_with_package">
+        <package name="emp_mgmt" start-index="35" stop-index="42" />
+    </associate-statistics>
+    
+    <associate-statistics sql-case-id="associate_statistics_with_type">
+        <type name="Example_typ" start-index="32" stop-index="42" />
+    </associate-statistics>
+    
+    <associate-statistics sql-case-id="associate_statistics_with_indextype">
+        <indextype name="indtype" start-index="37" stop-index="43" />
+    </associate-statistics>
 </sql-parser-test-cases>
diff --git 
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/comment.xml
 
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/comment.xml
index 4720040..3a6b009 100644
--- 
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/comment.xml
+++ 
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/comment.xml
@@ -23,7 +23,9 @@
         <column name="job_id" start-index="28" stop-index="33" />
     </comment>
     <comment sql-case-id="comment_on_edition" />
-    <comment sql-case-id="comment_on_indextype" />
+    <comment sql-case-id="comment_on_indextype" >
+        <indextype name="indtype" start-index="21" stop-index="27" />
+    </comment>
     <comment sql-case-id="comment_on_view" />
     <comment sql-case-id="comment_on_model" />
     <comment sql-case-id="comment_on_operator" />
diff --git 
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/disassociate-statistics.xml
 
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/disassociate-statistics.xml
index 8d3bd92..505b616 100644
--- 
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/disassociate-statistics.xml
+++ 
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/disassociate-statistics.xml
@@ -21,23 +21,31 @@
         <table name="employee" start-index="37" stop-index="44" />
         <column name="age" start-index="46" stop-index="48" />
     </disassociate-statistics>
-
+    
     <disassociate-statistics 
sql-case-id="disassociate_statistics_from_columns">
         <table name="employee" start-index="37" stop-index="44" />
         <column name="age" start-index="46" stop-index="48" />
         <table name="employee" start-index="51" stop-index="58" />
         <column name="salary" start-index="60" stop-index="65" />
     </disassociate-statistics>   
-
+    
     <disassociate-statistics sql-case-id="disassociate_statistics_from_index">
         <index name="salary_index" start-index="37" stop-index="48" />
     </disassociate-statistics>
-
+    
     <disassociate-statistics 
sql-case-id="disassociate_statistics_from_function">
         <function name="myFunction" start-index="39" stop-index="48" />
     </disassociate-statistics>
-
-    <disassociate-statistics 
sql-case-id="disassociate_statistics_from_package" />
-    <disassociate-statistics sql-case-id="disassociate_statistics_from_type" />
-    <disassociate-statistics 
sql-case-id="disassociate_statistics_from_indextype" />
+    
+    <disassociate-statistics 
sql-case-id="disassociate_statistics_from_package">
+        <package name="emp_mgmt" start-index="38" stop-index="45" />
+    </disassociate-statistics>
+    
+    <disassociate-statistics sql-case-id="disassociate_statistics_from_type">
+        <type name="example_typ" start-index="35" stop-index="45" />
+    </disassociate-statistics>
+    
+    <disassociate-statistics 
sql-case-id="disassociate_statistics_from_indextype">
+        <indextype name="indtype" start-index="40" stop-index="46" />
+    </disassociate-statistics>
 </sql-parser-test-cases>

Reply via email to