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 2021/04/13 09:30:09 UTC

[shardingsphere] branch master updated: Refactor drop resource (#10066)

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 ca57db5  Refactor drop resource (#10066)
ca57db5 is described below

commit ca57db542f308725697413ab72e22d67313f4f44
Author: Haoran Meng <me...@gmail.com>
AuthorDate: Tue Apr 13 17:29:45 2021 +0800

    Refactor drop resource (#10066)
---
 .../src/main/antlr4/imports/RDLStatement.g4                  |  2 +-
 .../distsql/parser/api/DistSQLStatementParserEngineTest.java | 12 ++++++++++++
 .../listener/metadata/DataSourceChangedListener.java         | 11 ++++++++---
 3 files changed, 21 insertions(+), 4 deletions(-)

diff --git a/shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/antlr4/imports/RDLStatement.g4 b/shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/antlr4/imports/RDLStatement.g4
index 0f928e2..8838acf 100644
--- a/shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/antlr4/imports/RDLStatement.g4
+++ b/shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/antlr4/imports/RDLStatement.g4
@@ -24,7 +24,7 @@ addResource
     ;
 
 dropResource
-    : DROP RESOURCE LP IDENTIFIER (COMMA IDENTIFIER)* RP
+    : DROP RESOURCE IDENTIFIER (COMMA IDENTIFIER)*
     ;
 
 dataSource
diff --git a/shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/test/java/org/apache/shardingsphere/distsql/parser/api/DistSQLStatementParserEngineTest.java b/shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/test/java/org/apache/shardingsphere/distsql/parser/api/DistSQLStatementParserEngineTest.java
index ff663a3..13b7e15 100644
--- a/shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/test/java/org/apache/shardingsphere/distsql/parser/api/DistSQLStatementParserEngineTest.java
+++ b/shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/test/java/org/apache/shardingsphere/distsql/parser/api/DistSQLStatementParserEngineTest.java
@@ -19,10 +19,12 @@ package org.apache.shardingsphere.distsql.parser.api;
 
 import org.apache.shardingsphere.distsql.parser.segment.DataSourceSegment;
 import org.apache.shardingsphere.distsql.parser.statement.rdl.create.impl.AddResourceStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rdl.drop.impl.DropResourceStatement;
 import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
 import org.junit.Test;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 import static org.hamcrest.CoreMatchers.is;
@@ -38,6 +40,8 @@ public final class DistSQLStatementParserEngineTest {
     private static final String RDL_ADD_RESOURCE_MULTIPLE = "ADD RESOURCE ds_0(HOST=127.0.0.1,PORT=3306,DB=test0,USER=ROOT,PASSWORD=123456),"
             + "ds_1(HOST=127.0.0.1,PORT=3306,DB=test1,USER=ROOT,PASSWORD=123456);";
     
+    private static final String RDL_DROP_RESOURCE = "DROP RESOURCE ds_0,ds_1";
+    
     private final DistSQLStatementParserEngine engine = new DistSQLStatementParserEngine();
     
     @Test
@@ -88,4 +92,12 @@ public final class DistSQLStatementParserEngineTest {
         assertThat(dataSourceSegment.getUser(), is("ROOT"));
         assertThat(dataSourceSegment.getPassword(), is("123456"));
     }
+    
+    @Test
+    public void assertParseDropResource() {
+        SQLStatement sqlStatement = engine.parse(RDL_DROP_RESOURCE);
+        assertTrue(sqlStatement instanceof DropResourceStatement);
+        assertThat(((DropResourceStatement) sqlStatement).getResourceNames().size(), is(2));
+        assertTrue(((DropResourceStatement) sqlStatement).getResourceNames().containsAll(Arrays.asList("ds_0", "ds_1")));
+    }
 }
diff --git a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/DataSourceChangedListener.java b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/DataSourceChangedListener.java
index 9d3a0c3..8416879 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/DataSourceChangedListener.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/DataSourceChangedListener.java
@@ -17,7 +17,6 @@
 
 package org.apache.shardingsphere.governance.core.registry.listener.metadata;
 
-import com.google.common.base.Preconditions;
 import com.google.common.base.Strings;
 import org.apache.shardingsphere.governance.core.event.listener.PostGovernanceRepositoryEventListener;
 import org.apache.shardingsphere.governance.core.event.model.GovernanceEvent;
@@ -30,8 +29,10 @@ import org.apache.shardingsphere.infra.yaml.engine.YamlEngine;
 import org.apache.shardingsphere.infra.yaml.swapper.YamlDataSourceConfigurationSwapper;
 
 import java.util.Collection;
+import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.Map.Entry;
+import java.util.Objects;
 import java.util.Optional;
 import java.util.stream.Collectors;
 
@@ -63,9 +64,13 @@ public final class DataSourceChangedListener extends PostGovernanceRepositoryEve
     
     private DataSourceChangedEvent createDataSourceChangedEvent(final String schemaName, final DataChangedEvent event) {
         YamlDataSourceConfigurationWrap result = YamlEngine.unmarshal(event.getValue(), YamlDataSourceConfigurationWrap.class);
-        Preconditions.checkState(null != result && !result.getDataSources().isEmpty(), "No available data sources to load for governance.");
-        return new DataSourceChangedEvent(schemaName, result.getDataSources().entrySet().stream()
+        return checkDataSourceEvent(result) ? new DataSourceChangedEvent(schemaName, new HashMap<>())
+                : new DataSourceChangedEvent(schemaName, result.getDataSources().entrySet().stream()
                 .collect(Collectors.toMap(Entry::getKey, entry -> new YamlDataSourceConfigurationSwapper()
                         .swapToDataSourceConfiguration(entry.getValue()), (oldValue, currentValue) -> oldValue, LinkedHashMap::new)));
     }
+    
+    private boolean checkDataSourceEvent(final YamlDataSourceConfigurationWrap warp) {
+        return Objects.isNull(warp) || Objects.isNull(warp.getDataSources()) || warp.getDataSources().isEmpty();
+    }
 }