You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by wu...@apache.org on 2021/06/12 12:53:00 UTC

[shardingsphere] branch master updated: Add DatabaseTypedSQLParserFacade and FeatureTypedSQLParserFacade for SQL parser (#10792)

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 8fa0475  Add DatabaseTypedSQLParserFacade and FeatureTypedSQLParserFacade for SQL parser (#10792)
8fa0475 is described below

commit 8fa047500e9fc999982e1da891834ed7defcf2f6
Author: Liang Zhang <te...@163.com>
AuthorDate: Sat Jun 12 20:52:23 2021 +0800

    Add DatabaseTypedSQLParserFacade and FeatureTypedSQLParserFacade for SQL parser (#10792)
    
    * Add DatabaseTypedSQLParserFacade
    
    * Rename FeatureTypedSQLParserFacade
    
    * Fix compile error
    
    * Update docs
---
 docs/document/content/dev-manual/sql-parser.cn.md  | 20 ++++++++--------
 docs/document/content/dev-manual/sql-parser.en.md  |  8 +++----
 .../parser/api/DistSQLStatementParserEngine.java   |  8 +++----
 .../parser/core/rule/DistRuleSQLParserFactory.java |  4 ++--
 ...acade.java => FeatureTypedSQLParserFacade.java} | 27 +++++-----------------
 .../sql/parser/mysql/parser/MySQLParserFacade.java | 14 +++++------
 ...re.sql.parser.spi.DatabaseTypedSQLParserFacade} |  0
 .../parser/oracle/parser/OracleParserFacade.java   | 14 +++++------
 ...re.sql.parser.spi.DatabaseTypedSQLParserFacade} |  0
 .../postgresql/parser/PostgreSQLParserFacade.java  | 14 +++++------
 ...re.sql.parser.spi.DatabaseTypedSQLParserFacade} |  0
 .../sql/parser/sql92/parser/SQL92ParserFacade.java | 14 +++++------
 ...re.sql.parser.spi.DatabaseTypedSQLParserFacade} |  0
 .../sqlserver/parser/SQLServerParserFacade.java    | 14 +++++------
 ...re.sql.parser.spi.DatabaseTypedSQLParserFacade} |  0
 .../core/parser/SQLParserFacadeRegistry.java       |  8 +++----
 .../sql/parser/core/parser/SQLParserFactory.java   |  3 ++-
 ...cade.java => DatabaseTypedSQLParserFacade.java} | 21 ++---------------
 .../sql/parser/spi/SQLParserFacade.java            |  7 ------
 19 files changed, 69 insertions(+), 107 deletions(-)

diff --git a/docs/document/content/dev-manual/sql-parser.cn.md b/docs/document/content/dev-manual/sql-parser.cn.md
index 888838c..953421f 100644
--- a/docs/document/content/dev-manual/sql-parser.cn.md
+++ b/docs/document/content/dev-manual/sql-parser.cn.md
@@ -5,14 +5,14 @@ weight = 1
 chapter = true
 +++
 
-## SQLParserFacade
+## DatabaseTypedSQLParserFacade
 
-| *SPI 名称*              | *详细说明*                             |
-| ---------------------- | -------------------------------------- |
-| SQLParserFacade        | 配置用于SQL解析的词法分析器和语法分析器入口 |
+| *SPI 名称*                    | *详细说明*                            |
+| ---------------------------- | ----------------------------------- |
+| DatabaseTypedSQLParserFacade | 配置用于SQL解析的词法分析器和语法分析器入口 |
 
-| *Implementation Class* | *Description*                          |
-| ---------------------- | -------------------------------------- |
+| *Implementation Class* | *Description*                         |
+| ---------------------- | ------------------------------------- |
 | MySQLParserFacade      | 基于 MySQL 的 SQL 解析器入口             |
 | PostgreSQLParserFacade | 基于 PostgreSQL 的SQL 解析器入口         |
 | SQLServerParserFacade  | 基于 SQLServer 的SQL 解析器入口          |
@@ -21,12 +21,12 @@ chapter = true
 
 ## SQLVisitorFacade
 
-| *SPI 名称*                          | *详细说明*                                   |
-| ----------------------------------- | ------------------------------------------- |
+| *SPI 名称*                           | *详细说明*                                  |
+| ----------------------------------- | ------------------------------------------ |
 | SQLVisitorFacade                    | SQL 语法树访问器入口                          |
 
