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

zhonghongsheng 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 b773cc84ec0 Refactor SQLStatementVisitorFacade as DatabaseTypedSPI 
(#27335)
b773cc84ec0 is described below

commit b773cc84ec0ab5a96337378d2bfce8f32d3dd45b
Author: Liang Zhang <[email protected]>
AuthorDate: Thu Jul 20 20:14:29 2023 +0800

    Refactor SQLStatementVisitorFacade as DatabaseTypedSPI (#27335)
    
    * Refactor FormatSQLExecutor
    
    * Refactor SQLStatementVisitorFacade as DatabaseTypedSPI
    
    * Refactor SQLStatementVisitorFacade as DatabaseTypedSPI
---
 .../parser/mysql/visitor/statement/MySQLStatementVisitorFacade.java  | 2 +-
 .../opengauss/visitor/statement/OpenGaussStatementVisitorFacade.java | 2 +-
 .../oracle/visitor/statement/OracleStatementVisitorFacade.java       | 2 +-
 .../visitor/statement/PostgreSQLStatementVisitorFacade.java          | 2 +-
 .../parser/sql92/visitor/statement/SQL92StatementVisitorFacade.java  | 2 +-
 .../sqlserver/visitor/statement/SQLServerStatementVisitorFacade.java | 2 +-
 .../sql/parser/core/database/visitor/SQLStatementVisitorFactory.java | 4 +++-
 .../sql/parser/fixture/SQLStatementVisitorFacadeFixture.java         | 2 +-
 .../shardingsphere/sql/parser/spi/SQLStatementVisitorFacade.java     | 4 ++--
 .../proxy/backend/handler/distsql/rul/sql/FormatSQLExecutor.java     | 5 +++--
 .../proxy/backend/handler/distsql/rul/sql/FormatSQLExecutorTest.java | 5 +++--
 11 files changed, 18 insertions(+), 14 deletions(-)

diff --git 
a/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitorFacade.java
 
b/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitorFacade.java
index 10667c53be8..c1134714d92 100644
--- 
a/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitorFacade.java
+++ 
b/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitorFacade.java
@@ -67,7 +67,7 @@ public final class MySQLStatementVisitorFacade implements 
SQLStatementVisitorFac
     }
     
     @Override
-    public String getType() {
+    public String getDatabaseType() {
         return "MySQL";
     }
 }
diff --git 
a/parser/sql/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitorFacade.java
 
b/parser/sql/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitorFacade.java
index 30538c1e5d2..c8a53bf3d5b 100644
--- 
a/parser/sql/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitorFacade.java
+++ 
b/parser/sql/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitorFacade.java
@@ -66,7 +66,7 @@ public final class OpenGaussStatementVisitorFacade implements 
SQLStatementVisito
     }
     
     @Override
-    public String getType() {
+    public String getDatabaseType() {
         return "openGauss";
     }
 }
diff --git 
a/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitorFacade.java
 
b/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitorFacade.java
index 63b95f0c4ad..95e5b78bb11 100644
--- 
a/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitorFacade.java
+++ 
b/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitorFacade.java
@@ -66,7 +66,7 @@ public final class OracleStatementVisitorFacade implements 
SQLStatementVisitorFa
     }
     
     @Override
-    public String getType() {
+    public String getDatabaseType() {
         return "Oracle";
     }
 }
diff --git 
a/parser/sql/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitorFacade.java
 
b/parser/sql/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitorFacade.java
index 3f8e1455d3a..6befc778869 100644
--- 
a/parser/sql/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitorFacade.java
+++ 
b/parser/sql/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitorFacade.java
@@ -66,7 +66,7 @@ public final class PostgreSQLStatementVisitorFacade 
implements SQLStatementVisit
     }
     
     @Override
-    public String getType() {
+    public String getDatabaseType() {
         return "PostgreSQL";
     }
 }
diff --git 
a/parser/sql/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitorFacade.java
 
