You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2023/04/21 07:11:02 UTC

[shardingsphere] branch master updated: Remove SQLStatementVisitor (#25259)

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

panjuan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new f19731dfd4a Remove SQLStatementVisitor (#25259)
f19731dfd4a is described below

commit f19731dfd4a58fee7e112c3b81447130b28bc0ad
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Fri Apr 21 15:10:55 2023 +0800

    Remove SQLStatementVisitor (#25259)
    
    * Refactor SQLStatementVisitor
    
    * Remove SQLStatementVisitor
---
 .../format/MySQLFormatSQLVisitor.java              |  4 ++--
 .../{visitor => stat}/MySQLSQLStatVisitor.java     |  4 ++--
 .../facade/MySQLSQLVisitorFacade.java              | 14 ++++++------
 .../impl => type}/MySQLDALStatementSQLVisitor.java |  5 ++---
 .../impl => type}/MySQLDCLStatementSQLVisitor.java |  5 ++---
 .../impl => type}/MySQLDDLStatementSQLVisitor.java |  5 ++---
 .../impl => type}/MySQLDMLStatementSQLVisitor.java |  5 ++---
 .../impl => type}/MySQLRLStatementSQLVisitor.java  |  5 ++---
 .../impl => type}/MySQLStatementSQLVisitor.java    |  2 +-
 .../impl => type}/MySQLTCLStatementSQLVisitor.java |  5 ++---
 ...gsphere.sql.parser.api.format.SQLFormatVisitor} |  2 +-
 ....shardingsphere.sql.parser.spi.SQLVisitorFacade |  2 +-
 .../{ => format}/MySQLFormatSQLVisitorIT.java      |  2 +-
 .../MySQLSQLStatVisitorTest.java}                  | 10 ++++-----
 .../mysql/{ => visitor}/MySQLXAVisitorTest.java    |  4 ++--
 .../facade/OpenGaussSQLVisitorFacade.java          | 12 +++++-----
 .../OpenGaussDALStatementSQLVisitor.java           |  5 ++---
 .../OpenGaussDCLStatementSQLVisitor.java           |  5 ++---
 .../OpenGaussDDLStatementSQLVisitor.java           |  5 ++---
 .../OpenGaussDMLStatementSQLVisitor.java           |  5 ++---
 .../OpenGaussStatementSQLVisitor.java              |  2 +-
 .../OpenGaussTCLStatementSQLVisitor.java           |  5 ++---
 ....shardingsphere.sql.parser.spi.SQLVisitorFacade |  2 +-
 .../facade/OracleSQLVisitorFacade.java             | 12 +++++-----
 .../OracleDALStatementSQLVisitor.java              |  5 ++---
 .../OracleDCLStatementSQLVisitor.java              |  5 ++---
 .../OracleDDLStatementSQLVisitor.java              |  5 ++---
 .../OracleDMLStatementSQLVisitor.java              |  5 ++---
 .../impl => type}/OracleStatementSQLVisitor.java   |  2 +-
 .../OracleTCLStatementSQLVisitor.java              |  5 ++---
 ....shardingsphere.sql.parser.spi.SQLVisitorFacade |  2 +-
 .../facade/PostgreSQLSQLVisitorFacade.java         | 12 +++++-----
 .../PostgreSQLDALStatementSQLVisitor.java          |  5 ++---
 .../PostgreSQLDCLStatementSQLVisitor.java          |  5 ++---
 .../PostgreSQLDDLStatementSQLVisitor.java          |  5 ++---
 .../PostgreSQLDMLStatementSQLVisitor.java          |  5 ++---
 .../PostgreSQLStatementSQLVisitor.java             |  2 +-
 .../PostgreSQLTCLStatementSQLVisitor.java          |  5 ++---
 ....shardingsphere.sql.parser.spi.SQLVisitorFacade |  2 +-
 .../facade/SQL92SQLVisitorFacade.java              | 12 +++++-----
 .../impl => type}/SQL92DALStatementSQLVisitor.java |  5 ++---
 .../impl => type}/SQL92DCLStatementSQLVisitor.java |  5 ++---
 .../impl => type}/SQL92DDLStatementSQLVisitor.java |  5 ++---
 .../impl => type}/SQL92DMLStatementSQLVisitor.java |  5 ++---
 .../impl => type}/SQL92StatementSQLVisitor.java    |  2 +-
 .../impl => type}/SQL92TCLStatementSQLVisitor.java |  5 ++---
 ....shardingsphere.sql.parser.spi.SQLVisitorFacade |  2 +-
 .../facade/SQLServerSQLVisitorFacade.java          | 12 +++++-----
 .../SQLServerDALStatementSQLVisitor.java           |  5 ++---
 .../SQLServerDCLStatementSQLVisitor.java           |  5 ++---
 .../SQLServerDDLStatementSQLVisitor.java           | 15 ++-----------
 .../SQLServerDMLStatementSQLVisitor.java           |  5 ++---
 .../SQLServerStatementSQLVisitor.java              |  2 +-
 .../SQLServerTCLStatementSQLVisitor.java           |  5 ++---
 ....shardingsphere.sql.parser.spi.SQLVisitorFacade |  2 +-
 .../sql/parser/api/SQLFormatEngine.java            |  2 +-
 .../operation => format}/SQLFormatVisitor.java     |  5 +++--
 .../api/visitor/operation/SQLOperationVisitor.java | 26 ----------------------
 .../api/visitor/operation/SQLStatementVisitor.java | 24 --------------------
 .../sql/parser/sql/common/SQLStats.java            | 19 ++++++++++------
 60 files changed, 139 insertions(+), 226 deletions(-)

diff --git a/sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/format/MySQLFormatSQLVisitor.java b/sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/format/MySQLFormatSQLVisitor.java
similarity index 99%
rename from sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/format/MySQLFormatSQLVisitor.java
rename to sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/format/MySQLFormatSQLVisitor.java
index e34c250c519..5611ab72835 100644
--- a/sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/format/MySQLFormatSQLVisitor.java
+++ b/sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/format/MySQLFormatSQLVisitor.java
@@ -15,12 +15,12 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.mysql.visitor.format;
+package org.apache.shardingsphere.sql.parser.mysql.format;
 
 import org.antlr.v4.runtime.tree.ParseTree;
 import org.antlr.v4.runtime.tree.RuleNode;
 import org.antlr.v4.runtime.tree.TerminalNode;
-import org.apache.shardingsphere.sql.parser.api.visitor.operation.SQLFormatVisitor;
+import org.apache.shardingsphere.sql.parser.api.format.SQLFormatVisitor;
 import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementBaseVisitor;
 import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.AliasContext;
 import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.AlterCommandListContext;
diff --git a/sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/MySQLSQLStatVisitor.java b/sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/stat/MySQLSQLStatVisitor.java
similarity index 98%
rename from sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/MySQLSQLStatVisitor.java
rename to sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/stat/MySQLSQLStatVisitor.java
index 342ac0066ed..741b72cbb7f 100644
--- a/sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/MySQLSQLStatVisitor.java
+++ b/sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/stat/MySQLSQLStatVisitor.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.mysql.visitor;
+package org.apache.shardingsphere.sql.parser.mysql.stat;
 
 import lombok.Getter;
 import org.antlr.v4.runtime.tree.TerminalNode;