-| *Implementation Class*              | *Description*                               |
-| ----------------------------------- | ------------------------------------------- |
+| *Implementation Class*              | *Description*                             |
+| ----------------------------------- | ----------------------------------------- |
 | MySQLStatementSQLVisitorFacade      | 基于 MySQL 的提取 SQL 语句的语法树访问器       |
 | PostgreSQLStatementSQLVisitorFacade | 基于 PostgreSQL 的提取 SQL 语句的语法树访问器  |
 | SQLServerStatementSQLVisitorFacade  | 基于 SQLServer 的提取 SQL 语句的语法树访问器   |
diff --git a/docs/document/content/dev-manual/sql-parser.en.md b/docs/document/content/dev-manual/sql-parser.en.md
index d061b27..4d7688a 100644
--- a/docs/document/content/dev-manual/sql-parser.en.md
+++ b/docs/document/content/dev-manual/sql-parser.en.md
@@ -5,11 +5,11 @@ weight = 1
 chapter = true
 +++
 
-## SQLParserFacade
+## DatabaseTypedSQLParserFacade
 
-| *SPI Name*             | *Description*                          |
-| ---------------------- | -------------------------------------- |
-| SQLParserFacade        | SQL parser facade for lexer and parser |
+| *SPI Name*                   | *Description*                          |
+| ---------------------------- | -------------------------------------- |
+| DatabaseTypedSQLParserFacade | SQL parser facade for lexer and parser |
 
 | *Implementation Class* | *Description*                          |
 | ---------------------- | -------------------------------------- |
diff --git a/shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/java/org/apache/shardingsphere/distsql/parser/api/DistSQLStatementParserEngine.java b/shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/java/org/apache/shardingsphere/distsql/parser/api/DistSQLStatementParserEngine.java
index 2beb25f..e55c34f 100644
--- a/shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/java/org/apache/shardingsphere/distsql/parser/api/DistSQLStatementParserEngine.java
+++ b/shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/java/org/apache/shardingsphere/distsql/parser/api/DistSQLStatementParserEngine.java
@@ -22,7 +22,7 @@ import org.antlr.v4.runtime.tree.ErrorNode;
 import org.apache.shardingsphere.distsql.parser.core.rule.DistRuleSQLParserFactory;
 import org.apache.shardingsphere.distsql.parser.core.standard.DistSQLParserFactory;
 import org.apache.shardingsphere.distsql.parser.core.standard.DistSQLVisitor;
-import org.apache.shardingsphere.distsql.parser.spi.DistRuleSQLParserFacade;
+import org.apache.shardingsphere.distsql.parser.spi.FeatureTypedSQLParserFacade;
 import org.apache.shardingsphere.sql.parser.api.parser.SQLParser;
 import org.apache.shardingsphere.sql.parser.core.parser.ParseASTNode;
 import org.apache.shardingsphere.sql.parser.exception.SQLParsingException;
