This is an automated email from the ASF dual-hosted git repository.
zhaojinchao 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 28a322b86e0 Refactor FeaturedDistSQLStatementParserEngine (#29631)
28a322b86e0 is described below
commit 28a322b86e090fe909fb4432346760db3d078311
Author: Liang Zhang <[email protected]>
AuthorDate: Tue Jan 2 21:12:42 2024 +0800
Refactor FeaturedDistSQLStatementParserEngine (#29631)
---
.../featured/FeaturedDistSQLStatementParserEngine.java | 15 +++++----------
1 file changed, 5 insertions(+), 10 deletions(-)
diff --git
a/parser/distsql/engine/src/main/java/org/apache/shardingsphere/distsql/parser/core/featured/FeaturedDistSQLStatementParserEngine.java
b/parser/distsql/engine/src/main/java/org/apache/shardingsphere/distsql/parser/core/featured/FeaturedDistSQLStatementParserEngine.java
index 666bfbc67c1..9955ca01d1b 100644
---
a/parser/distsql/engine/src/main/java/org/apache/shardingsphere/distsql/parser/core/featured/FeaturedDistSQLStatementParserEngine.java
+++
b/parser/distsql/engine/src/main/java/org/apache/shardingsphere/distsql/parser/core/featured/FeaturedDistSQLStatementParserEngine.java
@@ -22,7 +22,6 @@ import org.antlr.v4.runtime.misc.ParseCancellationException;
import org.antlr.v4.runtime.tree.ErrorNode;
import org.apache.shardingsphere.distsql.parser.engine.spi.DistSQLParserFacade;
import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.visitor.SQLVisitor;
import org.apache.shardingsphere.sql.parser.core.ParseASTNode;
import org.apache.shardingsphere.sql.parser.core.SQLParserFactory;
@@ -39,17 +38,13 @@ public final class FeaturedDistSQLStatementParserEngine {
*
* @param sql SQL to be parsed
* @return SQL statement
+ * @throws SQLParsingException SQL parsing exception
*/
public SQLStatement parse(final String sql) {
- FeaturedDistSQLParseASTNode featuredDistSQLParseASTNode =
parseToASTNode(sql);
- return getSQLStatement(sql,
featuredDistSQLParseASTNode.getFeatureType(),
featuredDistSQLParseASTNode.getParseASTNode());
- }
-
- private FeaturedDistSQLParseASTNode parseToASTNode(final String sql) {
for (DistSQLParserFacade each :
ShardingSphereServiceLoader.getServiceInstances(DistSQLParserFacade.class)) {
try {
- ParseASTNode parseASTNode = (ParseASTNode)
SQLParserFactory.newInstance(sql, each.getLexerClass(),
each.getParserClass()).parse();
- return new FeaturedDistSQLParseASTNode(each.getType(),
parseASTNode);
+ ParseASTNode astNode = (ParseASTNode)
SQLParserFactory.newInstance(sql, each.getLexerClass(),
each.getParserClass()).parse();
+ return getSQLStatement(sql, each, astNode);
} catch (final ParseCancellationException | SQLParsingException
ignored) {
}
}
@@ -58,11 +53,11 @@ public final class FeaturedDistSQLStatementParserEngine {
@SneakyThrows(ReflectiveOperationException.class)
@SuppressWarnings("rawtypes")
- private SQLStatement getSQLStatement(final String sql, final String
featureType, final ParseASTNode parseASTNode) {
+ private SQLStatement getSQLStatement(final String sql, final
DistSQLParserFacade facade, final ParseASTNode parseASTNode) {
if (parseASTNode.getRootNode() instanceof ErrorNode) {
throw new SQLParsingException(sql);
}
- SQLVisitor visitor =
TypedSPILoader.getService(DistSQLParserFacade.class,
featureType).getVisitorClass().getDeclaredConstructor().newInstance();
+ SQLVisitor visitor =
facade.getVisitorClass().getDeclaredConstructor().newInstance();
return (SQLStatement) visitor.visit(parseASTNode.getRootNode());
}
}