Pace2Car opened a new issue, #29233:
URL: https://github.com/apache/shardingsphere/issues/29233

   DatabaseRules need to be created when the data source exists, otherwise it 
will be meaningless, and when the node is restarted, existing rules will not be 
reloaded into the context.
   
   The current situation is that some RuleDefinitionCreateUpdater 
implementations have already checked the data source in the checkSQLStatement 
method. such as:
   
   CreateEncryptRuleStatementUpdater
   ```java
       @Override
       public void checkSQLStatement(final ShardingSphereDatabase database, 
final CreateEncryptRuleStatement sqlStatement, final EncryptRuleConfiguration 
currentRuleConfig) {
           if (!sqlStatement.isIfNotExists()) {
               checkDuplicateRuleNames(database.getName(), sqlStatement, 
currentRuleConfig);
           }
           checkColumnNames(sqlStatement);
           checkAlgorithmTypes(sqlStatement);
           checkToBeCreatedEncryptors(sqlStatement);
           checkDataSources(database);
       }
   
       private void checkDataSources(final ShardingSphereDatabase database) {
           
ShardingSpherePreconditions.checkState(!database.getResourceMetaData().getStorageUnits().isEmpty(),
 () -> new EmptyStorageUnitException(database.getName()));
       }
   ```
   
   I am going to extract this check into the RuleDefinitionBackendHandler as a 
public check for all statements that create rules.
   
   Task List:
   
   - [ ] RuleDefinitionBackendHandler
   - [ ] NewRuleDefinitionBackendHandler
   - [ ] related unit tests
   - [ ] E2E


-- 
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.

To unsubscribe, e-mail: 
notifications-unsubscr...@shardingsphere.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to