You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2025/06/08 01:44:04 UTC
(shardingsphere) branch master updated: Refactor route deciders to use DALStatement instead of SQLStatement (#35639)
This is an automated email from the ASF dual-hosted git repository.
zhangliang 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 173fd0555b2 Refactor route deciders to use DALStatement instead of SQLStatement (#35639)
173fd0555b2 is described below
commit 173fd0555b24cb0cad1b9714f5f2a80251a94499
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Sun Jun 8 09:43:57 2025 +0800
Refactor route deciders to use DALStatement instead of SQLStatement (#35639)
---
.../engine/tableless/DialectTablelessBroadcastRouteDecider.java | 6 +++---
.../infra/route/engine/tableless/TablelessRouteEngineFactory.java | 4 ++--
.../route/engine/tableless/TablelessRouteEngineFactoryTest.java | 3 +--
.../infra/route/mysql/MySQLTablelessBroadcastRouteDecider.java | 6 +++---
4 files changed, 9 insertions(+), 10 deletions(-)
diff --git a/infra/route/core/src/main/java/org/apache/shardingsphere/infra/route/engine/tableless/DialectTablelessBroadcastRouteDecider.java b/infra/route/core/src/main/java/org/apache/shardingsphere/infra/route/engine/tableless/DialectTablelessBroadcastRouteDecider.java
index 03c5c9b30a9..f67f9abb1a1 100644
--- a/infra/route/core/src/main/java/org/apache/shardingsphere/infra/route/engine/tableless/DialectTablelessBroadcastRouteDecider.java
+++ b/infra/route/core/src/main/java/org/apache/shardingsphere/infra/route/engine/tableless/DialectTablelessBroadcastRouteDecider.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.infra.route.engine.tableless;
import org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPI;
import org.apache.shardingsphere.infra.spi.annotation.SingletonSPI;
-import org.apache.shardingsphere.sql.parser.statement.core.statement.SQLStatement;
+import org.apache.shardingsphere.sql.parser.statement.core.statement.dal.DALStatement;
/**
* Dialect tableless broadcast route decider.
@@ -33,7 +33,7 @@ public interface DialectTablelessBroadcastRouteDecider extends DatabaseTypedSPI
* @param sqlStatement SQL statement
* @return broadcast route or not
*/
- boolean isDataSourceBroadcastRoute(SQLStatement sqlStatement);
+ boolean isDataSourceBroadcastRoute(DALStatement sqlStatement);
/**
* Whether instance broadcast route.
@@ -41,5 +41,5 @@ public interface DialectTablelessBroadcastRouteDecider extends DatabaseTypedSPI
* @param sqlStatement SQL statement
* @return broadcast route or not
*/
- boolean isInstanceBroadcastRoute(SQLStatement sqlStatement);
+ boolean isInstanceBroadcastRoute(DALStatement sqlStatement);
}
diff --git a/infra/route/core/src/main/java/org/apache/shardingsphere/infra/route/engine/tableless/TablelessRouteEngineFactory.java b/infra/route/core/src/main/java/org/apache/shardingsphere/infra/route/engine/tableless/TablelessRouteEngineFactory.java
index 48bfff90a7f..cd85a1ea12d 100644
--- a/infra/route/core/src/main/java/org/apache/shardingsphere/infra/route/engine/tableless/TablelessRouteEngineFactory.java
+++ b/infra/route/core/src/main/java/org/apache/shardingsphere/infra/route/engine/tableless/TablelessRouteEngineFactory.java
@@ -71,7 +71,7 @@ public final class TablelessRouteEngineFactory {
SQLStatement sqlStatement = queryContext.getSqlStatementContext().getSqlStatement();
// TODO remove this logic when proxy and jdbc support all dal statement @duanzhengqiang
if (sqlStatement instanceof DALStatement) {
- return getDALRouteEngine(sqlStatement, database, queryContext.getSqlStatementContext().getDatabaseType());
+ return getDALRouteEngine((DALStatement) sqlStatement, database, queryContext.getSqlStatementContext().getDatabaseType());
}
// TODO Support more TCL statements by transaction module, then remove this.
if (sqlStatement instanceof TCLStatement) {
@@ -86,7 +86,7 @@ public final class TablelessRouteEngineFactory {
return new TablelessIgnoreRouteEngine();
}
- private static TablelessRouteEngine getDALRouteEngine(final SQLStatement sqlStatement, final ShardingSphereDatabase database, final DatabaseType databaseType) {
+ private static TablelessRouteEngine getDALRouteEngine(final DALStatement sqlStatement, final ShardingSphereDatabase database, final DatabaseType databaseType) {
Optional<DialectTablelessBroadcastRouteDecider> dialectTablelessBroadcastRouteDecider = DatabaseTypedSPILoader.findService(DialectTablelessBroadcastRouteDecider.class, databaseType);
if (sqlStatement instanceof ShowTablesStatement || sqlStatement instanceof ShowTableStatusStatement || sqlStatement instanceof SetStatement
|| sqlStatement instanceof ResetParameterStatement || sqlStatement instanceof ShowDatabasesStatement || sqlStatement instanceof LoadStatement) {
diff --git a/infra/route/core/src/test/java/org/apache/shardingsphere/infra/route/engine/tableless/TablelessRouteEngineFactoryTest.java b/infra/route/core/src/test/java/org/apache/shardingsphere/infra/route/engine/tableless/TablelessRouteEngineFactoryTest.java
index cd02671f5d0..bf703e07f45 100644
--- a/infra/route/core/src/test/java/org/apache/shardingsphere/infra/route/engine/tableless/TablelessRouteEngineFactoryTest.java
+++ b/infra/route/core/src/test/java/org/apache/shardingsphere/infra/route/engine/tableless/TablelessRouteEngineFactoryTest.java
@@ -33,7 +33,6 @@ import org.apache.shardingsphere.infra.route.engine.tableless.type.unicast.Table
import org.apache.shardingsphere.infra.session.connection.ConnectionContext;
import org.apache.shardingsphere.infra.session.query.QueryContext;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
-import org.apache.shardingsphere.sql.parser.statement.core.statement.SQLStatement;
import org.apache.shardingsphere.sql.parser.statement.core.statement.dal.DALStatement;
import org.apache.shardingsphere.sql.parser.statement.core.statement.dal.SetStatement;
import org.apache.shardingsphere.sql.parser.statement.core.statement.dal.ShowDatabasesStatement;
@@ -120,7 +119,7 @@ class TablelessRouteEngineFactoryTest {
@Test
void assertNewInstanceForInstanceBroadcastRoute() {
- SQLStatement sqlStatement = mock(DALStatement.class);
+ DALStatement sqlStatement = mock(DALStatement.class);
DialectTablelessBroadcastRouteDecider dialectTablelessBroadcastRouteDecider = mock(DialectTablelessBroadcastRouteDecider.class);
when(dialectTablelessBroadcastRouteDecider.isInstanceBroadcastRoute(sqlStatement)).thenReturn(true);
when(DatabaseTypedSPILoader.findService(DialectTablelessBroadcastRouteDecider.class, databaseType)).thenReturn(Optional.of(dialectTablelessBroadcastRouteDecider));
diff --git a/infra/route/dialect/mysql/src/main/java/org/apache/shardingsphere/infra/route/mysql/MySQLTablelessBroadcastRouteDecider.java b/infra/route/dialect/mysql/src/main/java/org/apache/shardingsphere/infra/route/mysql/MySQLTablelessBroadcastRouteDecider.java
index 6e4ed7eb9b1..dbccd93ed6f 100644
--- a/infra/route/dialect/mysql/src/main/java/org/apache/shardingsphere/infra/route/mysql/MySQLTablelessBroadcastRouteDecider.java
+++ b/infra/route/dialect/mysql/src/main/java/org/apache/shardingsphere/infra/route/mysql/MySQLTablelessBroadcastRouteDecider.java
@@ -18,9 +18,9 @@
package org.apache.shardingsphere.infra.route.mysql;
import org.apache.shardingsphere.infra.route.engine.tableless.DialectTablelessBroadcastRouteDecider;
-import org.apache.shardingsphere.sql.parser.statement.core.statement.SQLStatement;
import org.apache.shardingsphere.sql.parser.statement.core.statement.dal.AlterResourceGroupStatement;
import org.apache.shardingsphere.sql.parser.statement.core.statement.dal.CreateResourceGroupStatement;
+import org.apache.shardingsphere.sql.parser.statement.core.statement.dal.DALStatement;
import org.apache.shardingsphere.sql.parser.statement.core.statement.dal.DropResourceGroupStatement;
import org.apache.shardingsphere.sql.parser.statement.core.statement.dal.SetResourceGroupStatement;
@@ -30,12 +30,12 @@ import org.apache.shardingsphere.sql.parser.statement.core.statement.dal.SetReso
public final class MySQLTablelessBroadcastRouteDecider implements DialectTablelessBroadcastRouteDecider {
@Override
- public boolean isDataSourceBroadcastRoute(final SQLStatement sqlStatement) {
+ public boolean isDataSourceBroadcastRoute(final DALStatement sqlStatement) {
return false;
}
@Override
- public boolean isInstanceBroadcastRoute(final SQLStatement sqlStatement) {
+ public boolean isInstanceBroadcastRoute(final DALStatement sqlStatement) {
return sqlStatement instanceof CreateResourceGroupStatement || sqlStatement instanceof AlterResourceGroupStatement || sqlStatement instanceof DropResourceGroupStatement
|| sqlStatement instanceof SetResourceGroupStatement;
}