strongduanmu commented on a change in pull request #7949:
URL: https://github.com/apache/shardingsphere/pull/7949#discussion_r513970555
##########
File path:
shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/ShardingRouteEngineFactory.java
##########
@@ -140,10 +131,16 @@ private static ShardingRouteEngine
getDALRoutingEngine(final ShardingRule shardi
return new ShardingDataSourceGroupBroadcastRoutingEngine();
}
- private static ShardingRouteEngine getDCLRoutingEngine(final
SQLStatementContext sqlStatementContext, final ShardingSphereMetaData metaData)
{
- return isDCLForSingleTable(sqlStatementContext)
- ? new
ShardingTableBroadcastRoutingEngine(metaData.getSchemaMetaData().getConfiguredSchemaMetaData(),
sqlStatementContext)
- : new
ShardingInstanceBroadcastRoutingEngine(metaData.getDataSourcesMetaData());
+ private static ShardingRouteEngine getDCLRoutingEngine(final ShardingRule
shardingRule, final Map<String, Collection<String>>
unconfiguredSchemaMetaDataMap,
+ final
SQLStatementContext sqlStatementContext, final ShardingSphereMetaData metaData)
{
+ if (isDCLForSingleTable(sqlStatementContext)) {
+ Collection<String> tableNames =
sqlStatementContext.getTablesContext().getTableNames();
+ return !shardingRule.tableRuleExists(tableNames)
+ ? new ShardingUnconfiguredTablesRoutingEngine(tableNames,
unconfiguredSchemaMetaDataMap, sqlStatementContext.getSqlStatement())
+ : new
ShardingTableBroadcastRoutingEngine(metaData.getSchemaMetaData().getConfiguredSchemaMetaData(),
sqlStatementContext);
+ } else {
+ return new
ShardingInstanceBroadcastRoutingEngine(metaData.getDataSourcesMetaData());
Review comment:
> ShardingInstanceBroadcastRoutingEngine
@tristaZero If user executes a DCL statement that does not contain tables or
contains multiple tables, `ShardingInstanceBroadcastRoutingEngine` will be used
at this time. For example: `SET PASSWORD FOR'bob'@'%.example.org'
='auth_string'`;
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]