@@ -38,7 +38,7 @@ import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.Tab
 import org.apache.shardingsphere.sql.parser.sql.common.value.identifier.IdentifierValue;
 
 /**
- * SQL Stats visitor for MySQL.
+ * SQL stats visitor for MySQL.
  */
 @Getter
 public final class MySQLSQLStatVisitor extends MySQLStatementBaseVisitor<SQLStats> {
diff --git a/sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/facade/MySQLSQLVisitorFacade.java b/sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/facade/MySQLSQLVisitorFacade.java
similarity index 77%
rename from sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/facade/MySQLSQLVisitorFacade.java
rename to sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/facade/MySQLSQLVisitorFacade.java
index 2d154eef757..c217d74a0d2 100644
--- a/sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/facade/MySQLSQLVisitorFacade.java
+++ b/sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/facade/MySQLSQLVisitorFacade.java
@@ -15,8 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.mysql.visitor.statement.facade;
+package org.apache.shardingsphere.sql.parser.mysql.visitor.facade;
 
+import org.apache.shardingsphere.sql.parser.mysql.visitor.type.MySQLRLStatementSQLVisitor;
 import org.apache.shardingsphere.sql.parser.spi.SQLVisitorFacade;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.DALSQLVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.DCLSQLVisitor;
@@ -24,12 +25,11 @@ import org.apache.shardingsphere.sql.parser.api.visitor.type.DDLSQLVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.DMLSQLVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.RLSQLVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.TCLSQLVisitor;
-import org.apache.shardingsphere.sql.parser.mysql.visitor.statement.impl.MySQLDALStatementSQLVisitor;
-import org.apache.shardingsphere.sql.parser.mysql.visitor.statement.impl.MySQLDCLStatementSQLVisitor;
-import org.apache.shardingsphere.sql.parser.mysql.visitor.statement.impl.MySQLDDLStatementSQLVisitor;
-import org.apache.shardingsphere.sql.parser.mysql.visitor.statement.impl.MySQLDMLStatementSQLVisitor;
-import org.apache.shardingsphere.sql.parser.mysql.visitor.statement.impl.MySQLRLStatementSQLVisitor;
-import org.apache.shardingsphere.sql.parser.mysql.visitor.statement.impl.MySQLTCLStatementSQLVisitor;
+import org.apache.shardingsphere.sql.parser.mysql.visitor.type.MySQLDALStatementSQLVisitor;
+import org.apache.shardingsphere.sql.parser.mysql.visitor.type.MySQLDCLStatementSQLVisitor;
+import org.apache.shardingsphere.sql.parser.mysql.visitor.type.MySQLDDLStatementSQLVisitor;
+import org.apache.shardingsphere.sql.parser.mysql.visitor.type.MySQLDMLStatementSQLVisitor;
+import org.apache.shardingsphere.sql.parser.mysql.visitor.type.MySQLTCLStatementSQLVisitor;
 
 /**
  * SQL visitor facade for MySQL.
diff --git a/sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLDALStatementSQLVisitor.java b/sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/type/MySQLDALStatementSQLVisitor.java
similarity index 99%
rename from sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLDALStatementSQLVisitor.java
rename to sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/type/MySQLDALStatementSQLVisitor.java
index 918c3ea27c0..f7b46b37ee6 100644
--- a/sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLDALStatementSQLVisitor.java
+++ b/sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/type/MySQLDALStatementSQLVisitor.java
@@ -15,10 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.mysql.visitor.statement.impl;
+package org.apache.shardingsphere.sql.parser.mysql.visitor.type;
 
 import org.apache.shardingsphere.sql.parser.api.visitor.ASTNode;
-import org.apache.shardingsphere.sql.parser.api.visitor.operation.SQLStatementVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.DALSQLVisitor;
 import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.AlterResourceGroupContext;
 import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.AnalyzeTableContext;
@@ -223,7 +222,7 @@ import java.util.List;
 /**
  * DAL Statement SQL visitor for MySQL.
  */
-public final class MySQLDALStatementSQLVisitor extends MySQLStatementSQLVisitor implements DALSQLVisitor, SQLStatementVisitor {
+public final class MySQLDALStatementSQLVisitor extends MySQLStatementSQLVisitor implements DALSQLVisitor {
     
     @Override
     public ASTNode visitUninstallPlugin(final UninstallPluginContext ctx) {
diff --git a/sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLDCLStatementSQLVisitor.java b/sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/type/MySQLDCLStatementSQLVisitor.java
similarity index 99%
rename from sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLDCLStatementSQLVisitor.java
rename to sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/type/MySQLDCLStatementSQLVisitor.java
index 7d11305938f..32d84aa1d3d 100644
--- a/sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLDCLStatementSQLVisitor.java
+++ b/sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/type/MySQLDCLStatementSQLVisitor.java
@@ -15,10 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.mysql.visitor.statement.impl;
+package org.apache.shardingsphere.sql.parser.mysql.visitor.type;
 
 import org.apache.shardingsphere.sql.parser.api.visitor.ASTNode;
-import org.apache.shardingsphere.sql.parser.api.visitor.operation.SQLStatementVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.DCLSQLVisitor;
 import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.AccountLockPasswordExpireOptionContext;
 import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.AccountLockPasswordExpireOptionsContext;
@@ -119,7 +118,7 @@ import java.util.stream.Collectors;
 /**
  * DCL Statement SQL visitor for MySQL.
  */
-public final class MySQLDCLStatementSQLVisitor extends MySQLStatementSQLVisitor implements DCLSQLVisitor, SQLStatementVisitor {
+public final class MySQLDCLStatementSQLVisitor extends MySQLStatementSQLVisitor implements DCLSQLVisitor {
     
     @Override
     public ASTNode visitGrantRoleOrPrivilegeTo(final GrantRoleOrPrivilegeToContext ctx) {
diff --git a/sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLDDLStatementSQLVisitor.java b/sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/type/MySQLDDLStatementSQLVisitor.java
similarity index 99%
rename from sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLDDLStatementSQLVisitor.java
rename to sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/type/MySQLDDLStatementSQLVisitor.java
index b77bb77f5af..85c8ebc123e 100644
--- a/sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLDDLStatementSQLVisitor.java
+++ b/sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/type/MySQLDDLStatementSQLVisitor.java
@@ -15,11 +15,10 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.mysql.visitor.statement.impl;
+package org.apache.shardingsphere.sql.parser.mysql.visitor.type;
 
 import com.google.common.base.Preconditions;
 import org.apache.shardingsphere.sql.parser.api.visitor.ASTNode;
-import org.apache.shardingsphere.sql.parser.api.visitor.operation.SQLStatementVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.DDLSQLVisitor;
 import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.AddColumnContext;
 import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.AddTableConstraintContext;
@@ -179,7 +178,7 @@ import java.util.List;
 /**
  * DDL Statement SQL visitor for MySQL.
  */
-public final class MySQLDDLStatementSQLVisitor extends MySQLStatementSQLVisitor implements DDLSQLVisitor, SQLStatementVisitor {
+public final class MySQLDDLStatementSQLVisitor extends MySQLStatementSQLVisitor implements DDLSQLVisitor {
     
     @Override
     public ASTNode visitCreateView(final CreateViewContext ctx) {
diff --git a/sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLDMLStatementSQLVisitor.java b/sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/type/MySQLDMLStatementSQLVisitor.java
similarity index 93%
rename from sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLDMLStatementSQLVisitor.java
rename to sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/type/MySQLDMLStatementSQLVisitor.java
index f141fafe757..a17c9151b01 100644
--- a/sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLDMLStatementSQLVisitor.java
+++ b/sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/type/MySQLDMLStatementSQLVisitor.java
@@ -15,10 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.mysql.visitor.statement.impl;
+package org.apache.shardingsphere.sql.parser.mysql.visitor.type;
 
 import org.apache.shardingsphere.sql.parser.api.visitor.ASTNode;
-import org.apache.shardingsphere.sql.parser.api.visitor.operation.SQLStatementVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.DMLSQLVisitor;
 import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.CallContext;
 import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.DoStatementContext;
@@ -38,7 +37,7 @@ import java.util.List;
 /**
  * DML Statement SQL visitor for MySQL.
  */
-public final class MySQLDMLStatementSQLVisitor extends MySQLStatementSQLVisitor implements DMLSQLVisitor, SQLStatementVisitor {
+public final class MySQLDMLStatementSQLVisitor extends MySQLStatementSQLVisitor implements DMLSQLVisitor {
     
     @Override
     public ASTNode visitCall(final CallContext ctx) {
diff --git a/sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLRLStatementSQLVisitor.java b/sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/type/MySQLRLStatementSQLVisitor.java
similarity index 90%
rename from sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLRLStatementSQLVisitor.java
rename to sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/type/MySQLRLStatementSQLVisitor.java
index 549cf5ecdd9..33664cd2f6f 100644
--- a/sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLRLStatementSQLVisitor.java
+++ b/sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/type/MySQLRLStatementSQLVisitor.java
@@ -15,10 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.mysql.visitor.statement.impl;
+package org.apache.shardingsphere.sql.parser.mysql.visitor.type;
 
 import org.apache.shardingsphere.sql.parser.api.visitor.ASTNode;
-import org.apache.shardingsphere.sql.parser.api.visitor.operation.SQLStatementVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.RLSQLVisitor;
 import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.ChangeMasterToContext;
 import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.StartSlaveContext;
@@ -30,7 +29,7 @@ import org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.rl.MySQL
 /**
  * RL Statement SQL visitor for MySQL.
  */
-public final class MySQLRLStatementSQLVisitor extends MySQLStatementSQLVisitor implements RLSQLVisitor, SQLStatementVisitor {
+public final class MySQLRLStatementSQLVisitor extends MySQLStatementSQLVisitor implements RLSQLVisitor {
     
     @Override
     public ASTNode visitChangeMasterTo(final ChangeMasterToContext ctx) {
diff --git a/sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLStatementSQLVisitor.java b/sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/type/MySQLStatementSQLVisitor.java
similarity index 99%
rename from sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLStatementSQLVisitor.java
rename to sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/type/MySQLStatementSQLVisitor.java
index 13261f63958..f13419764ba 100644
--- a/sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLStatementSQLVisitor.java
+++ b/sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/type/MySQLStatementSQLVisitor.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.mysql.visitor.statement.impl;
+package org.apache.shardingsphere.sql.parser.mysql.visitor.type;
 
 import lombok.AccessLevel;
 import lombok.Getter;
diff --git a/sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLTCLStatementSQLVisitor.java b/sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/type/MySQLTCLStatementSQLVisitor.java
similarity index 97%
rename from sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLTCLStatementSQLVisitor.java
rename to sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/type/MySQLTCLStatementSQLVisitor.java
index 5720c12869f..b671e105a8a 100644
--- a/sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLTCLStatementSQLVisitor.java
+++ b/sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/type/MySQLTCLStatementSQLVisitor.java
@@ -15,11 +15,10 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.mysql.visitor.statement.impl;
+package org.apache.shardingsphere.sql.parser.mysql.visitor.type;
 
 import org.antlr.v4.runtime.Token;
 import org.apache.shardingsphere.sql.parser.api.visitor.ASTNode;
-import org.apache.shardingsphere.sql.parser.api.visitor.operation.SQLStatementVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.TCLSQLVisitor;
 import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.BeginTransactionContext;
 import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.CommitContext;
@@ -57,7 +56,7 @@ import java.util.List;
 /**
  * TCL Statement SQL visitor for MySQL.
  */
-public final class MySQLTCLStatementSQLVisitor extends MySQLStatementSQLVisitor implements TCLSQLVisitor, SQLStatementVisitor {
+public final class MySQLTCLStatementSQLVisitor extends MySQLStatementSQLVisitor implements TCLSQLVisitor {
     
     @Override
     public ASTNode visitSetTransaction(final SetTransactionContext ctx) {
diff --git a/sql-parser/dialect/mysql/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.api.visitor.operation.SQLFormatVisitor b/sql-parser/dialect/mysql/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.api.format.SQLFormatVisitor
similarity index 90%
rename from sql-parser/dialect/mysql/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.api.visitor.operation.SQLFormatVisitor
rename to sql-parser/dialect/mysql/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.api.format.SQLFormatVisitor
index 40361266c0e..9f2f27a519b 100644
--- a/sql-parser/dialect/mysql/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.api.visitor.operation.SQLFormatVisitor
+++ b/sql-parser/dialect/mysql/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.api.format.SQLFormatVisitor
@@ -15,4 +15,4 @@
 # limitations under the License.
 #
 
-org.apache.shardingsphere.sql.parser.mysql.visitor.format.MySQLFormatSQLVisitor
+org.apache.shardingsphere.sql.parser.mysql.format.MySQLFormatSQLVisitor
diff --git a/sql-parser/dialect/mysql/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.SQLVisitorFacade b/sql-parser/dialect/mysql/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.SQLVisitorFacade
index 0ab6be2b5a0..570f7719c42 100644
--- a/sql-parser/dialect/mysql/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.SQLVisitorFacade
+++ b/sql-parser/dialect/mysql/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.SQLVisitorFacade
@@ -15,4 +15,4 @@
 # limitations under the License.
 #
 
-org.apache.shardingsphere.sql.parser.mysql.visitor.statement.facade.MySQLSQLVisitorFacade
+org.apache.shardingsphere.sql.parser.mysql.visitor.facade.MySQLSQLVisitorFacade
diff --git a/sql-parser/dialect/mysql/src/test/java/org/apache/shardingsphere/sql/parser/mysql/MySQLFormatSQLVisitorIT.java b/sql-parser/dialect/mysql/src/test/java/org/apache/shardingsphere/sql/parser/mysql/format/MySQLFormatSQLVisitorIT.java
similarity index 99%
rename from sql-parser/dialect/mysql/src/test/java/org/apache/shardingsphere/sql/parser/mysql/MySQLFormatSQLVisitorIT.java
rename to sql-parser/dialect/mysql/src/test/java/org/apache/shardingsphere/sql/parser/mysql/format/MySQLFormatSQLVisitorIT.java
index 372964c7841..ad8b1d40827 100644
--- a/sql-parser/dialect/mysql/src/test/java/org/apache/shardingsphere/sql/parser/mysql/MySQLFormatSQLVisitorIT.java
+++ b/sql-parser/dialect/mysql/src/test/java/org/apache/shardingsphere/sql/parser/mysql/format/MySQLFormatSQLVisitorIT.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.mysql;
+package org.apache.shardingsphere.sql.parser.mysql.format;
 
 import org.apache.shardingsphere.sql.parser.api.CacheOption;
 import org.apache.shardingsphere.sql.parser.api.SQLFormatEngine;
diff --git a/sql-parser/dialect/mysql/src/test/java/org/apache/shardingsphere/sql/parser/mysql/MySQLTableVisitorTest.java b/sql-parser/dialect/mysql/src/test/java/org/apache/shardingsphere/sql/parser/mysql/stat/MySQLSQLStatVisitorTest.java
similarity index 91%
rename from sql-parser/dialect/mysql/src/test/java/org/apache/shardingsphere/sql/parser/mysql/MySQLTableVisitorTest.java
rename to sql-parser/dialect/mysql/src/test/java/org/apache/shardingsphere/sql/parser/mysql/stat/MySQLSQLStatVisitorTest.java
index 4dabef650c9..8b92e079af3 100644
--- a/sql-parser/dialect/mysql/src/test/java/org/apache/shardingsphere/sql/parser/mysql/MySQLTableVisitorTest.java
+++ b/sql-parser/dialect/mysql/src/test/java/org/apache/shardingsphere/sql/parser/mysql/stat/MySQLSQLStatVisitorTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.mysql;
+package org.apache.shardingsphere.sql.parser.mysql.stat;
 
 import org.antlr.v4.runtime.CodePointBuffer;
 import org.antlr.v4.runtime.CodePointCharStream;
@@ -24,7 +24,6 @@ import org.antlr.v4.runtime.tree.ParseTree;
 import org.apache.shardingsphere.sql.parser.core.ParseASTNode;
 import org.apache.shardingsphere.sql.parser.mysql.parser.MySQLLexer;
 import org.apache.shardingsphere.sql.parser.mysql.parser.MySQLParser;
-import org.apache.shardingsphere.sql.parser.mysql.visitor.MySQLSQLStatVisitor;
 import org.apache.shardingsphere.sql.parser.sql.common.SQLStats;
 import org.junit.jupiter.api.extension.ExtensionContext;
 import org.junit.jupiter.params.ParameterizedTest;
@@ -38,7 +37,7 @@ import java.util.stream.Stream;
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
 
-class MySQLTableVisitorTest {
+class MySQLSQLStatVisitorTest {
     
     @ParameterizedTest(name = "{0}")
     @ArgumentsSource(TestCaseArgumentsProvider.class)
@@ -46,9 +45,8 @@ class MySQLTableVisitorTest {
         CodePointBuffer buffer = CodePointBuffer.withChars(CharBuffer.wrap(inputSql.toCharArray()));
         MySQLLexer lexer = new MySQLLexer(CodePointCharStream.fromBuffer(buffer));
         MySQLParser parser = new MySQLParser(new CommonTokenStream(lexer));
-        ParseTree tree = ((ParseASTNode) parser.parse()).getRootNode();
-        MySQLSQLStatVisitor visitor = new MySQLSQLStatVisitor();
-        SQLStats sqlStats = visitor.visit(tree);
+        ParseTree parseTree = ((ParseASTNode) parser.parse()).getRootNode();
+        SQLStats sqlStats = new MySQLSQLStatVisitor().visit(parseTree);
         assertThat(sqlStats.getTables().keySet().size(), is(tableNum));
         assertThat(sqlStats.getColumns().keySet().size(), is(columnNum));
     }
diff --git a/sql-parser/dialect/mysql/src/test/java/org/apache/shardingsphere/sql/parser/mysql/MySQLXAVisitorTest.java b/sql-parser/dialect/mysql/src/test/java/org/apache/shardingsphere/sql/parser/mysql/visitor/MySQLXAVisitorTest.java
similarity index 95%
rename from sql-parser/dialect/mysql/src/test/java/org/apache/shardingsphere/sql/parser/mysql/MySQLXAVisitorTest.java
rename to sql-parser/dialect/mysql/src/test/java/org/apache/shardingsphere/sql/parser/mysql/visitor/MySQLXAVisitorTest.java
index d738c3a9784..24b501f69d4 100644
--- a/sql-parser/dialect/mysql/src/test/java/org/apache/shardingsphere/sql/parser/mysql/MySQLXAVisitorTest.java
+++ b/sql-parser/dialect/mysql/src/test/java/org/apache/shardingsphere/sql/parser/mysql/visitor/MySQLXAVisitorTest.java
@@ -15,14 +15,14 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.mysql;
+package org.apache.shardingsphere.sql.parser.mysql.visitor;
 
 import org.antlr.v4.runtime.CodePointBuffer;
 import org.antlr.v4.runtime.CodePointCharStream;
 import org.antlr.v4.runtime.CommonTokenStream;
 import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser;
 import org.apache.shardingsphere.sql.parser.mysql.parser.MySQLLexer;
-import org.apache.shardingsphere.sql.parser.mysql.visitor.statement.impl.MySQLTCLStatementSQLVisitor;
+import org.apache.shardingsphere.sql.parser.mysql.visitor.type.MySQLTCLStatementSQLVisitor;
 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.tcl.MySQLXAStatement;
 import org.junit.jupiter.api.extension.ExtensionContext;
 import org.junit.jupiter.params.ParameterizedTest;
diff --git a/sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/facade/OpenGaussSQLVisitorFacade.java b/sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/facade/OpenGaussSQLVisitorFacade.java
similarity index 78%
rename from sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/facade/OpenGaussSQLVisitorFacade.java
rename to sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/facade/OpenGaussSQLVisitorFacade.java
index 21a667fd90b..e2f3b3212e1 100644
--- a/sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/facade/OpenGaussSQLVisitorFacade.java
+++ b/sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/facade/OpenGaussSQLVisitorFacade.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.opengauss.visitor.statement.facade;
+package org.apache.shardingsphere.sql.parser.opengauss.visitor.facade;
 
 import org.apache.shardingsphere.sql.parser.api.visitor.type.DALSQLVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.DCLSQLVisitor;
@@ -23,11 +23,11 @@ import org.apache.shardingsphere.sql.parser.api.visitor.type.DDLSQLVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.DMLSQLVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.RLSQLVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.TCLSQLVisitor;
-import org.apache.shardingsphere.sql.parser.opengauss.visitor.statement.impl.OpenGaussDALStatementSQLVisitor;
-import org.apache.shardingsphere.sql.parser.opengauss.visitor.statement.impl.OpenGaussDCLStatementSQLVisitor;
-import org.apache.shardingsphere.sql.parser.opengauss.visitor.statement.impl.OpenGaussDDLStatementSQLVisitor;
-import org.apache.shardingsphere.sql.parser.opengauss.visitor.statement.impl.OpenGaussDMLStatementSQLVisitor;
-import org.apache.shardingsphere.sql.parser.opengauss.visitor.statement.impl.OpenGaussTCLStatementSQLVisitor;
+import org.apache.shardingsphere.sql.parser.opengauss.visitor.type.OpenGaussDALStatementSQLVisitor;
+import org.apache.shardingsphere.sql.parser.opengauss.visitor.type.OpenGaussDCLStatementSQLVisitor;
+import org.apache.shardingsphere.sql.parser.opengauss.visitor.type.OpenGaussDDLStatementSQLVisitor;
+import org.apache.shardingsphere.sql.parser.opengauss.visitor.type.OpenGaussDMLStatementSQLVisitor;
+import org.apache.shardingsphere.sql.parser.opengauss.visitor.type.OpenGaussTCLStatementSQLVisitor;
 import org.apache.shardingsphere.sql.parser.spi.SQLVisitorFacade;
 
 /**
diff --git a/sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/impl/OpenGaussDALStatementSQLVisitor.java b/sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/type/OpenGaussDALStatementSQLVisitor.java
similarity index 97%
rename from sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/impl/OpenGaussDALStatementSQLVisitor.java
rename to sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/type/OpenGaussDALStatementSQLVisitor.java
index 1a8e0c2b604..cd917b24e93 100644
--- a/sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/impl/OpenGaussDALStatementSQLVisitor.java
+++ b/sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/type/OpenGaussDALStatementSQLVisitor.java
@@ -15,10 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.opengauss.visitor.statement.impl;
+package org.apache.shardingsphere.sql.parser.opengauss.visitor.type;
 
 import org.apache.shardingsphere.sql.parser.api.visitor.ASTNode;
-import org.apache.shardingsphere.sql.parser.api.visitor.operation.SQLStatementVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.DALSQLVisitor;
 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AnalyzeTableContext;
 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.ColIdContext;
@@ -55,7 +54,7 @@ import java.util.LinkedList;
 /**
  * DAL Statement SQL visitor for openGauss.
  */
-public final class OpenGaussDALStatementSQLVisitor extends OpenGaussStatementSQLVisitor implements DALSQLVisitor, SQLStatementVisitor {
+public final class OpenGaussDALStatementSQLVisitor extends OpenGaussStatementSQLVisitor implements DALSQLVisitor {
     
     @Override
     public ASTNode visitShow(final ShowContext ctx) {
diff --git a/sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/impl/OpenGaussDCLStatementSQLVisitor.java b/sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/type/OpenGaussDCLStatementSQLVisitor.java
similarity index 95%
rename from sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/impl/OpenGaussDCLStatementSQLVisitor.java
rename to sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/type/OpenGaussDCLStatementSQLVisitor.java
index 25a67bfab78..b0ea30fd8a8 100644
--- a/sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/impl/OpenGaussDCLStatementSQLVisitor.java
+++ b/sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/type/OpenGaussDCLStatementSQLVisitor.java
@@ -15,10 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.opengauss.visitor.statement.impl;
+package org.apache.shardingsphere.sql.parser.opengauss.visitor.type;
 
 import org.apache.shardingsphere.sql.parser.api.visitor.ASTNode;
-import org.apache.shardingsphere.sql.parser.api.visitor.operation.SQLStatementVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.DCLSQLVisitor;
 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AlterRoleContext;
 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AlterUserContext;
@@ -46,7 +45,7 @@ import java.util.Optional;
 /**
  * DCL Statement SQL visitor for openGauss.
  */
-public final class OpenGaussDCLStatementSQLVisitor extends OpenGaussStatementSQLVisitor implements DCLSQLVisitor, SQLStatementVisitor {
+public final class OpenGaussDCLStatementSQLVisitor extends OpenGaussStatementSQLVisitor implements DCLSQLVisitor {
     
     @Override
     public ASTNode visitGrant(final GrantContext ctx) {
diff --git a/sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/impl/OpenGaussDDLStatementSQLVisitor.java b/sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/type/OpenGaussDDLStatementSQLVisitor.java
similarity index 99%
rename from sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/impl/OpenGaussDDLStatementSQLVisitor.java
rename to sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/type/OpenGaussDDLStatementSQLVisitor.java
index 4c2e8eb0a88..a418c8bf450 100644
--- a/sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/impl/OpenGaussDDLStatementSQLVisitor.java
+++ b/sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/type/OpenGaussDDLStatementSQLVisitor.java
@@ -15,10 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.opengauss.visitor.statement.impl;
+package org.apache.shardingsphere.sql.parser.opengauss.visitor.type;
 
 import org.apache.shardingsphere.sql.parser.api.visitor.ASTNode;
-import org.apache.shardingsphere.sql.parser.api.visitor.operation.SQLStatementVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.DDLSQLVisitor;
 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AbsoluteCountContext;
 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AddColumnSpecificationContext;
@@ -251,7 +250,7 @@ import java.util.Optional;
 /**
  * DDL Statement SQL visitor for openGauss.
  */
-public final class OpenGaussDDLStatementSQLVisitor extends OpenGaussStatementSQLVisitor implements DDLSQLVisitor, SQLStatementVisitor {
+public final class OpenGaussDDLStatementSQLVisitor extends OpenGaussStatementSQLVisitor implements DDLSQLVisitor {
     
     @SuppressWarnings("unchecked")
     @Override
diff --git a/sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/impl/OpenGaussDMLStatementSQLVisitor.java b/sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/type/OpenGaussDMLStatementSQLVisitor.java
similarity index 93%
rename from sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/impl/OpenGaussDMLStatementSQLVisitor.java
rename to sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/type/OpenGaussDMLStatementSQLVisitor.java
index d71d6211ad0..2e2a4dabee7 100644
--- a/sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/impl/OpenGaussDMLStatementSQLVisitor.java
+++ b/sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/type/OpenGaussDMLStatementSQLVisitor.java
@@ -15,10 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.opengauss.visitor.statement.impl;
+package org.apache.shardingsphere.sql.parser.opengauss.visitor.type;
 
 import org.apache.shardingsphere.sql.parser.api.visitor.ASTNode;
-import org.apache.shardingsphere.sql.parser.api.visitor.operation.SQLStatementVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.DMLSQLVisitor;
 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.CallContext;
 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.CheckpointContext;
@@ -36,7 +35,7 @@ import org.apache.shardingsphere.sql.parser.sql.dialect.statement.opengauss.dml.
 /**
  * DML Statement SQL visitor for openGauss.
  */
-public final class OpenGaussDMLStatementSQLVisitor extends OpenGaussStatementSQLVisitor implements DMLSQLVisitor, SQLStatementVisitor {
+public final class OpenGaussDMLStatementSQLVisitor extends OpenGaussStatementSQLVisitor implements DMLSQLVisitor {
     
     @Override
     public ASTNode visitCall(final CallContext ctx) {
diff --git a/sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/impl/OpenGaussStatementSQLVisitor.java b/sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/type/OpenGaussStatementSQLVisitor.java
similarity index 99%
rename from sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/impl/OpenGaussStatementSQLVisitor.java
rename to sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/type/OpenGaussStatementSQLVisitor.java
index 9e1685463a6..901d8ee46fb 100644
--- a/sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/impl/OpenGaussStatementSQLVisitor.java
+++ b/sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/type/OpenGaussStatementSQLVisitor.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.opengauss.visitor.statement.impl;
+package org.apache.shardingsphere.sql.parser.opengauss.visitor.type;
 
 import lombok.AccessLevel;
 import lombok.Getter;
diff --git a/sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/impl/OpenGaussTCLStatementSQLVisitor.java b/sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/type/OpenGaussTCLStatementSQLVisitor.java
similarity index 96%
rename from sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/impl/OpenGaussTCLStatementSQLVisitor.java
rename to sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/type/OpenGaussTCLStatementSQLVisitor.java
index 5382a645364..9c8083e31ee 100644
--- a/sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/impl/OpenGaussTCLStatementSQLVisitor.java
+++ b/sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/type/OpenGaussTCLStatementSQLVisitor.java
@@ -15,10 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.opengauss.visitor.statement.impl;
+package org.apache.shardingsphere.sql.parser.opengauss.visitor.type;
 
 import org.apache.shardingsphere.sql.parser.api.visitor.ASTNode;
-import org.apache.shardingsphere.sql.parser.api.visitor.operation.SQLStatementVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.TCLSQLVisitor;
 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AbortContext;
 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.BeginTransactionContext;
@@ -47,7 +46,7 @@ import org.apache.shardingsphere.sql.parser.sql.dialect.statement.opengauss.tcl.
 /**
  * TCL Statement SQL visitor for openGauss.
  */
-public final class OpenGaussTCLStatementSQLVisitor extends OpenGaussStatementSQLVisitor implements TCLSQLVisitor, SQLStatementVisitor {
+public final class OpenGaussTCLStatementSQLVisitor extends OpenGaussStatementSQLVisitor implements TCLSQLVisitor {
     
     @Override
     public ASTNode visitSetTransaction(final SetTransactionContext ctx) {
diff --git a/sql-parser/dialect/opengauss/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.SQLVisitorFacade b/sql-parser/dialect/opengauss/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.SQLVisitorFacade
index 2238008e092..f0ae5be6312 100644
--- a/sql-parser/dialect/opengauss/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.SQLVisitorFacade
+++ b/sql-parser/dialect/opengauss/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.SQLVisitorFacade
@@ -15,4 +15,4 @@
 # limitations under the License.
 #
 
-org.apache.shardingsphere.sql.parser.opengauss.visitor.statement.facade.OpenGaussSQLVisitorFacade
+org.apache.shardingsphere.sql.parser.opengauss.visitor.facade.OpenGaussSQLVisitorFacade
diff --git a/sql-parser/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/facade/OracleSQLVisitorFacade.java b/sql-parser/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/facade/OracleSQLVisitorFacade.java
similarity index 79%
rename from sql-parser/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/facade/OracleSQLVisitorFacade.java
rename to sql-parser/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/facade/OracleSQLVisitorFacade.java
index eb86181cd6f..baf9511baa5 100644
--- a/sql-parser/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/facade/OracleSQLVisitorFacade.java
+++ b/sql-parser/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/facade/OracleSQLVisitorFacade.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.oracle.visitor.statement.facade;
+package org.apache.shardingsphere.sql.parser.oracle.visitor.facade;
 
 import org.apache.shardingsphere.sql.parser.spi.SQLVisitorFacade;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.DALSQLVisitor;
@@ -24,11 +24,11 @@ import org.apache.shardingsphere.sql.parser.api.visitor.type.DDLSQLVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.DMLSQLVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.RLSQLVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.TCLSQLVisitor;
-import org.apache.shardingsphere.sql.parser.oracle.visitor.statement.impl.OracleDALStatementSQLVisitor;
-import org.apache.shardingsphere.sql.parser.oracle.visitor.statement.impl.OracleDCLStatementSQLVisitor;
-import org.apache.shardingsphere.sql.parser.oracle.visitor.statement.impl.OracleDDLStatementSQLVisitor;
-import org.apache.shardingsphere.sql.parser.oracle.visitor.statement.impl.OracleDMLStatementSQLVisitor;
-import org.apache.shardingsphere.sql.parser.oracle.visitor.statement.impl.OracleTCLStatementSQLVisitor;
+import org.apache.shardingsphere.sql.parser.oracle.visitor.type.OracleDALStatementSQLVisitor;
+import org.apache.shardingsphere.sql.parser.oracle.visitor.type.OracleDCLStatementSQLVisitor;
+import org.apache.shardingsphere.sql.parser.oracle.visitor.type.OracleDDLStatementSQLVisitor;
+import org.apache.shardingsphere.sql.parser.oracle.visitor.type.OracleDMLStatementSQLVisitor;
+import org.apache.shardingsphere.sql.parser.oracle.visitor.type.OracleTCLStatementSQLVisitor;
 
 /**
  * SQL visitor facade for Oracle.
diff --git a/sql-parser/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleDALStatementSQLVisitor.java b/sql-parser/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/type/OracleDALStatementSQLVisitor.java
similarity index 86%
rename from sql-parser/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleDALStatementSQLVisitor.java
rename to sql-parser/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/type/OracleDALStatementSQLVisitor.java
index 26054763775..a88f26701a9 100644
--- a/sql-parser/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleDALStatementSQLVisitor.java
+++ b/sql-parser/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/type/OracleDALStatementSQLVisitor.java
@@ -15,10 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.oracle.visitor.statement.impl;
+package org.apache.shardingsphere.sql.parser.oracle.visitor.type;
 
 import org.apache.shardingsphere.sql.parser.api.visitor.ASTNode;
-import org.apache.shardingsphere.sql.parser.api.visitor.operation.SQLStatementVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.DALSQLVisitor;
 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterResourceCostContext;
 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.dal.OracleAlterResourceCostStatement;
@@ -26,7 +25,7 @@ import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.dal.Ora
 /**
  * DAL Statement SQL visitor for Oracle.
  */
-public final class OracleDALStatementSQLVisitor extends OracleStatementSQLVisitor implements DALSQLVisitor, SQLStatementVisitor {
+public final class OracleDALStatementSQLVisitor extends OracleStatementSQLVisitor implements DALSQLVisitor {
     
     @Override
     public ASTNode visitAlterResourceCost(final AlterResourceCostContext ctx) {
diff --git a/sql-parser/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleDCLStatementSQLVisitor.java b/sql-parser/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/type/OracleDCLStatementSQLVisitor.java
similarity index 95%
rename from sql-parser/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleDCLStatementSQLVisitor.java
rename to sql-parser/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/type/OracleDCLStatementSQLVisitor.java
index 1fcac92d3ca..50ec9a6101f 100644
--- a/sql-parser/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleDCLStatementSQLVisitor.java
+++ b/sql-parser/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/type/OracleDCLStatementSQLVisitor.java
@@ -15,10 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.oracle.visitor.statement.impl;
+package org.apache.shardingsphere.sql.parser.oracle.visitor.type;
 
 import org.apache.shardingsphere.sql.parser.api.visitor.ASTNode;
-import org.apache.shardingsphere.sql.parser.api.visitor.operation.SQLStatementVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.DCLSQLVisitor;
 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterRoleContext;
 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterUserContext;
@@ -47,7 +46,7 @@ import java.util.Collections;
 /**
  * DCL Statement SQL visitor for Oracle.
  */
-public final class OracleDCLStatementSQLVisitor extends OracleStatementSQLVisitor implements DCLSQLVisitor, SQLStatementVisitor {
+public final class OracleDCLStatementSQLVisitor extends OracleStatementSQLVisitor implements DCLSQLVisitor {
     
     @Override
     public ASTNode visitGrant(final GrantContext ctx) {
diff --git a/sql-parser/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleDDLStatementSQLVisitor.java b/sql-parser/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/type/OracleDDLStatementSQLVisitor.java
similarity index 99%
rename from sql-parser/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleDDLStatementSQLVisitor.java
rename to sql-parser/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/type/OracleDDLStatementSQLVisitor.java
index ff5be90db6d..d703aa02fa9 100644
--- a/sql-parser/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleDDLStatementSQLVisitor.java
+++ b/sql-parser/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/type/OracleDDLStatementSQLVisitor.java
@@ -15,10 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.oracle.visitor.statement.impl;
+package org.apache.shardingsphere.sql.parser.oracle.visitor.type;
 
 import org.apache.shardingsphere.sql.parser.api.visitor.ASTNode;
-import org.apache.shardingsphere.sql.parser.api.visitor.operation.SQLStatementVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.DDLSQLVisitor;
 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AddColumnSpecificationContext;
 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AddConstraintSpecificationContext;
@@ -256,7 +255,7 @@ import java.util.LinkedList;
 /**
  * DDL Statement SQL visitor for Oracle.
  */
-public final class OracleDDLStatementSQLVisitor extends OracleStatementSQLVisitor implements DDLSQLVisitor, SQLStatementVisitor {
+public final class OracleDDLStatementSQLVisitor extends OracleStatementSQLVisitor implements DDLSQLVisitor {
     
     @SuppressWarnings("unchecked")
     @Override
diff --git a/sql-parser/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleDMLStatementSQLVisitor.java b/sql-parser/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/type/OracleDMLStatementSQLVisitor.java
similarity index 99%
rename from sql-parser/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleDMLStatementSQLVisitor.java
rename to sql-parser/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/type/OracleDMLStatementSQLVisitor.java
index de69c03d72a..db4f18ed090 100644
--- a/sql-parser/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleDMLStatementSQLVisitor.java
+++ b/sql-parser/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/type/OracleDMLStatementSQLVisitor.java
@@ -15,11 +15,10 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.oracle.visitor.statement.impl;
+package org.apache.shardingsphere.sql.parser.oracle.visitor.type;
 
 import org.antlr.v4.runtime.misc.Interval;
 import org.apache.shardingsphere.sql.parser.api.visitor.ASTNode;
-import org.apache.shardingsphere.sql.parser.api.visitor.operation.SQLStatementVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.DMLSQLVisitor;
 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AliasContext;
 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AssignmentValueContext;
@@ -171,7 +170,7 @@ import java.util.stream.Collectors;
 /**
  * DML Statement SQL visitor for Oracle.
  */
-public final class OracleDMLStatementSQLVisitor extends OracleStatementSQLVisitor implements DMLSQLVisitor, SQLStatementVisitor {
+public final class OracleDMLStatementSQLVisitor extends OracleStatementSQLVisitor implements DMLSQLVisitor {
     
     @Override
     public ASTNode visitInsert(final InsertContext ctx) {
diff --git a/sql-parser/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleStatementSQLVisitor.java b/sql-parser/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/type/OracleStatementSQLVisitor.java
similarity index 99%
rename from sql-parser/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleStatementSQLVisitor.java
rename to sql-parser/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/type/OracleStatementSQLVisitor.java
index 92923ad8468..b7f5c10fc8a 100644
--- a/sql-parser/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleStatementSQLVisitor.java
+++ b/sql-parser/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/type/OracleStatementSQLVisitor.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.oracle.visitor.statement.impl;
+package org.apache.shardingsphere.sql.parser.oracle.visitor.type;
 
 import lombok.AccessLevel;
 import lombok.Getter;
diff --git a/sql-parser/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleTCLStatementSQLVisitor.java b/sql-parser/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/type/OracleTCLStatementSQLVisitor.java
similarity index 93%
rename from sql-parser/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleTCLStatementSQLVisitor.java
rename to sql-parser/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/type/OracleTCLStatementSQLVisitor.java
index c103175ecad..7a9e691f8b4 100644
--- a/sql-parser/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleTCLStatementSQLVisitor.java
+++ b/sql-parser/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/type/OracleTCLStatementSQLVisitor.java
@@ -15,10 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.oracle.visitor.statement.impl;
+package org.apache.shardingsphere.sql.parser.oracle.visitor.type;
 
 import org.apache.shardingsphere.sql.parser.api.visitor.ASTNode;
-import org.apache.shardingsphere.sql.parser.api.visitor.operation.SQLStatementVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.TCLSQLVisitor;
 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CommitContext;
 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.RollbackContext;
@@ -35,7 +34,7 @@ import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.tcl.Ora
 /**
  * TCL Statement SQL visitor for Oracle.
  */
-public final class OracleTCLStatementSQLVisitor extends OracleStatementSQLVisitor implements TCLSQLVisitor, SQLStatementVisitor {
+public final class OracleTCLStatementSQLVisitor extends OracleStatementSQLVisitor implements TCLSQLVisitor {
     
     @Override
     public ASTNode visitSetTransaction(final SetTransactionContext ctx) {
diff --git a/sql-parser/dialect/oracle/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.SQLVisitorFacade b/sql-parser/dialect/oracle/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.SQLVisitorFacade
index 7e6e0628387..c4f8f28e10d 100644
--- a/sql-parser/dialect/oracle/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.SQLVisitorFacade
+++ b/sql-parser/dialect/oracle/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.SQLVisitorFacade
@@ -15,4 +15,4 @@
 # limitations under the License.
 #
 
-org.apache.shardingsphere.sql.parser.oracle.visitor.statement.facade.OracleSQLVisitorFacade
+org.apache.shardingsphere.sql.parser.oracle.visitor.facade.OracleSQLVisitorFacade
diff --git a/sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/facade/PostgreSQLSQLVisitorFacade.java b/sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/facade/PostgreSQLSQLVisitorFacade.java
similarity index 80%
rename from sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/facade/PostgreSQLSQLVisitorFacade.java
rename to sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/facade/PostgreSQLSQLVisitorFacade.java
index f590a404cdf..775d77cdc4c 100644
--- a/sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/facade/PostgreSQLSQLVisitorFacade.java
+++ b/sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/facade/PostgreSQLSQLVisitorFacade.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.postgresql.visitor.statement.facade;
+package org.apache.shardingsphere.sql.parser.postgresql.visitor.facade;
 
 import org.apache.shardingsphere.sql.parser.spi.SQLVisitorFacade;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.DALSQLVisitor;
@@ -24,11 +24,11 @@ import org.apache.shardingsphere.sql.parser.api.visitor.type.DDLSQLVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.DMLSQLVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.RLSQLVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.TCLSQLVisitor;
-import org.apache.shardingsphere.sql.parser.postgresql.visitor.statement.impl.PostgreSQLDALStatementSQLVisitor;
-import org.apache.shardingsphere.sql.parser.postgresql.visitor.statement.impl.PostgreSQLDCLStatementSQLVisitor;
-import org.apache.shardingsphere.sql.parser.postgresql.visitor.statement.impl.PostgreSQLDDLStatementSQLVisitor;
-import org.apache.shardingsphere.sql.parser.postgresql.visitor.statement.impl.PostgreSQLDMLStatementSQLVisitor;
-import org.apache.shardingsphere.sql.parser.postgresql.visitor.statement.impl.PostgreSQLTCLStatementSQLVisitor;
+import org.apache.shardingsphere.sql.parser.postgresql.visitor.type.PostgreSQLDALStatementSQLVisitor;
+import org.apache.shardingsphere.sql.parser.postgresql.visitor.type.PostgreSQLDCLStatementSQLVisitor;
+import org.apache.shardingsphere.sql.parser.postgresql.visitor.type.PostgreSQLDDLStatementSQLVisitor;
+import org.apache.shardingsphere.sql.parser.postgresql.visitor.type.PostgreSQLDMLStatementSQLVisitor;
+import org.apache.shardingsphere.sql.parser.postgresql.visitor.type.PostgreSQLTCLStatementSQLVisitor;
 
 /**
  * SQL visitor facade for PostgreSQL.
diff --git a/sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/impl/PostgreSQLDALStatementSQLVisitor.java b/sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/type/PostgreSQLDALStatementSQLVisitor.java
similarity index 98%
rename from sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/impl/PostgreSQLDALStatementSQLVisitor.java
rename to sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/type/PostgreSQLDALStatementSQLVisitor.java
index 756e99aaf97..f0f985ef8f3 100644
--- a/sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/impl/PostgreSQLDALStatementSQLVisitor.java
+++ b/sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/type/PostgreSQLDALStatementSQLVisitor.java
@@ -15,10 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.postgresql.visitor.statement.impl;
+package org.apache.shardingsphere.sql.parser.postgresql.visitor.type;
 
 import org.apache.shardingsphere.sql.parser.api.visitor.ASTNode;
-import org.apache.shardingsphere.sql.parser.api.visitor.operation.SQLStatementVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.DALSQLVisitor;
 import org.apache.shardingsphere.sql.parser.autogen.PostgreSQLStatementParser.AnalyzeTableContext;
 import org.apache.shardingsphere.sql.parser.autogen.PostgreSQLStatementParser.ColIdContext;
@@ -55,7 +54,7 @@ import java.util.LinkedList;
 /**
  * DAL Statement SQL visitor for PostgreSQL.
  */
-public final class PostgreSQLDALStatementSQLVisitor extends PostgreSQLStatementSQLVisitor implements DALSQLVisitor, SQLStatementVisitor {
+public final class PostgreSQLDALStatementSQLVisitor extends PostgreSQLStatementSQLVisitor implements DALSQLVisitor {
     
     @Override
     public ASTNode visitShow(final ShowContext ctx) {
diff --git a/sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/impl/PostgreSQLDCLStatementSQLVisitor.java b/sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/type/PostgreSQLDCLStatementSQLVisitor.java
similarity index 97%
rename from sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/impl/PostgreSQLDCLStatementSQLVisitor.java
rename to sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/type/PostgreSQLDCLStatementSQLVisitor.java
index 8bafb3b31c9..f26d8ed1543 100644
--- a/sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/impl/PostgreSQLDCLStatementSQLVisitor.java
+++ b/sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/type/PostgreSQLDCLStatementSQLVisitor.java
@@ -15,10 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.postgresql.visitor.statement.impl;
+package org.apache.shardingsphere.sql.parser.postgresql.visitor.type;
 
 import org.apache.shardingsphere.sql.parser.api.visitor.ASTNode;
-import org.apache.shardingsphere.sql.parser.api.visitor.operation.SQLStatementVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.DCLSQLVisitor;
 import org.apache.shardingsphere.sql.parser.autogen.PostgreSQLStatementParser.AlterRoleContext;
 import org.apache.shardingsphere.sql.parser.autogen.PostgreSQLStatementParser.AlterUserContext;
@@ -50,7 +49,7 @@ import java.util.Optional;
 /**
  * DCL Statement SQL visitor for PostgreSQL.
  */
-public final class PostgreSQLDCLStatementSQLVisitor extends PostgreSQLStatementSQLVisitor implements DCLSQLVisitor, SQLStatementVisitor {
+public final class PostgreSQLDCLStatementSQLVisitor extends PostgreSQLStatementSQLVisitor implements DCLSQLVisitor {
     
     @Override
     public ASTNode visitGrant(final GrantContext ctx) {
diff --git a/sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/impl/PostgreSQLDDLStatementSQLVisitor.java b/sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/type/PostgreSQLDDLStatementSQLVisitor.java
similarity index 99%
rename from sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/impl/PostgreSQLDDLStatementSQLVisitor.java
rename to sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/type/PostgreSQLDDLStatementSQLVisitor.java
index 391eca68517..fc41e84d67d 100644
--- a/sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/impl/PostgreSQLDDLStatementSQLVisitor.java
+++ b/sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/type/PostgreSQLDDLStatementSQLVisitor.java
@@ -15,10 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.postgresql.visitor.statement.impl;
+package org.apache.shardingsphere.sql.parser.postgresql.visitor.type;
 
 import org.apache.shardingsphere.sql.parser.api.visitor.ASTNode;
-import org.apache.shardingsphere.sql.parser.api.visitor.operation.SQLStatementVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.DDLSQLVisitor;
 import org.apache.shardingsphere.sql.parser.autogen.PostgreSQLStatementParser.AbsoluteCountContext;
 import org.apache.shardingsphere.sql.parser.autogen.PostgreSQLStatementParser.AddColumnSpecificationContext;
@@ -324,7 +323,7 @@ import java.util.Optional;
 /**
  * DDL Statement SQL visitor for PostgreSQL.
  */
-public final class PostgreSQLDDLStatementSQLVisitor extends PostgreSQLStatementSQLVisitor implements DDLSQLVisitor, SQLStatementVisitor {
+public final class PostgreSQLDDLStatementSQLVisitor extends PostgreSQLStatementSQLVisitor implements DDLSQLVisitor {
     
     @SuppressWarnings("unchecked")
     @Override
diff --git a/sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/impl/PostgreSQLDMLStatementSQLVisitor.java b/sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/type/PostgreSQLDMLStatementSQLVisitor.java
similarity index 97%
rename from sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/impl/PostgreSQLDMLStatementSQLVisitor.java
rename to sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/type/PostgreSQLDMLStatementSQLVisitor.java
index 3848253669c..a77a99d9acd 100644
--- a/sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/impl/PostgreSQLDMLStatementSQLVisitor.java
+++ b/sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/type/PostgreSQLDMLStatementSQLVisitor.java
@@ -15,11 +15,10 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.postgresql.visitor.statement.impl;
+package org.apache.shardingsphere.sql.parser.postgresql.visitor.type;
 
 import org.antlr.v4.runtime.misc.Interval;
 import org.apache.shardingsphere.sql.parser.api.visitor.ASTNode;
-import org.apache.shardingsphere.sql.parser.api.visitor.operation.SQLStatementVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.DMLSQLVisitor;
 import org.apache.shardingsphere.sql.parser.autogen.PostgreSQLStatementParser.CallArgumentContext;
 import org.apache.shardingsphere.sql.parser.autogen.PostgreSQLStatementParser.CallContext;
@@ -55,7 +54,7 @@ import java.util.LinkedList;
 /**
  * DML Statement SQL visitor for PostgreSQL.
  */
-public final class PostgreSQLDMLStatementSQLVisitor extends PostgreSQLStatementSQLVisitor implements DMLSQLVisitor, SQLStatementVisitor {
+public final class PostgreSQLDMLStatementSQLVisitor extends PostgreSQLStatementSQLVisitor implements DMLSQLVisitor {
     
     @Override
     public ASTNode visitCall(final CallContext ctx) {
diff --git a/sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/impl/PostgreSQLStatementSQLVisitor.java b/sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/type/PostgreSQLStatementSQLVisitor.java
similarity index 99%
rename from sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/impl/PostgreSQLStatementSQLVisitor.java
rename to sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/type/PostgreSQLStatementSQLVisitor.java
index dcd497fcb7b..8c56a102f7f 100644
--- a/sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/impl/PostgreSQLStatementSQLVisitor.java
+++ b/sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/type/PostgreSQLStatementSQLVisitor.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.postgresql.visitor.statement.impl;
+package org.apache.shardingsphere.sql.parser.postgresql.visitor.type;
 
 import lombok.AccessLevel;
 import lombok.Getter;
diff --git a/sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/impl/PostgreSQLTCLStatementSQLVisitor.java b/sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/type/PostgreSQLTCLStatementSQLVisitor.java
similarity index 98%
rename from sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/impl/PostgreSQLTCLStatementSQLVisitor.java
rename to sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/type/PostgreSQLTCLStatementSQLVisitor.java
index 9f28c3b180a..b9a2c621154 100644
--- a/sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/impl/PostgreSQLTCLStatementSQLVisitor.java
+++ b/sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/type/PostgreSQLTCLStatementSQLVisitor.java
@@ -15,10 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.postgresql.visitor.statement.impl;
+package org.apache.shardingsphere.sql.parser.postgresql.visitor.type;
 
 import org.apache.shardingsphere.sql.parser.api.visitor.ASTNode;
-import org.apache.shardingsphere.sql.parser.api.visitor.operation.SQLStatementVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.TCLSQLVisitor;
 import org.apache.shardingsphere.sql.parser.autogen.PostgreSQLStatementParser.AbortContext;
 import org.apache.shardingsphere.sql.parser.autogen.PostgreSQLStatementParser.BeginTransactionContext;
@@ -60,7 +59,7 @@ import java.util.List;
 /**
  * TCL Statement SQL visitor for PostgreSQL.
  */
-public final class PostgreSQLTCLStatementSQLVisitor extends PostgreSQLStatementSQLVisitor implements TCLSQLVisitor, SQLStatementVisitor {
+public final class PostgreSQLTCLStatementSQLVisitor extends PostgreSQLStatementSQLVisitor implements TCLSQLVisitor {
     
     @Override
     public ASTNode visitSetTransaction(final SetTransactionContext ctx) {
diff --git a/sql-parser/dialect/postgresql/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.SQLVisitorFacade b/sql-parser/dialect/postgresql/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.SQLVisitorFacade
index d60896c03db..712f4f72d06 100644
--- a/sql-parser/dialect/postgresql/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.SQLVisitorFacade
+++ b/sql-parser/dialect/postgresql/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.SQLVisitorFacade
@@ -15,4 +15,4 @@
 # limitations under the License.
 #
 
-org.apache.shardingsphere.sql.parser.postgresql.visitor.statement.facade.PostgreSQLSQLVisitorFacade
+org.apache.shardingsphere.sql.parser.postgresql.visitor.facade.PostgreSQLSQLVisitorFacade
diff --git a/sql-parser/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/facade/SQL92SQLVisitorFacade.java b/sql-parser/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/facade/SQL92SQLVisitorFacade.java
similarity index 79%
rename from sql-parser/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/facade/SQL92SQLVisitorFacade.java
rename to sql-parser/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/facade/SQL92SQLVisitorFacade.java
index 30567242293..9dc3b3c419f 100644
--- a/sql-parser/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/facade/SQL92SQLVisitorFacade.java
+++ b/sql-parser/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/facade/SQL92SQLVisitorFacade.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.sql92.visitor.statement.facade;
+package org.apache.shardingsphere.sql.parser.sql92.visitor.facade;
 
 import org.apache.shardingsphere.sql.parser.spi.SQLVisitorFacade;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.DALSQLVisitor;
@@ -24,11 +24,11 @@ import org.apache.shardingsphere.sql.parser.api.visitor.type.DDLSQLVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.DMLSQLVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.RLSQLVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.TCLSQLVisitor;
-import org.apache.shardingsphere.sql.parser.sql92.visitor.statement.impl.SQL92DALStatementSQLVisitor;
-import org.apache.shardingsphere.sql.parser.sql92.visitor.statement.impl.SQL92DCLStatementSQLVisitor;
-import org.apache.shardingsphere.sql.parser.sql92.visitor.statement.impl.SQL92DDLStatementSQLVisitor;
-import org.apache.shardingsphere.sql.parser.sql92.visitor.statement.impl.SQL92DMLStatementSQLVisitor;
-import org.apache.shardingsphere.sql.parser.sql92.visitor.statement.impl.SQL92TCLStatementSQLVisitor;
+import org.apache.shardingsphere.sql.parser.sql92.visitor.type.SQL92DALStatementSQLVisitor;
+import org.apache.shardingsphere.sql.parser.sql92.visitor.type.SQL92DCLStatementSQLVisitor;
+import org.apache.shardingsphere.sql.parser.sql92.visitor.type.SQL92DDLStatementSQLVisitor;
+import org.apache.shardingsphere.sql.parser.sql92.visitor.type.SQL92DMLStatementSQLVisitor;
+import org.apache.shardingsphere.sql.parser.sql92.visitor.type.SQL92TCLStatementSQLVisitor;
 
 /**
  * SQL visitor facade for SQL92.
diff --git a/sql-parser/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/impl/SQL92DALStatementSQLVisitor.java b/sql-parser/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/type/SQL92DALStatementSQLVisitor.java
similarity index 81%
rename from sql-parser/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/impl/SQL92DALStatementSQLVisitor.java
rename to sql-parser/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/type/SQL92DALStatementSQLVisitor.java
index 10d1f167e2e..2a525b72a4e 100644
--- a/sql-parser/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/impl/SQL92DALStatementSQLVisitor.java
+++ b/sql-parser/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/type/SQL92DALStatementSQLVisitor.java
@@ -15,13 +15,12 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.sql92.visitor.statement.impl;
+package org.apache.shardingsphere.sql.parser.sql92.visitor.type;
 
-import org.apache.shardingsphere.sql.parser.api.visitor.operation.SQLStatementVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.DALSQLVisitor;
 
 /**
  * DAL Statement SQL visitor for SQL92.
  */
-public final class SQL92DALStatementSQLVisitor extends SQL92StatementSQLVisitor implements DALSQLVisitor, SQLStatementVisitor {
+public final class SQL92DALStatementSQLVisitor extends SQL92StatementSQLVisitor implements DALSQLVisitor {
 }
diff --git a/sql-parser/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/impl/SQL92DCLStatementSQLVisitor.java b/sql-parser/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/type/SQL92DCLStatementSQLVisitor.java
similarity index 92%
rename from sql-parser/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/impl/SQL92DCLStatementSQLVisitor.java
rename to sql-parser/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/type/SQL92DCLStatementSQLVisitor.java
index ced9b76d9c1..92594969f61 100644
--- a/sql-parser/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/impl/SQL92DCLStatementSQLVisitor.java
+++ b/sql-parser/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/type/SQL92DCLStatementSQLVisitor.java
@@ -15,10 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.sql92.visitor.statement.impl;
+package org.apache.shardingsphere.sql.parser.sql92.visitor.type;
 
 import org.apache.shardingsphere.sql.parser.api.visitor.ASTNode;
-import org.apache.shardingsphere.sql.parser.api.visitor.operation.SQLStatementVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.DCLSQLVisitor;
 import org.apache.shardingsphere.sql.parser.autogen.SQL92StatementParser.GrantContext;
 import org.apache.shardingsphere.sql.parser.autogen.SQL92StatementParser.PrivilegeClauseContext;
@@ -33,7 +32,7 @@ import java.util.Collections;
 /**
  * DCL Statement SQL visitor for SQL92.
  */
-public final class SQL92DCLStatementSQLVisitor extends SQL92StatementSQLVisitor implements DCLSQLVisitor, SQLStatementVisitor {
+public final class SQL92DCLStatementSQLVisitor extends SQL92StatementSQLVisitor implements DCLSQLVisitor {
     
     @Override
     public ASTNode visitGrant(final GrantContext ctx) {
diff --git a/sql-parser/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/impl/SQL92DDLStatementSQLVisitor.java b/sql-parser/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/type/SQL92DDLStatementSQLVisitor.java
similarity index 98%
rename from sql-parser/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/impl/SQL92DDLStatementSQLVisitor.java
rename to sql-parser/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/type/SQL92DDLStatementSQLVisitor.java
index abaf611ffbe..3cb9be6726a 100644
--- a/sql-parser/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/impl/SQL92DDLStatementSQLVisitor.java
+++ b/sql-parser/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/type/SQL92DDLStatementSQLVisitor.java
@@ -15,10 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.sql92.visitor.statement.impl;
+package org.apache.shardingsphere.sql.parser.sql92.visitor.type;
 
 import org.apache.shardingsphere.sql.parser.api.visitor.ASTNode;
-import org.apache.shardingsphere.sql.parser.api.visitor.operation.SQLStatementVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.DDLSQLVisitor;
 import org.apache.shardingsphere.sql.parser.autogen.SQL92StatementParser.AddColumnSpecificationContext;
 import org.apache.shardingsphere.sql.parser.autogen.SQL92StatementParser.AddConstraintSpecificationContext;
@@ -60,7 +59,7 @@ import java.util.Collections;
 /**
  * DDL Statement SQL visitor for SQL92.
  */
-public final class SQL92DDLStatementSQLVisitor extends SQL92StatementSQLVisitor implements DDLSQLVisitor, SQLStatementVisitor {
+public final class SQL92DDLStatementSQLVisitor extends SQL92StatementSQLVisitor implements DDLSQLVisitor {
     
     @SuppressWarnings("unchecked")
     @Override
diff --git a/sql-parser/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/impl/SQL92DMLStatementSQLVisitor.java b/sql-parser/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/type/SQL92DMLStatementSQLVisitor.java
similarity index 99%
rename from sql-parser/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/impl/SQL92DMLStatementSQLVisitor.java
rename to sql-parser/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/type/SQL92DMLStatementSQLVisitor.java
index f7a74c74e3a..774805ec465 100644
--- a/sql-parser/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/impl/SQL92DMLStatementSQLVisitor.java
+++ b/sql-parser/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/type/SQL92DMLStatementSQLVisitor.java
@@ -15,11 +15,10 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.sql92.visitor.statement.impl;
+package org.apache.shardingsphere.sql.parser.sql92.visitor.type;
 
 import org.antlr.v4.runtime.misc.Interval;
 import org.apache.shardingsphere.sql.parser.api.visitor.ASTNode;
-import org.apache.shardingsphere.sql.parser.api.visitor.operation.SQLStatementVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.DMLSQLVisitor;
 import org.apache.shardingsphere.sql.parser.autogen.SQL92StatementParser.AliasContext;
 import org.apache.shardingsphere.sql.parser.autogen.SQL92StatementParser.AssignmentContext;
@@ -103,7 +102,7 @@ import java.util.stream.Collectors;
 /**
  * DML Statement SQL visitor for SQL92.
  */
-public final class SQL92DMLStatementSQLVisitor extends SQL92StatementSQLVisitor implements DMLSQLVisitor, SQLStatementVisitor {
+public final class SQL92DMLStatementSQLVisitor extends SQL92StatementSQLVisitor implements DMLSQLVisitor {
     
     @Override
     public ASTNode visitInsert(final InsertContext ctx) {
diff --git a/sql-parser/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/impl/SQL92StatementSQLVisitor.java b/sql-parser/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/type/SQL92StatementSQLVisitor.java
similarity index 99%
rename from sql-parser/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/impl/SQL92StatementSQLVisitor.java
rename to sql-parser/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/type/SQL92StatementSQLVisitor.java
index 71954e1cb3d..0c4a7d6e7dc 100644
--- a/sql-parser/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/impl/SQL92StatementSQLVisitor.java
+++ b/sql-parser/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/type/SQL92StatementSQLVisitor.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.sql92.visitor.statement.impl;
+package org.apache.shardingsphere.sql.parser.sql92.visitor.type;
 
 import lombok.AccessLevel;
 import lombok.Getter;
diff --git a/sql-parser/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/impl/SQL92TCLStatementSQLVisitor.java b/sql-parser/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/type/SQL92TCLStatementSQLVisitor.java
similarity index 90%
rename from sql-parser/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/impl/SQL92TCLStatementSQLVisitor.java
rename to sql-parser/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/type/SQL92TCLStatementSQLVisitor.java
index cbdfbcef5c2..03585b08a30 100644
--- a/sql-parser/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/impl/SQL92TCLStatementSQLVisitor.java
+++ b/sql-parser/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/type/SQL92TCLStatementSQLVisitor.java
@@ -15,10 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.sql92.visitor.statement.impl;
+package org.apache.shardingsphere.sql.parser.sql92.visitor.type;
 
 import org.apache.shardingsphere.sql.parser.api.visitor.ASTNode;
-import org.apache.shardingsphere.sql.parser.api.visitor.operation.SQLStatementVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.TCLSQLVisitor;
 import org.apache.shardingsphere.sql.parser.autogen.SQL92StatementParser.CommitContext;
 import org.apache.shardingsphere.sql.parser.autogen.SQL92StatementParser.RollbackContext;
@@ -30,7 +29,7 @@ import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sql92.tcl.SQL9
 /**
  * TCL Statement SQL visitor for SQL92.
  */
-public final class SQL92TCLStatementSQLVisitor extends SQL92StatementSQLVisitor implements TCLSQLVisitor, SQLStatementVisitor {
+public final class SQL92TCLStatementSQLVisitor extends SQL92StatementSQLVisitor implements TCLSQLVisitor {
     
     @Override
     public ASTNode visitSetTransaction(final SetTransactionContext ctx) {
diff --git a/sql-parser/dialect/sql92/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.SQLVisitorFacade b/sql-parser/dialect/sql92/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.SQLVisitorFacade
index da01aa63441..91d2a6fb1eb 100644
--- a/sql-parser/dialect/sql92/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.SQLVisitorFacade
+++ b/sql-parser/dialect/sql92/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.SQLVisitorFacade
@@ -15,4 +15,4 @@
 # limitations under the License.
 #
 
-org.apache.shardingsphere.sql.parser.sql92.visitor.statement.facade.SQL92SQLVisitorFacade
+org.apache.shardingsphere.sql.parser.sql92.visitor.facade.SQL92SQLVisitorFacade
diff --git a/sql-parser/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/facade/SQLServerSQLVisitorFacade.java b/sql-parser/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/facade/SQLServerSQLVisitorFacade.java
similarity index 78%
rename from sql-parser/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/facade/SQLServerSQLVisitorFacade.java
rename to sql-parser/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/facade/SQLServerSQLVisitorFacade.java
index d55d2fdc7d1..adea52159f3 100644
--- a/sql-parser/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/facade/SQLServerSQLVisitorFacade.java
+++ b/sql-parser/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/facade/SQLServerSQLVisitorFacade.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.sqlserver.visitor.statement.facade;
+package org.apache.shardingsphere.sql.parser.sqlserver.visitor.facade;
 
 import org.apache.shardingsphere.sql.parser.spi.SQLVisitorFacade;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.DALSQLVisitor;
@@ -24,11 +24,11 @@ import org.apache.shardingsphere.sql.parser.api.visitor.type.DDLSQLVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.DMLSQLVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.RLSQLVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.TCLSQLVisitor;
-import org.apache.shardingsphere.sql.parser.sqlserver.visitor.statement.impl.SQLServerDALStatementSQLVisitor;
-import org.apache.shardingsphere.sql.parser.sqlserver.visitor.statement.impl.SQLServerDCLStatementSQLVisitor;
-import org.apache.shardingsphere.sql.parser.sqlserver.visitor.statement.impl.SQLServerDDLStatementSQLVisitor;
-import org.apache.shardingsphere.sql.parser.sqlserver.visitor.statement.impl.SQLServerDMLStatementSQLVisitor;
-import org.apache.shardingsphere.sql.parser.sqlserver.visitor.statement.impl.SQLServerTCLStatementSQLVisitor;
+import org.apache.shardingsphere.sql.parser.sqlserver.visitor.type.SQLServerDALStatementSQLVisitor;
+import org.apache.shardingsphere.sql.parser.sqlserver.visitor.type.SQLServerDCLStatementSQLVisitor;
+import org.apache.shardingsphere.sql.parser.sqlserver.visitor.type.SQLServerDDLStatementSQLVisitor;
+import org.apache.shardingsphere.sql.parser.sqlserver.visitor.type.SQLServerDMLStatementSQLVisitor;
+import org.apache.shardingsphere.sql.parser.sqlserver.visitor.type.SQLServerTCLStatementSQLVisitor;
 
 /**
  * SQL visitor facade for SQLServer.
diff --git a/sql-parser/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/impl/SQLServerDALStatementSQLVisitor.java b/sql-parser/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/type/SQLServerDALStatementSQLVisitor.java
similarity index 90%
rename from sql-parser/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/impl/SQLServerDALStatementSQLVisitor.java
rename to sql-parser/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/type/SQLServerDALStatementSQLVisitor.java
index 06087a59036..463ccace03a 100644
--- a/sql-parser/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/impl/SQLServerDALStatementSQLVisitor.java
+++ b/sql-parser/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/type/SQLServerDALStatementSQLVisitor.java
@@ -15,10 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.sqlserver.visitor.statement.impl;
+package org.apache.shardingsphere.sql.parser.sqlserver.visitor.type;
 
 import org.apache.shardingsphere.sql.parser.api.visitor.ASTNode;
-import org.apache.shardingsphere.sql.parser.api.visitor.operation.SQLStatementVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.DALSQLVisitor;
 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.ExplainContext;
 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.ExplainableStatementContext;
@@ -28,7 +27,7 @@ import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.dal.
 /**
  * DAL Statement SQL visitor for SQLServer.
  */
-public final class SQLServerDALStatementSQLVisitor extends SQLServerStatementSQLVisitor implements DALSQLVisitor, SQLStatementVisitor {
+public final class SQLServerDALStatementSQLVisitor extends SQLServerStatementSQLVisitor implements DALSQLVisitor {
     
     @Override
     public ASTNode visitExplain(final ExplainContext ctx) {
diff --git a/sql-parser/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/impl/SQLServerDCLStatementSQLVisitor.java b/sql-parser/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/type/SQLServerDCLStatementSQLVisitor.java
similarity index 98%
rename from sql-parser/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/impl/SQLServerDCLStatementSQLVisitor.java
rename to sql-parser/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/type/SQLServerDCLStatementSQLVisitor.java
index b08f4f0a9c8..80fbd9f4474 100644
--- a/sql-parser/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/impl/SQLServerDCLStatementSQLVisitor.java
+++ b/sql-parser/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/type/SQLServerDCLStatementSQLVisitor.java
@@ -15,10 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.sqlserver.visitor.statement.impl;
+package org.apache.shardingsphere.sql.parser.sqlserver.visitor.type;
 
 import org.apache.shardingsphere.sql.parser.api.visitor.ASTNode;
-import org.apache.shardingsphere.sql.parser.api.visitor.operation.SQLStatementVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.DCLSQLVisitor;
 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.AlterLoginContext;
 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.AlterRoleContext;
@@ -77,7 +76,7 @@ import java.util.LinkedList;
 /**
  * DCL Statement SQL visitor for SQLServer.
  */
-public final class SQLServerDCLStatementSQLVisitor extends SQLServerStatementSQLVisitor implements DCLSQLVisitor, SQLStatementVisitor {
+public final class SQLServerDCLStatementSQLVisitor extends SQLServerStatementSQLVisitor implements DCLSQLVisitor {
     
     @Override
     public ASTNode visitGrant(final GrantContext ctx) {
diff --git a/sql-parser/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/impl/SQLServerDDLStatementSQLVisitor.java b/sql-parser/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/type/SQLServerDDLStatementSQLVisitor.java
similarity index 97%
rename from sql-parser/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/impl/SQLServerDDLStatementSQLVisitor.java
rename to sql-parser/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/type/SQLServerDDLStatementSQLVisitor.java
index 6dd747820f4..4b5d31e7645 100644
--- a/sql-parser/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/impl/SQLServerDDLStatementSQLVisitor.java
+++ b/sql-parser/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/type/SQLServerDDLStatementSQLVisitor.java
@@ -15,10 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.sqlserver.visitor.statement.impl;
+package org.apache.shardingsphere.sql.parser.sqlserver.visitor.type;
 
 import org.apache.shardingsphere.sql.parser.api.visitor.ASTNode;
-import org.apache.shardingsphere.sql.parser.api.visitor.operation.SQLStatementVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.DDLSQLVisitor;
 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.AddColumnSpecificationContext;
 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.AlterCheckConstraintContext;
@@ -40,7 +39,6 @@ import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.Col
 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.ColumnDefinitionOptionContext;
 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.ColumnNameContext;
 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.ColumnNameWithSortContext;
-import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.ColumnNamesWithSortContext;
 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.CreateDatabaseContext;
 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.CreateFunctionContext;
 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.CreateIndexContext;
@@ -126,7 +124,7 @@ import java.util.LinkedList;
 /**
  * DDL Statement SQL visitor for SQLServer.
  */
-public final class SQLServerDDLStatementSQLVisitor extends SQLServerStatementSQLVisitor implements DDLSQLVisitor, SQLStatementVisitor {
+public final class SQLServerDDLStatementSQLVisitor extends SQLServerStatementSQLVisitor implements DDLSQLVisitor {
     
     @Override
     public ASTNode visitCreateTable(final CreateTableContext ctx) {
@@ -325,15 +323,6 @@ public final class SQLServerDDLStatementSQLVisitor extends SQLServerStatementSQL
         return result;
     }
     
-    @Override
-    public ASTNode visitColumnNamesWithSort(final ColumnNamesWithSortContext ctx) {
-        CollectionValue<ColumnSegment> result = new CollectionValue<>();
-        for (ColumnNameWithSortContext each : ctx.columnNameWithSort()) {
-            result.getValue().add((ColumnSegment) visit(each));
-        }
-        return result;
-    }
-    
     @Override
     public ASTNode visitColumnNameWithSort(final ColumnNameWithSortContext ctx) {
         return visit(ctx.columnName());
diff --git a/sql-parser/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/impl/SQLServerDMLStatementSQLVisitor.java b/sql-parser/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/type/SQLServerDMLStatementSQLVisitor.java
similarity index 80%
rename from sql-parser/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/impl/SQLServerDMLStatementSQLVisitor.java
rename to sql-parser/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/type/SQLServerDMLStatementSQLVisitor.java
index eb44c824240..5d6edc0a5bc 100644
--- a/sql-parser/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/impl/SQLServerDMLStatementSQLVisitor.java
+++ b/sql-parser/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/type/SQLServerDMLStatementSQLVisitor.java
@@ -15,13 +15,12 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.sqlserver.visitor.statement.impl;
+package org.apache.shardingsphere.sql.parser.sqlserver.visitor.type;
 
-import org.apache.shardingsphere.sql.parser.api.visitor.operation.SQLStatementVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.DMLSQLVisitor;
 
 /**
  * DML Statement SQL visitor for SQLServer.
  */
-public final class SQLServerDMLStatementSQLVisitor extends SQLServerStatementSQLVisitor implements DMLSQLVisitor, SQLStatementVisitor {
+public final class SQLServerDMLStatementSQLVisitor extends SQLServerStatementSQLVisitor implements DMLSQLVisitor {
 }
diff --git a/sql-parser/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/impl/SQLServerStatementSQLVisitor.java b/sql-parser/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/type/SQLServerStatementSQLVisitor.java
similarity index 99%
rename from sql-parser/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/impl/SQLServerStatementSQLVisitor.java
rename to sql-parser/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/type/SQLServerStatementSQLVisitor.java
index 4fc9e634bb3..9b1f0c3520c 100644
--- a/sql-parser/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/impl/SQLServerStatementSQLVisitor.java
+++ b/sql-parser/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/type/SQLServerStatementSQLVisitor.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.sqlserver.visitor.statement.impl;
+package org.apache.shardingsphere.sql.parser.sqlserver.visitor.type;
 
 import lombok.AccessLevel;
 import lombok.Getter;
diff --git a/sql-parser/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/impl/SQLServerTCLStatementSQLVisitor.java b/sql-parser/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/type/SQLServerTCLStatementSQLVisitor.java
similarity index 95%
rename from sql-parser/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/impl/SQLServerTCLStatementSQLVisitor.java
rename to sql-parser/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/type/SQLServerTCLStatementSQLVisitor.java
index ab7161c3bb7..b9d98b23b50 100644
--- a/sql-parser/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/impl/SQLServerTCLStatementSQLVisitor.java
+++ b/sql-parser/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/type/SQLServerTCLStatementSQLVisitor.java
@@ -15,10 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.sqlserver.visitor.statement.impl;
+package org.apache.shardingsphere.sql.parser.sqlserver.visitor.type;
 
 import org.apache.shardingsphere.sql.parser.api.visitor.ASTNode;
-import org.apache.shardingsphere.sql.parser.api.visitor.operation.SQLStatementVisitor;
 import org.apache.shardingsphere.sql.parser.api.visitor.type.TCLSQLVisitor;
 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.BeginDistributedTransactionContext;
 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.BeginTransactionContext;
@@ -42,7 +41,7 @@ import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.tcl.
 /**
  * TCL Statement SQL visitor for SQLServer.
  */
-public final class SQLServerTCLStatementSQLVisitor extends SQLServerStatementSQLVisitor implements TCLSQLVisitor, SQLStatementVisitor {
+public final class SQLServerTCLStatementSQLVisitor extends SQLServerStatementSQLVisitor implements TCLSQLVisitor {
     
     @Override
     public ASTNode visitSetTransaction(final SetTransactionContext ctx) {
diff --git a/sql-parser/dialect/sqlserver/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.SQLVisitorFacade b/sql-parser/dialect/sqlserver/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.SQLVisitorFacade
index c643d2c1d4e..9bd079531ff 100644
--- a/sql-parser/dialect/sqlserver/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.SQLVisitorFacade
+++ b/sql-parser/dialect/sqlserver/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.SQLVisitorFacade
@@ -15,4 +15,4 @@
 # limitations under the License.
 #
 
-org.apache.shardingsphere.sql.parser.sqlserver.visitor.statement.facade.SQLServerSQLVisitorFacade
+org.apache.shardingsphere.sql.parser.sqlserver.visitor.facade.SQLServerSQLVisitorFacade
diff --git a/sql-parser/engine/src/main/java/org/apache/shardingsphere/sql/parser/api/SQLFormatEngine.java b/sql-parser/engine/src/main/java/org/apache/shardingsphere/sql/parser/api/SQLFormatEngine.java
index 79854b981ee..4df37dd8443 100644
--- a/sql-parser/engine/src/main/java/org/apache/shardingsphere/sql/parser/api/SQLFormatEngine.java
+++ b/sql-parser/engine/src/main/java/org/apache/shardingsphere/sql/parser/api/SQLFormatEngine.java
@@ -21,7 +21,7 @@ import lombok.RequiredArgsConstructor;
 import org.antlr.v4.runtime.tree.ParseTree;
 import org.antlr.v4.runtime.tree.ParseTreeVisitor;
 import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPILoader;
-import org.apache.shardingsphere.sql.parser.api.visitor.operation.SQLFormatVisitor;
+import org.apache.shardingsphere.sql.parser.api.format.SQLFormatVisitor;
 
 import java.util.Properties;
 
diff --git a/sql-parser/spi/src/main/java/org/apache/shardingsphere/sql/parser/api/visitor/operation/SQLFormatVisitor.java b/sql-parser/spi/src/main/java/org/apache/shardingsphere/sql/parser/api/format/SQLFormatVisitor.java
similarity index 82%
rename from sql-parser/spi/src/main/java/org/apache/shardingsphere/sql/parser/api/visitor/operation/SQLFormatVisitor.java
rename to sql-parser/spi/src/main/java/org/apache/shardingsphere/sql/parser/api/format/SQLFormatVisitor.java
index dfbd979a84e..d27fcc1c423 100644
--- a/sql-parser/spi/src/main/java/org/apache/shardingsphere/sql/parser/api/visitor/operation/SQLFormatVisitor.java
+++ b/sql-parser/spi/src/main/java/org/apache/shardingsphere/sql/parser/api/format/SQLFormatVisitor.java
@@ -15,12 +15,13 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.api.visitor.operation;
+package org.apache.shardingsphere.sql.parser.api.format;
 
 import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPI;
+import org.apache.shardingsphere.sql.parser.api.visitor.SQLVisitor;
 
 /**
  * SQL format visitor.
  */
-public interface SQLFormatVisitor extends SQLOperationVisitor, TypedSPI {
+public interface SQLFormatVisitor extends SQLVisitor, TypedSPI {
 }
diff --git a/sql-parser/spi/src/main/java/org/apache/shardingsphere/sql/parser/api/visitor/operation/SQLOperationVisitor.java b/sql-parser/spi/src/main/java/org/apache/shardingsphere/sql/parser/api/visitor/operation/SQLOperationVisitor.java
deleted file mode 100644
index c07cc8e31c3..00000000000
--- a/sql-parser/spi/src/main/java/org/apache/shardingsphere/sql/parser/api/visitor/operation/SQLOperationVisitor.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.sql.parser.api.visitor.operation;
-
-import org.apache.shardingsphere.sql.parser.api.visitor.SQLVisitor;
-
-/**
- * SQL operation visitor.
- */
-public interface SQLOperationVisitor extends SQLVisitor {
-}
diff --git a/sql-parser/spi/src/main/java/org/apache/shardingsphere/sql/parser/api/visitor/operation/SQLStatementVisitor.java b/sql-parser/spi/src/main/java/org/apache/shardingsphere/sql/parser/api/visitor/operation/SQLStatementVisitor.java
deleted file mode 100644
index 330ca0ac1de..00000000000
--- a/sql-parser/spi/src/main/java/org/apache/shardingsphere/sql/parser/api/visitor/operation/SQLStatementVisitor.java
+++ /dev/null
@@ -1,24 +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.sql.parser.api.visitor.operation;
-
-/**
- * SQL statement visitor.
- */
-public interface SQLStatementVisitor extends SQLOperationVisitor {
-}
diff --git a/sql-parser/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/SQLStats.java b/sql-parser/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/SQLStats.java
index 4b35f94cbef..b9dfd185328 100644
--- a/sql-parser/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/SQLStats.java
+++ b/sql-parser/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/SQLStats.java
@@ -24,6 +24,9 @@ import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.Sim
 import java.util.LinkedHashMap;
 import java.util.Map;
 
+/**
+ * SQL stats.
+ */
 @Getter
 public final class SQLStats {
     
@@ -32,8 +35,9 @@ public final class SQLStats {
     private final Map<Integer, ColumnSegment> columns = new LinkedHashMap<>();
     
     /**
-     * add table to tables.
-     * @param tableSegment SimpleTableSegment.
+     * Add table to tables.
+     * 
+     * @param tableSegment table segment
      */
     public void addTable(final SimpleTableSegment tableSegment) {
         if (!tables.containsKey(tableSegment.getTableName().getIdentifier().getValue())) {
@@ -42,13 +46,14 @@ public final class SQLStats {
     }
     
     /**
-     * add column to columns.
-     * @param column ColumnSegment.
+     * Add column to columns.
+     * 
+     * @param columnSegment column segment
      */
-    public void addColumn(final ColumnSegment column) {
-        int columnHashcode = column.hashCode();
+    public void addColumn(final ColumnSegment columnSegment) {
+        int columnHashcode = columnSegment.hashCode();
         if (!columns.containsKey(columnHashcode)) {
-            columns.put(columnHashcode, column);
+            columns.put(columnHashcode, columnSegment);
         }
     }
 }