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 2021/01/12 14:44:29 UTC

[shardingsphere] branch master updated: Support multiple databases for PostgreSQL. (#8906)

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 984e1e7  Support multiple databases for PostgreSQL. (#8906)
984e1e7 is described below

commit 984e1e79bf7f98220ffb4d088f0ba6b08933a11b
Author: nero <us...@163.com>
AuthorDate: Tue Jan 12 22:44:07 2021 +0800

    Support multiple databases for PostgreSQL. (#8906)
    
    * support PostgreSQL multiple databases
    
    * maven parent fix
---
 .../shardingsphere-ha-provider/shardingsphere-ha-mgr/pom.xml     | 2 +-
 .../database/metadata/dialect/PostgreSQLDataSourceMetaData.java  | 2 +-
 .../metadata/dialect/PostgreSQLDataSourceMetaDataTest.java       | 9 +++++++++
 3 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/shardingsphere-features/shardingsphere-ha/shardingsphere-ha-provider/shardingsphere-ha-mgr/pom.xml b/shardingsphere-features/shardingsphere-ha/shardingsphere-ha-provider/shardingsphere-ha-mgr/pom.xml
index 2013f4f..ab05241 100644
--- a/shardingsphere-features/shardingsphere-ha/shardingsphere-ha-provider/shardingsphere-ha-mgr/pom.xml
+++ b/shardingsphere-features/shardingsphere-ha/shardingsphere-ha-provider/shardingsphere-ha-mgr/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.shardingsphere</groupId>
-        <artifactId>shardingsphere-ha</artifactId>
+        <artifactId>shardingsphere-ha-provider</artifactId>
         <version>5.0.0-RC1-SNAPSHOT</version>
     </parent>
     <artifactId>shardingsphere-ha-mgr</artifactId>
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/database/metadata/dialect/PostgreSQLDataSourceMetaData.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/database/metadata/dialect/PostgreSQLDataSourceMetaData.java
index 5df1a35..b684488 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/database/metadata/dialect/PostgreSQLDataSourceMetaData.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/database/metadata/dialect/PostgreSQLDataSourceMetaData.java
@@ -41,7 +41,7 @@ public final class PostgreSQLDataSourceMetaData implements DataSourceMetaData {
     
     private final String schema;
     
-    private final Pattern pattern = Pattern.compile("jdbc:postgresql://([\\w\\-\\.]+):?([0-9]*)/([\\w\\-]+)", Pattern.CASE_INSENSITIVE);
+    private final Pattern pattern = Pattern.compile("jdbc:postgresql://([\\w\\-\\.]+):?([0-9]*),?.*?/([\\w\\-]+)?\\S*", Pattern.CASE_INSENSITIVE);
     
     public PostgreSQLDataSourceMetaData(final String url) {
         Matcher matcher = pattern.matcher(url);
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/metadata/dialect/PostgreSQLDataSourceMetaDataTest.java b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/metadata/dialect/PostgreSQLDataSourceMetaDataTest.java
index f94ac8e..adaf170 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/metadata/dialect/PostgreSQLDataSourceMetaDataTest.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/metadata/dialect/PostgreSQLDataSourceMetaDataTest.java
@@ -43,6 +43,15 @@ public final class PostgreSQLDataSourceMetaDataTest {
         assertThat(actual.getCatalog(), is("ds_0"));
         assertNull(actual.getSchema());
     }
+
+    @Test
+    public void assertMultipleDatabases() {
+        PostgreSQLDataSourceMetaData actual = new PostgreSQLDataSourceMetaData("jdbc:postgresql://127.0.0.1:5432,127.0.0.1:5433,127.0.0.1:5434/ds_0?targetServerType=master");
+        assertThat(actual.getHostName(), is("127.0.0.1"));
+        assertThat(actual.getPort(), is(5432));
+        assertThat(actual.getCatalog(), is("ds_0"));
+        assertNull(actual.getSchema());
+    }
     
     @Test(expected = UnrecognizedDatabaseURLException.class)
     public void assertNewConstructorFailure() {