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);
}