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 <[email protected]>
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"));
+ }
}