b/parser/sql/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitorFacade.java
index c9dd1a86288..2ea5647becc 100644
--- 
a/parser/sql/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitorFacade.java
+++ 
b/parser/sql/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitorFacade.java
@@ -66,7 +66,7 @@ public final class SQL92StatementVisitorFacade implements 
SQLStatementVisitorFac
     }
     
     @Override
-    public String getType() {
+    public String getDatabaseType() {
         return "SQL92";
     }
 }
diff --git 
a/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitorFacade.java
 
b/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitorFacade.java
index 593ce8fb908..7caebc59ec2 100644
--- 
a/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitorFacade.java
+++ 
b/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitorFacade.java
@@ -66,7 +66,7 @@ public final class SQLServerStatementVisitorFacade implements 
SQLStatementVisito
     }
     
     @Override
-    public String getType() {
+    public String getDatabaseType() {
         return "SQLServer";
     }
 }
diff --git 
a/parser/sql/engine/src/main/java/org/apache/shardingsphere/sql/parser/core/database/visitor/SQLStatementVisitorFactory.java
 
b/parser/sql/engine/src/main/java/org/apache/shardingsphere/sql/parser/core/database/visitor/SQLStatementVisitorFactory.java
index 57987069759..47eee29566e 100644
--- 
a/parser/sql/engine/src/main/java/org/apache/shardingsphere/sql/parser/core/database/visitor/SQLStatementVisitorFactory.java
+++ 
b/parser/sql/engine/src/main/java/org/apache/shardingsphere/sql/parser/core/database/visitor/SQLStatementVisitorFactory.java
@@ -20,6 +20,8 @@ package 
org.apache.shardingsphere.sql.parser.core.database.visitor;
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 import lombok.SneakyThrows;
+import 
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
+import org.apache.shardingsphere.infra.database.spi.DatabaseType;
 import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPILoader;
 import 
org.apache.shardingsphere.sql.parser.api.visitor.statement.SQLStatementVisitor;
 import org.apache.shardingsphere.sql.parser.exception.SQLParsingException;
@@ -40,7 +42,7 @@ public final class SQLStatementVisitorFactory {
      * @return created instance
      */
     public static SQLStatementVisitor newInstance(final String databaseType, 
final SQLVisitorRule visitorRule) {
-        SQLStatementVisitorFacade facade = 
TypedSPILoader.getService(SQLStatementVisitorFacade.class, databaseType);
+        SQLStatementVisitorFacade facade = 
DatabaseTypedSPILoader.getService(SQLStatementVisitorFacade.class, 
TypedSPILoader.getService(DatabaseType.class, databaseType));
         return createParseTreeVisitor(facade, visitorRule.getType());
     }
     
diff --git 
a/parser/sql/engine/src/test/java/org/apache/shardingsphere/sql/parser/fixture/SQLStatementVisitorFacadeFixture.java
 
b/parser/sql/engine/src/test/java/org/apache/shardingsphere/sql/parser/fixture/SQLStatementVisitorFacadeFixture.java
index b61a46d06e7..15966b6437e 100644
--- 
a/parser/sql/engine/src/test/java/org/apache/shardingsphere/sql/parser/fixture/SQLStatementVisitorFacadeFixture.java
+++ 
b/parser/sql/engine/src/test/java/org/apache/shardingsphere/sql/parser/fixture/SQLStatementVisitorFacadeFixture.java
@@ -58,7 +58,7 @@ public final class SQLStatementVisitorFacadeFixture 
implements SQLStatementVisit
     }
     
     @Override
-    public String getType() {
+    public String getDatabaseType() {
         return "FIXTURE";
     }
 }
diff --git 
a/parser/sql/spi/src/main/java/org/apache/shardingsphere/sql/parser/spi/SQLStatementVisitorFacade.java
 
b/parser/sql/spi/src/main/java/org/apache/shardingsphere/sql/parser/spi/SQLStatementVisitorFacade.java
index c4751383645..cc9ee9ca76c 100644
--- 
a/parser/sql/spi/src/main/java/org/apache/shardingsphere/sql/parser/spi/SQLStatementVisitorFacade.java
+++ 
b/parser/sql/spi/src/main/java/org/apache/shardingsphere/sql/parser/spi/SQLStatementVisitorFacade.java
@@ -17,7 +17,7 @@
 
 package org.apache.shardingsphere.sql.parser.spi;
 
