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() {