This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang 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 c5308faf17e Revert "Refactor BroadcastDatabaseBroadcastRouteEngine
(#33508)" (#33526)
c5308faf17e is described below
commit c5308faf17eaf68405d5b2b6cf2dd748a525a27e
Author: ZhangCheng <[email protected]>
AuthorDate: Mon Nov 4 12:32:44 2024 +0800
Revert "Refactor BroadcastDatabaseBroadcastRouteEngine (#33508)" (#33526)
This reverts commit 2b7ded0ca497fc8ca12cc3bcacc98399e2e27e8e.
---
.../broadcast/route/BroadcastSQLRouter.java | 30 ++++++++++++----------
.../BroadcastDatabaseBroadcastRouteEngine.java | 5 ++--
2 files changed, 19 insertions(+), 16 deletions(-)
diff --git
a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/route/BroadcastSQLRouter.java
b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/route/BroadcastSQLRouter.java
index bb902965b69..3922375cda0 100644
---
a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/route/BroadcastSQLRouter.java
+++
b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/route/BroadcastSQLRouter.java
@@ -19,8 +19,6 @@ package org.apache.shardingsphere.broadcast.route;
import org.apache.shardingsphere.broadcast.constant.BroadcastOrder;
import
org.apache.shardingsphere.broadcast.route.engine.BroadcastRouteEngineFactory;
-import
org.apache.shardingsphere.broadcast.route.engine.type.broadcast.BroadcastDatabaseBroadcastRouteEngine;
-import
org.apache.shardingsphere.broadcast.route.engine.type.broadcast.BroadcastInstanceBroadcastRouteEngine;
import org.apache.shardingsphere.broadcast.rule.BroadcastRule;
import org.apache.shardingsphere.infra.annotation.HighFrequencyInvocation;
import
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
@@ -83,21 +81,21 @@ public final class BroadcastSQLRouter implements
EntranceSQLRouter<BroadcastRule
} else if (sqlStatement instanceof DDLStatement) {
decorateRouteContextWhenDDLStatement(routeContext, queryContext,
database, rule);
} else if (sqlStatement instanceof DALStatement &&
isResourceGroupStatement(sqlStatement)) {
- doInstanceBroadcastRoute(routeContext, database, rule);
+ routeToAllDatabaseInstances(routeContext, database, rule);
} else if (sqlStatement instanceof DCLStatement &&
!isDCLForSingleTable(queryContext.getSqlStatementContext())) {
- doInstanceBroadcastRoute(routeContext, database, rule);
+ routeToAllDatabaseInstances(routeContext, database, rule);
}
}
private void decorateRouteContextWhenTCLStatement(final RouteContext
routeContext, final BroadcastRule rule) {
- doDatabaseBroadcastRoute(routeContext, rule);
+ routeToAllDatabases(routeContext, rule);
}
private void decorateRouteContextWhenDDLStatement(final RouteContext
routeContext, final QueryContext queryContext, final ShardingSphereDatabase
database, final BroadcastRule rule) {
SQLStatementContext sqlStatementContext =
queryContext.getSqlStatementContext();
if (sqlStatementContext instanceof CursorAvailable) {
if (sqlStatementContext instanceof CloseStatementContext &&
((CloseStatementContext) sqlStatementContext).getSqlStatement().isCloseAll()) {
- doDatabaseBroadcastRoute(routeContext, rule);
+ routeToAllDatabases(routeContext, rule);
}
return;
}
@@ -108,17 +106,17 @@ public final class BroadcastSQLRouter implements
EntranceSQLRouter<BroadcastRule
boolean functionStatement = sqlStatement instanceof
CreateFunctionStatement || sqlStatement instanceof AlterFunctionStatement ||
sqlStatement instanceof DropFunctionStatement;
boolean procedureStatement = sqlStatement instanceof
CreateProcedureStatement || sqlStatement instanceof AlterProcedureStatement ||
sqlStatement instanceof DropProcedureStatement;
if (functionStatement || procedureStatement) {
- doDatabaseBroadcastRoute(routeContext, rule);
+ routeToAllDatabases(routeContext, rule);
return;
}
// TODO BEGIN extract db route logic to common database router, eg:
DCL in instance route @duanzhengqiang
if (sqlStatement instanceof CreateTablespaceStatement || sqlStatement
instanceof AlterTablespaceStatement || sqlStatement instanceof
DropTablespaceStatement) {
- doInstanceBroadcastRoute(routeContext, database, rule);
+ routeToAllDatabaseInstances(routeContext, database, rule);
}
// TODO END extract db route logic to common database router, eg: DCL
in instance route
Collection<String> tableNames = sqlStatementContext instanceof
TableAvailable ? getTableNames((TableAvailable) sqlStatementContext) :
Collections.emptyList();
if (rule.isAllBroadcastTables(tableNames)) {
- doInstanceBroadcastRoute(routeContext, database, rule);
+ routeToAllDatabaseInstances(routeContext, database, rule);
}
}
@@ -154,14 +152,20 @@ public final class BroadcastSQLRouter implements
EntranceSQLRouter<BroadcastRule
return false;
}
- private void doDatabaseBroadcastRoute(final RouteContext routeContext,
final BroadcastRule rule) {
+ private void routeToAllDatabases(final RouteContext routeContext, final
BroadcastRule rule) {
routeContext.getRouteUnits().clear();
- routeContext.getRouteUnits().addAll(new
BroadcastDatabaseBroadcastRouteEngine().route(routeContext,
rule).getRouteUnits());
+ for (String each : rule.getDataSourceNames()) {
+ routeContext.getRouteUnits().add(new RouteUnit(new
RouteMapper(each, each), Collections.emptyList()));
+ }
}
- private void doInstanceBroadcastRoute(final RouteContext routeContext,
final ShardingSphereDatabase database, final BroadcastRule rule) {
+ private void routeToAllDatabaseInstances(final RouteContext routeContext,
final ShardingSphereDatabase database, final BroadcastRule rule) {
routeContext.getRouteUnits().clear();
- routeContext.getRouteUnits().addAll(new
BroadcastInstanceBroadcastRouteEngine(database.getResourceMetaData()).route(routeContext,
rule).getRouteUnits());
+ for (String each : rule.getDataSourceNames()) {
+ if
(database.getResourceMetaData().getAllInstanceDataSourceNames().contains(each))
{
+ routeContext.getRouteUnits().add(new RouteUnit(new
RouteMapper(each, each), Collections.emptyList()));
+ }
+ }
}
@Override
diff --git
a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/route/engine/type/broadcast/BroadcastDatabaseBroadcastRouteEngine.java
b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/route/engine/type/broadcast/BroadcastDatabaseBroadcastRouteEngine.java
index 5c521253969..9269f64e419 100644
---
a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/route/engine/type/broadcast/BroadcastDatabaseBroadcastRouteEngine.java
+++
b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/route/engine/type/broadcast/BroadcastDatabaseBroadcastRouteEngine.java
@@ -34,10 +34,9 @@ public final class BroadcastDatabaseBroadcastRouteEngine
implements BroadcastRou
@Override
public RouteContext route(final RouteContext routeContext, final
BroadcastRule rule) {
- RouteContext result = new RouteContext();
for (String each : rule.getDataSourceNames()) {
- result.getRouteUnits().add(new RouteUnit(new RouteMapper(each,
each), Collections.emptyList()));
+ routeContext.getRouteUnits().add(new RouteUnit(new
RouteMapper(each, each), Collections.emptyList()));
}
- return result;
+ return routeContext;
}
}