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 2022/09/11 06:02:23 UTC
[shardingsphere] branch master updated: [Issue #20529]-Fix connectDescriptorUrlPattern in OracleDataSourceMetaData class (#20701)
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 e9b0b036178 [Issue #20529]-Fix connectDescriptorUrlPattern in OracleDataSourceMetaData class (#20701)
e9b0b036178 is described below
commit e9b0b036178027752cb4b0a76a3d86f36d4afcca
Author: Abhinav Koppula <ab...@gmail.com>
AuthorDate: Sun Sep 11 11:32:16 2022 +0530
[Issue #20529]-Fix connectDescriptorUrlPattern in OracleDataSourceMetaData class (#20701)
* [Issue #20529]-Fix connectDescriptorUrlPattern in OracleDataSourceMetaData class
* [Issue #20529]-Unit test added
---
.../database/metadata/dialect/OracleDataSourceMetaData.java | 2 +-
.../metadata/dialect/OracleDataSourceMetaDataTest.java | 13 ++++++++++++-
2 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/database/metadata/dialect/OracleDataSourceMetaData.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/database/metadata/dialect/OracleDataSourceMetaData.java
index b275cf23fac..1d4195e0e39 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/database/metadata/dialect/OracleDataSourceMetaData.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/database/metadata/dialect/OracleDataSourceMetaData.java
@@ -49,7 +49,7 @@ public final class OracleDataSourceMetaData implements DataSourceMetaData {
private final Pattern thinUrlPattern = Pattern.compile("jdbc:oracle:(thin|oci|kprb):@(//)?([\\w\\-\\.]+):?([0-9]*)[:/]([\\w\\-]+)", Pattern.CASE_INSENSITIVE);
- private final Pattern connectDescriptorUrlPattern = Pattern.compile("jdbc:oracle:(thin|oci|kprb):@[(\\w\\s=)]+HOST\\s*=\\s*([\\w\\-\\.]+).*PORT\\s*=\\s(\\d+).*SERVICE_NAME\\s*=\\s*(\\w+)\\)");
+ private final Pattern connectDescriptorUrlPattern = Pattern.compile("jdbc:oracle:(thin|oci|kprb):@[(\\w\\s=)]+HOST\\s*=\\s*([\\w\\-\\.]+).*PORT\\s*=\\s*(\\d+).*SERVICE_NAME\\s*=\\s*(\\w+)\\)");
public OracleDataSourceMetaData(final String url, final String username) {
List<Matcher> matcherList = Arrays.asList(thinUrlPattern.matcher(url), connectDescriptorUrlPattern.matcher(url));
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/metadata/dialect/OracleDataSourceMetaDataTest.java b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/metadata/dialect/OracleDataSourceMetaDataTest.java
index c380dfa0235..ca4859460f6 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/metadata/dialect/OracleDataSourceMetaDataTest.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/metadata/dialect/OracleDataSourceMetaDataTest.java
@@ -33,7 +33,7 @@ public final class OracleDataSourceMetaDataTest {
assertThat(actual.getCatalog(), is("ds_0"));
assertThat(actual.getSchema(), is("test"));
}
-
+
@Test
public void assertNewConstructorWithDomainPort() {
OracleDataSourceMetaData actual = new OracleDataSourceMetaData("jdbc:oracle:oci:@axxx.frex.cc:9999/ds_0", "test");
@@ -113,4 +113,15 @@ public final class OracleDataSourceMetaDataTest {
public void assertNewConstructorFailure() {
new OracleDataSourceMetaData("jdbc:oracle:xxxxxxxx", "test");
}
+
+ @Test
+ public void assertNewConstructorWithConnectDescriptorUrlWithExtraSpaces() {
+ OracleDataSourceMetaData actual = new OracleDataSourceMetaData("jdbc:oracle:thin:@(DESCRIPTION = description"
+ + "(HOST = 172.16.0.22)(PORT = 1521))(LOAD_BALANCE = yes)(FAILOVER = ON)(CONNECT_DATA =(SERVER = DEDICATED)"
+ + "(SERVICE_NAME = rac)(FAILOVER_MODE=(TYPE = SELECT)(METHOD = BASIC)(RETIRES = 20)(DELAY = 15))))", "test");
+ assertThat(actual.getHostname(), is("172.16.0.22"));
+ assertThat(actual.getPort(), is(1521));
+ assertThat(actual.getCatalog(), is("rac"));
+ assertThat(actual.getSchema(), is("test"));
+ }
}