@@ -37,10 +37,10 @@ import java.util.ServiceLoader;
  */
 public final class DistSQLStatementParserEngine {
     
-    private static final Collection<DistRuleSQLParserFacade> RULE_PARSER_FACADES = new LinkedList<>();
+    private static final Collection<FeatureTypedSQLParserFacade> RULE_PARSER_FACADES = new LinkedList<>();
     
     static {
-        for (DistRuleSQLParserFacade each : ServiceLoader.load(DistRuleSQLParserFacade.class)) {
+        for (FeatureTypedSQLParserFacade each : ServiceLoader.load(FeatureTypedSQLParserFacade.class)) {
             RULE_PARSER_FACADES.add(each);
         }
     }
@@ -74,7 +74,7 @@ public final class DistSQLStatementParserEngine {
     }
     
     private ParseASTNode parseFromRuleParsers(final String sql) {
-        for (DistRuleSQLParserFacade each : RULE_PARSER_FACADES) {
+        for (FeatureTypedSQLParserFacade each : RULE_PARSER_FACADES) {
             try {
                 return (ParseASTNode) DistRuleSQLParserFactory.newInstance(sql, each).parse();
             } catch (final ParseCancellationException ignored) {
diff --git a/shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/java/org/apache/shardingsphere/distsql/parser/core/rule/DistRuleSQLParserFactory.java b/shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/java/org/apache/shardingsphere/distsql/parser/core/rule/DistRuleSQLParserFactory.java
index a2a8cf3..b6ab976 100644
--- a/shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/java/org/apache/shardingsphere/distsql/parser/core/rule/DistRuleSQLParserFactory.java
+++ b/shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/java/org/apache/shardingsphere/distsql/parser/core/rule/DistRuleSQLParserFactory.java
@@ -26,7 +26,7 @@ import org.antlr.v4.runtime.CodePointCharStream;
 import org.antlr.v4.runtime.CommonTokenStream;
 import org.antlr.v4.runtime.Lexer;
 import org.antlr.v4.runtime.TokenStream;
-import org.apache.shardingsphere.distsql.parser.spi.DistRuleSQLParserFacade;
+import org.apache.shardingsphere.distsql.parser.spi.FeatureTypedSQLParserFacade;
 import org.apache.shardingsphere.sql.parser.api.parser.SQLLexer;
 import org.apache.shardingsphere.sql.parser.api.parser.SQLParser;
 
@@ -45,7 +45,7 @@ public final class DistRuleSQLParserFactory {
      * @param sql SQL
      * @return SQL parser
      */
-    public static SQLParser newInstance(final String sql, final DistRuleSQLParserFacade facade) {
+    public static SQLParser newInstance(final String sql, final FeatureTypedSQLParserFacade facade) {
         return createSQLParser(createTokenStream(sql, facade.getLexerClass()), facade.getParserClass());
     }
     
diff --git a/shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/java/org/apache/shardingsphere/distsql/parser/spi/DistRuleSQLParserFacade.java b/shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/java/org/apache/shardingsphere/distsql/parser/spi/FeatureTypedSQLParserFacade.java
similarity index 61%
rename from shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/java/org/apache/shardingsphere/distsql/parser/spi/DistRuleSQLParserFacade.java
rename to shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/java/org/apache/shardingsphere/distsql/parser/spi/FeatureTypedSQLParserFacade.java
index 6f5dc8b..4d11bd3 100644
--- a/shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/java/org/apache/shardingsphere/distsql/parser/spi/DistRuleSQLParserFacade.java
+++ b/shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/java/org/apache/shardingsphere/distsql/parser/spi/FeatureTypedSQLParserFacade.java
@@ -17,32 +17,17 @@
 
 package org.apache.shardingsphere.distsql.parser.spi;
 
-import org.apache.shardingsphere.sql.parser.api.parser.SQLLexer;
-import org.apache.shardingsphere.sql.parser.api.parser.SQLParser;
+import org.apache.shardingsphere.sql.parser.spi.SQLParserFacade;
 
 /**
- * Dist rule SQL parser facade.
+ * Feature type based SQL parser facade.
  */
-public interface DistRuleSQLParserFacade {
+public interface FeatureTypedSQLParserFacade extends SQLParserFacade {
     
     /**
-     * Get SQL lexer class type.
+     * Get feature type.
      *
-     * @return SQL lexer class type
+     * @return feature type
      */
-    Class<? extends SQLLexer> getLexerClass();
-    
-    /**
-     * Get SQL parser class type.
-     * 
-     * @return SQL parser class type
-     */
-    Class<? extends SQLParser> getParserClass();
-    
-    /**
-     * Get rule type.
-     *
-     * @return rule type
-     */
-    String getRuleType();
+    String getFeatureType();
 }
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/parser/MySQLParserFacade.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/parser/MySQLParserFacade.java
index 8aa0dcb..5fe83d2 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/parser/MySQLParserFacade.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/parser/MySQLParserFacade.java
@@ -19,17 +19,12 @@ package org.apache.shardingsphere.sql.parser.mysql.parser;
 
 import org.apache.shardingsphere.sql.parser.api.parser.SQLLexer;
 import org.apache.shardingsphere.sql.parser.api.parser.SQLParser;
-import org.apache.shardingsphere.sql.parser.spi.SQLParserFacade;
+import org.apache.shardingsphere.sql.parser.spi.DatabaseTypedSQLParserFacade;
 
 /**
  * SQL parser facade for MySQL.
  */
-public final class MySQLParserFacade implements SQLParserFacade {
-    
-    @Override
-    public String getDatabaseType() {
-        return "MySQL";
-    }
+public final class MySQLParserFacade implements DatabaseTypedSQLParserFacade {
     
     @Override
     public Class<? extends SQLLexer> getLexerClass() {
@@ -40,4 +35,9 @@ public final class MySQLParserFacade implements SQLParserFacade {
     public Class<? extends SQLParser> getParserClass() {
         return MySQLParser.class;
     }
+    
+    @Override
+    public String getDatabaseType() {
+        return "MySQL";
+    }
 }
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.SQLParserFacade b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.DatabaseTypedSQLParserFacade
similarity index 100%
rename from shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.SQLParserFacade
rename to shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.DatabaseTypedSQLParserFacade
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/parser/OracleParserFacade.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/parser/OracleParserFacade.java
index 29779ad..a16e9b0 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/parser/OracleParserFacade.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/parser/OracleParserFacade.java
@@ -19,17 +19,12 @@ package org.apache.shardingsphere.sql.parser.oracle.parser;
 
 import org.apache.shardingsphere.sql.parser.api.parser.SQLLexer;
 import org.apache.shardingsphere.sql.parser.api.parser.SQLParser;
-import org.apache.shardingsphere.sql.parser.spi.SQLParserFacade;
+import org.apache.shardingsphere.sql.parser.spi.DatabaseTypedSQLParserFacade;
 
 /**
  * SQL parser facade for Oracle.
  */
-public final class OracleParserFacade implements SQLParserFacade {
-    
-    @Override
-    public String getDatabaseType() {
-        return "Oracle";
-    }
+public final class OracleParserFacade implements DatabaseTypedSQLParserFacade {
     
     @Override
     public Class<? extends SQLLexer> getLexerClass() {
@@ -40,4 +35,9 @@ public final class OracleParserFacade implements SQLParserFacade {
     public Class<? extends SQLParser> getParserClass() {
         return OracleParser.class;
     }
+    
+    @Override
+    public String getDatabaseType() {
+        return "Oracle";
+    }
 }
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.SQLParserFacade b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.DatabaseTypedSQLParserFacade
similarity index 100%
rename from shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.SQLParserFacade
rename to shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.DatabaseTypedSQLParserFacade
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/parser/PostgreSQLParserFacade.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/parser/PostgreSQLParserFacade.java
index ababeb4..935835f 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/parser/PostgreSQLParserFacade.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/parser/PostgreSQLParserFacade.java
@@ -19,17 +19,12 @@ package org.apache.shardingsphere.sql.parser.postgresql.parser;
 
 import org.apache.shardingsphere.sql.parser.api.parser.SQLLexer;
 import org.apache.shardingsphere.sql.parser.api.parser.SQLParser;
-import org.apache.shardingsphere.sql.parser.spi.SQLParserFacade;
+import org.apache.shardingsphere.sql.parser.spi.DatabaseTypedSQLParserFacade;
 
 /**
  * SQL parser facade for PostgreSQL.
  */
-public final class PostgreSQLParserFacade implements SQLParserFacade {
-    
-    @Override
-    public String getDatabaseType() {
-        return "PostgreSQL";
-    }
+public final class PostgreSQLParserFacade implements DatabaseTypedSQLParserFacade {
     
     @Override
     public Class<? extends SQLLexer> getLexerClass() {
@@ -40,4 +35,9 @@ public final class PostgreSQLParserFacade implements SQLParserFacade {
     public Class<? extends SQLParser> getParserClass() {
         return PostgreSQLParser.class;
     }
+    
+    @Override
+    public String getDatabaseType() {
+        return "PostgreSQL";
+    }
 }
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.SQLParserFacade b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.DatabaseTypedSQLParserFacade
similarity index 100%
rename from shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.SQLParserFacade
rename to shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.DatabaseTypedSQLParserFacade
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/parser/SQL92ParserFacade.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/parser/SQL92ParserFacade.java
index d83bb02..6f97580 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/parser/SQL92ParserFacade.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/parser/SQL92ParserFacade.java
@@ -19,17 +19,12 @@ package org.apache.shardingsphere.sql.parser.sql92.parser;
 
 import org.apache.shardingsphere.sql.parser.api.parser.SQLLexer;
 import org.apache.shardingsphere.sql.parser.api.parser.SQLParser;
-import org.apache.shardingsphere.sql.parser.spi.SQLParserFacade;
+import org.apache.shardingsphere.sql.parser.spi.DatabaseTypedSQLParserFacade;
 
 /**
  * SQL parser facade for SQL92.
  */
-public final class SQL92ParserFacade implements SQLParserFacade {
-    
-    @Override
-    public String getDatabaseType() {
-        return "SQL92";
-    }
+public final class SQL92ParserFacade implements DatabaseTypedSQLParserFacade {
     
     @Override
     public Class<? extends SQLLexer> getLexerClass() {
@@ -40,4 +35,9 @@ public final class SQL92ParserFacade implements SQLParserFacade {
     public Class<? extends SQLParser> getParserClass() {
         return SQL92Parser.class;
     }
+    
+    @Override
+    public String getDatabaseType() {
+        return "SQL92";
+    }
 }
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sql92/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.SQLParserFacade b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sql92/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.DatabaseTypedSQLParserFacade
similarity index 100%
rename from shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sql92/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.SQLParserFacade
rename to shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sql92/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.DatabaseTypedSQLParserFacade
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/parser/SQLServerParserFacade.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/parser/SQLServerParserFacade.java
index 3c1a360..b5f8331 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/parser/SQLServerParserFacade.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/parser/SQLServerParserFacade.java
@@ -19,17 +19,12 @@ package org.apache.shardingsphere.sql.parser.sqlserver.parser;
 
 import org.apache.shardingsphere.sql.parser.api.parser.SQLLexer;
 import org.apache.shardingsphere.sql.parser.api.parser.SQLParser;
-import org.apache.shardingsphere.sql.parser.spi.SQLParserFacade;
+import org.apache.shardingsphere.sql.parser.spi.DatabaseTypedSQLParserFacade;
 
 /**
  * SQL parser facade for SQLServer.
  */
-public final class SQLServerParserFacade implements SQLParserFacade {
-    
-    @Override
-    public String getDatabaseType() {
-        return "SQLServer";
-    }
+public final class SQLServerParserFacade implements DatabaseTypedSQLParserFacade {
     
     @Override
     public Class<? extends SQLLexer> getLexerClass() {
@@ -40,4 +35,9 @@ public final class SQLServerParserFacade implements SQLParserFacade {
     public Class<? extends SQLParser> getParserClass() {
         return SQLServerParser.class;
     }
+    
+    @Override
+    public String getDatabaseType() {
+        return "SQLServer";
+    }
 }
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.SQLParserFacade b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.DatabaseTypedSQLParserFacade
similarity index 100%
rename from shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.SQLParserFacade
rename to shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.DatabaseTypedSQLParserFacade
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/parser/SQLParserFacadeRegistry.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/parser/SQLParserFacadeRegistry.java
index caff4d9..0d14cb3 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/parser/SQLParserFacadeRegistry.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/parser/SQLParserFacadeRegistry.java
@@ -17,7 +17,7 @@
 
 package org.apache.shardingsphere.sql.parser.core.parser;
 
-import org.apache.shardingsphere.sql.parser.spi.SQLParserFacade;
+import org.apache.shardingsphere.sql.parser.spi.DatabaseTypedSQLParserFacade;
 
 import java.util.LinkedHashMap;
 import java.util.Map;
@@ -30,10 +30,10 @@ public final class SQLParserFacadeRegistry {
     
     private static final SQLParserFacadeRegistry INSTANCE = new SQLParserFacadeRegistry();
     
-    private final Map<String, SQLParserFacade> facades = new LinkedHashMap<>();
+    private final Map<String, DatabaseTypedSQLParserFacade> facades = new LinkedHashMap<>();
     
     private SQLParserFacadeRegistry() {
-        for (SQLParserFacade each : ServiceLoader.load(SQLParserFacade.class)) {
+        for (DatabaseTypedSQLParserFacade each : ServiceLoader.load(DatabaseTypedSQLParserFacade.class)) {
             facades.put(each.getDatabaseType(), each);
         }
     }
@@ -53,7 +53,7 @@ public final class SQLParserFacadeRegistry {
      * @param databaseType database type
      * @return SQL parser facade
      */
-    public SQLParserFacade getSQLParserFacade(final String databaseType) {
+    public DatabaseTypedSQLParserFacade getSQLParserFacade(final String databaseType) {
         if (facades.containsKey(databaseType)) {
             return facades.get(databaseType);
         }
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/parser/SQLParserFactory.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/parser/SQLParserFactory.java
index 6002f40..205c775 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/parser/SQLParserFactory.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/parser/SQLParserFactory.java
@@ -28,6 +28,7 @@ import org.antlr.v4.runtime.Lexer;
 import org.antlr.v4.runtime.TokenStream;
 import org.apache.shardingsphere.sql.parser.api.parser.SQLLexer;
 import org.apache.shardingsphere.sql.parser.api.parser.SQLParser;
+import org.apache.shardingsphere.sql.parser.spi.DatabaseTypedSQLParserFacade;
 import org.apache.shardingsphere.sql.parser.spi.SQLParserFacade;
 
 import java.nio.CharBuffer;
@@ -46,7 +47,7 @@ public final class SQLParserFactory {
      * @return SQL parser
      */
     public static SQLParser newInstance(final String databaseType, final String sql) {
-        SQLParserFacade sqlParserFacade = SQLParserFacadeRegistry.getInstance().getSQLParserFacade(databaseType);
+        DatabaseTypedSQLParserFacade sqlParserFacade = SQLParserFacadeRegistry.getInstance().getSQLParserFacade(databaseType);
         return createSQLParser(sql, sqlParserFacade);
     }
     
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-spi/src/main/java/org/apache/shardingsphere/sql/parser/spi/SQLParserFacade.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-spi/src/main/java/org/apache/shardingsphere/sql/parser/spi/DatabaseTypedSQLParserFacade.java
similarity index 66%
copy from shardingsphere-sql-parser/shardingsphere-sql-parser-spi/src/main/java/org/apache/shardingsphere/sql/parser/spi/SQLParserFacade.java
copy to shardingsphere-sql-parser/shardingsphere-sql-parser-spi/src/main/java/org/apache/shardingsphere/sql/parser/spi/DatabaseTypedSQLParserFacade.java
index bd69aa1..55a82d2 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-spi/src/main/java/org/apache/shardingsphere/sql/parser/spi/SQLParserFacade.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-spi/src/main/java/org/apache/shardingsphere/sql/parser/spi/DatabaseTypedSQLParserFacade.java
@@ -17,13 +17,10 @@
 
 package org.apache.shardingsphere.sql.parser.spi;
 
-import org.apache.shardingsphere.sql.parser.api.parser.SQLLexer;
-import org.apache.shardingsphere.sql.parser.api.parser.SQLParser;
-
 /**
- * SQL parser facade.
+ * Database type based SQL parser facade.
  */
-public interface SQLParserFacade {
+public interface DatabaseTypedSQLParserFacade extends SQLParserFacade {
     
     /**
      * Get database type.
@@ -31,18 +28,4 @@ public interface SQLParserFacade {
      * @return database type
      */
     String getDatabaseType();
-    
-    /**
-     * Get SQL lexer class type.
-     *
-     * @return SQL lexer class type
-     */
-    Class<? extends SQLLexer> getLexerClass();
-    
-    /**
-     * Get SQL parser class type.
-     * 
-     * @return SQL parser class type
-     */
-    Class<? extends SQLParser> getParserClass();
 }
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-spi/src/main/java/org/apache/shardingsphere/sql/parser/spi/SQLParserFacade.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-spi/src/main/java/org/apache/shardingsphere/sql/parser/spi/SQLParserFacade.java
index bd69aa1..d11389f 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-spi/src/main/java/org/apache/shardingsphere/sql/parser/spi/SQLParserFacade.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-spi/src/main/java/org/apache/shardingsphere/sql/parser/spi/SQLParserFacade.java
@@ -26,13 +26,6 @@ import org.apache.shardingsphere.sql.parser.api.parser.SQLParser;
 public interface SQLParserFacade {
     
     /**
-     * Get database type.
-     *
-     * @return database type
-     */
-    String getDatabaseType();
-    
-    /**
      * Get SQL lexer class type.
      *
      * @return SQL lexer class type