-import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPI;
+import org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPI;
 import 
org.apache.shardingsphere.sql.parser.api.visitor.statement.type.DALStatementVisitor;
 import 
org.apache.shardingsphere.sql.parser.api.visitor.statement.type.DCLStatementVisitor;
 import 
org.apache.shardingsphere.sql.parser.api.visitor.statement.type.DDLStatementVisitor;
@@ -28,7 +28,7 @@ import 
org.apache.shardingsphere.sql.parser.api.visitor.statement.type.TCLStatem
 /**
  * SQL statement visitor facade.
  */
-public interface SQLStatementVisitorFacade extends TypedSPI {
+public interface SQLStatementVisitorFacade extends DatabaseTypedSPI {
     
     /**
      * Get DML visitor class.
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/FormatSQLExecutor.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/FormatSQLExecutor.java
index 9f4b069b844..3677dc07e29 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/FormatSQLExecutor.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/FormatSQLExecutor.java
@@ -18,6 +18,7 @@
 package org.apache.shardingsphere.proxy.backend.handler.distsql.rul.sql;
 
 import 
org.apache.shardingsphere.distsql.parser.statement.rul.sql.FormatStatement;
+import org.apache.shardingsphere.infra.database.spi.DatabaseType;
 import 
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import 
org.apache.shardingsphere.proxy.backend.handler.distsql.rul.executor.ConnectionSessionRequiredRULExecutor;
@@ -41,10 +42,10 @@ public final class FormatSQLExecutor implements 
ConnectionSessionRequiredRULExec
     
     @Override
     public Collection<LocalDataQueryResultRow> getRows(final 
ShardingSphereMetaData metaData, final ConnectionSession connectionSession, 
final FormatStatement sqlStatement) {
-        return Collections.singleton(new 
LocalDataQueryResultRow(formatSQL(sqlStatement.getSql(), 
connectionSession.getProtocolType().getType())));
+        return Collections.singleton(new 
LocalDataQueryResultRow(formatSQL(sqlStatement.getSql(), 
connectionSession.getProtocolType())));
     }
     
-    private Object formatSQL(final String sql, final String databaseType) {
+    private Object formatSQL(final String sql, final DatabaseType 
databaseType) {
         Properties props = new Properties();
         props.setProperty("parameterized", Boolean.FALSE.toString());
         return new SQLFormatEngine(databaseType, new CacheOption(1, 
1L)).format(sql, false, props);
diff --git 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/FormatSQLExecutorTest.java
 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/FormatSQLExecutorTest.java
index de5b276da5e..9da93a3c0f8 100644
--- 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/FormatSQLExecutorTest.java
+++ 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/FormatSQLExecutorTest.java
@@ -18,7 +18,8 @@
 package org.apache.shardingsphere.proxy.backend.handler.distsql.rul.sql;
 
 import 
org.apache.shardingsphere.distsql.parser.statement.rul.sql.FormatStatement;
-import org.apache.shardingsphere.infra.database.mysql.MySQLDatabaseType;
+import org.apache.shardingsphere.infra.database.spi.DatabaseType;
+import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPILoader;
 import org.apache.shardingsphere.mode.manager.ContextManager;
 import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
 import 
org.apache.shardingsphere.proxy.backend.handler.distsql.rul.RULBackendHandler;
@@ -52,7 +53,7 @@ class FormatSQLExecutorTest {
     void assertExecute() throws SQLException {
         String sql = "SELECT * FROM t_order WHERE order_id=1";
         
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-        when(connectionSession.getProtocolType()).thenReturn(new 
MySQLDatabaseType());
+        
when(connectionSession.getProtocolType()).thenReturn(TypedSPILoader.getService(DatabaseType.class,
 "MySQL"));
         RULBackendHandler<FormatStatement> handler = new 
SQLRULBackendHandler<>();
         handler.init(new FormatStatement(sql), connectionSession);
         handler.execute();

Reply via email to