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();