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