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 8f15bee  Modify the judgment conditions of 
`BroadcastDatabaseBackendHandler.java` and `UnicastDatabaseBackendHandler.java` 
(#12098)
8f15bee is described below

commit 8f15bee1b425f7057f3a54ebcb84959efbaa7a58
Author: lanchengx <[email protected]>
AuthorDate: Mon Aug 30 02:26:41 2021 -0500

    Modify the judgment conditions of `BroadcastDatabaseBackendHandler.java` 
and `UnicastDatabaseBackendHandler.java` (#12098)
    
    * Modify the schema judgment condition, there may be an empty schema.
    
    * Modify the schema judgment condition, there may be an empty schema.
---
 .../shardingsphere/infra/metadata/ShardingSphereMetaData.java    | 9 +++++++++
 .../backend/text/data/impl/BroadcastDatabaseBackendHandler.java  | 7 +++----
 .../backend/text/data/impl/UnicastDatabaseBackendHandler.java    | 4 ++--
 .../text/data/impl/BroadcastDatabaseBackendHandlerTest.java      | 2 +-
 .../text/data/impl/UnicastDatabaseBackendHandlerTest.java        | 2 +-
 5 files changed, 16 insertions(+), 8 deletions(-)

diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaData.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaData.java
index 6683ea0..8a02e0b 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaData.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaData.java
@@ -46,4 +46,13 @@ public final class ShardingSphereMetaData {
     public boolean isComplete() {
         return !ruleMetaData.getRules().isEmpty() && 
!resource.getDataSources().isEmpty();
     }
+    
+    /**
+     * Determine whether there is a data source.
+     *
+     * @return has datasource or not
+     */
+    public boolean hasDataSource() {
+        return !resource.getDataSources().isEmpty();
+    }
 }
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/data/impl/BroadcastDatabaseBackendHandler.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/data/impl/BroadcastDatabaseBackendHandler.java
index da8b7c0..1221cf6 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/data/impl/BroadcastDatabaseBackendHandler.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/data/impl/BroadcastDatabaseBackendHandler.java
@@ -22,7 +22,6 @@ import 
org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
 import 
org.apache.shardingsphere.proxy.backend.communication.DatabaseCommunicationEngineFactory;
 import 
org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
 import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import 
org.apache.shardingsphere.proxy.backend.exception.RuleNotExistedException;
 import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
 import 
org.apache.shardingsphere.proxy.backend.response.header.update.UpdateResponseHeader;
 import 
org.apache.shardingsphere.proxy.backend.text.data.DatabaseBackendHandler;
@@ -48,10 +47,10 @@ public final class BroadcastDatabaseBackendHandler 
implements DatabaseBackendHan
         String originalSchema = backendConnection.getSchemaName();
         try {
             for (String each : ProxyContext.getInstance().getAllSchemaNames()) 
{
-                backendConnection.setCurrentSchema(each);
-                if 
(!ProxyContext.getInstance().getMetaData(each).isComplete()) {
-                    throw new RuleNotExistedException();
+                if 
(!ProxyContext.getInstance().getMetaData(each).hasDataSource()) {
+                    continue;
                 }
+                backendConnection.setCurrentSchema(each);
                 
databaseCommunicationEngineFactory.newTextProtocolInstance(sqlStatementContext, 
sql, backendConnection).execute();
             }
         } finally {
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/data/impl/UnicastDatabaseBackendHandler.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/data/impl/UnicastDatabaseBackendHandler.java
index 68307c5..cb21508 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/data/impl/UnicastDatabaseBackendHandler.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/data/impl/UnicastDatabaseBackendHandler.java
@@ -52,7 +52,7 @@ public final class UnicastDatabaseBackendHandler implements 
DatabaseBackendHandl
     public ResponseHeader execute() throws SQLException {
         String originSchema = backendConnection.getSchemaName();
         String schemaName = null == originSchema ? getFirstSchemaName() : 
originSchema;
-        if (!ProxyContext.getInstance().getMetaData(schemaName).isComplete()) {
+        if 
(!ProxyContext.getInstance().getMetaData(schemaName).hasDataSource()) {
             throw new RuleNotExistedException();
         }
         try {
@@ -69,7 +69,7 @@ public final class UnicastDatabaseBackendHandler implements 
DatabaseBackendHandl
         if (schemaNames.isEmpty()) {
             throw new NoDatabaseSelectedException();
         }
-        Optional<String> result = schemaNames.stream().filter(each -> 
ProxyContext.getInstance().getMetaData(each).isComplete()).findFirst();
+        Optional<String> result = schemaNames.stream().filter(each -> 
ProxyContext.getInstance().getMetaData(each).hasDataSource()).findFirst();
         if (!result.isPresent()) {
             throw new RuleNotExistedException();
         }
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/data/impl/BroadcastDatabaseBackendHandlerTest.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/data/impl/BroadcastDatabaseBackendHandlerTest.java
index 0f271cb..79b23a0 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/data/impl/BroadcastDatabaseBackendHandlerTest.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/data/impl/BroadcastDatabaseBackendHandlerTest.java
@@ -102,7 +102,7 @@ public final class BroadcastDatabaseBackendHandlerTest {
         Map<String, ShardingSphereMetaData> result = new HashMap<>(10, 1);
         for (int i = 0; i < 10; i++) {
             ShardingSphereMetaData metaData = 
mock(ShardingSphereMetaData.class, RETURNS_DEEP_STUBS);
-            when(metaData.isComplete()).thenReturn(true);
+            when(metaData.hasDataSource()).thenReturn(true);
             when(metaData.getResource().getDatabaseType()).thenReturn(new 
H2DatabaseType());
             result.put(String.format(SCHEMA_PATTERN, i), metaData);
         }
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/data/impl/UnicastDatabaseBackendHandlerTest.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/data/impl/UnicastDatabaseBackendHandlerTest.java
index 6b26607..feb53cc 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/data/impl/UnicastDatabaseBackendHandlerTest.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/data/impl/UnicastDatabaseBackendHandlerTest.java
@@ -94,7 +94,7 @@ public final class UnicastDatabaseBackendHandlerTest {
         Map<String, ShardingSphereMetaData> result = new HashMap<>(10, 1);
         for (int i = 0; i < 10; i++) {
             ShardingSphereMetaData metaData = 
mock(ShardingSphereMetaData.class, RETURNS_DEEP_STUBS);
-            when(metaData.isComplete()).thenReturn(true);
+            when(metaData.hasDataSource()).thenReturn(true);
             when(metaData.getResource().getDatabaseType()).thenReturn(new 
H2DatabaseType());
             result.put(String.format(SCHEMA_PATTERN, i), metaData);
         }

Reply via email to