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