sandynz commented on a change in pull request #13540:
URL: https://github.com/apache/shardingsphere/pull/13540#discussion_r746522758
##########
File path:
shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/database/metadata/dialect/H2DataSourceMetaData.java
##########
@@ -56,9 +60,15 @@ public H2DataSourceMetaData(final String url) {
String hostNameFromMatcher = matcher.group("hostName");
boolean setPort = null != portFromMatcher &&
!portFromMatcher.isEmpty();
String name = null == nameFromMatcher ? fileNameFromMatcher :
nameFromMatcher;
- hostName = null == hostNameFromMatcher ? "" : hostNameFromMatcher;
+ hostName = null == hostNameFromMatcher ? DEFAULT_HOST_NAME :
hostNameFromMatcher;
port = setPort ? Integer.parseInt(portFromMatcher) : DEFAULT_PORT;
catalog = null == catalogFromMatcher ? name : catalogFromMatcher;
schema = null;
}
+
+ @Override
+ public boolean isInSameDatabaseInstance(final DataSourceMetaData
dataSourceMetaData) {
+ return DEFAULT_HOST_NAME.equals(hostName) && DEFAULT_PORT == port ?
Objects.equals(schema, dataSourceMetaData.getSchema())
+ :
MemorizedDataSourceMetaData.super.isInSameDatabaseInstance(dataSourceMetaData);
Review comment:
Is `MemorizedDataSourceMetaData` still needed?
##########
File path:
shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/resource/DataSourcesMetaData.java
##########
@@ -59,12 +57,7 @@ public DataSourcesMetaData(final DatabaseType databaseType,
final Map<String, Da
}
private boolean isExisted(final String dataSourceName, final
Collection<String> existedDataSourceNames) {
- return existedDataSourceNames.stream().anyMatch(each ->
isInSameDatabaseInstance(dataSourceMetaDataMap.get(dataSourceName),
dataSourceMetaDataMap.get(each)));
- }
-
- private boolean isInSameDatabaseInstance(final DataSourceMetaData sample,
final DataSourceMetaData target) {
- return sample instanceof MemorizedDataSourceMetaData
- ? Objects.equals(target.getSchema(), sample.getSchema()) :
target.getHostName().equals(sample.getHostName()) && target.getPort() ==
sample.getPort();
+ return existedDataSourceNames.stream().anyMatch(each ->
dataSourceMetaDataMap.get(dataSourceName).isInSameDatabaseInstance(dataSourceMetaDataMap.get(each)));
Review comment:
`dataSourceMetaDataMap.get(dataSourceName)` could be extracted for
execution only once.
##########
File path:
shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/database/metadata/dialect/H2DataSourceMetaData.java
##########
@@ -56,9 +60,15 @@ public H2DataSourceMetaData(final String url) {
String hostNameFromMatcher = matcher.group("hostName");
boolean setPort = null != portFromMatcher &&
!portFromMatcher.isEmpty();
String name = null == nameFromMatcher ? fileNameFromMatcher :
nameFromMatcher;
- hostName = null == hostNameFromMatcher ? "" : hostNameFromMatcher;
+ hostName = null == hostNameFromMatcher ? DEFAULT_HOST_NAME :
hostNameFromMatcher;
port = setPort ? Integer.parseInt(portFromMatcher) : DEFAULT_PORT;
catalog = null == catalogFromMatcher ? name : catalogFromMatcher;
schema = null;
}
+
+ @Override
+ public boolean isInSameDatabaseInstance(final DataSourceMetaData
dataSourceMetaData) {
+ return DEFAULT_HOST_NAME.equals(hostName) && DEFAULT_PORT == port ?
Objects.equals(schema, dataSourceMetaData.getSchema())
Review comment:
If current H2 use memory or file mode, is it checked for
`dataSourceMetaData`?
--
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: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]