You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2020/10/20 10:53:58 UTC
[shardingsphere] branch master updated: enhance
DataSourceConnectionUrlUtil and add test case (#7858)
This is an automated email from the ASF dual-hosted git repository.
panjuan 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 b59dc89 enhance DataSourceConnectionUrlUtil and add test case (#7858)
b59dc89 is described below
commit b59dc8925b2329f3c7fd256c25ec2f5caa24a481
Author: 岑宇 <lu...@163.com>
AuthorDate: Tue Oct 20 18:53:23 2020 +0800
enhance DataSourceConnectionUrlUtil and add test case (#7858)
* enhance getUrl support Oracle, SQLServer, MariaDB
* add test case for Oracle, SQLServer, MariaDB
* modify code style
---
.../binder/util/DataSourceConnectionUrlUtil.java | 10 ++++++
.../util/DataSourceConnectionUrlUtilTest.java | 42 ++++++++++++++++++++++
2 files changed, 52 insertions(+)
diff --git a/shardingsphere-rdl-parser/shardingsphere-rdl-parser-binder/src/main/java/org/apache/shardingsphere/rdl/parser/binder/util/DataSourceConnectionUrlUtil.java b/shardingsphere-rdl-parser/shardingsphere-rdl-parser-binder/src/main/java/org/apache/shardingsphere/rdl/parser/binder/util/DataSourceConnectionUrlUtil.java
index d13f6db..fa2a576 100644
--- a/shardingsphere-rdl-parser/shardingsphere-rdl-parser-binder/src/main/java/org/apache/shardingsphere/rdl/parser/binder/util/DataSourceConnectionUrlUtil.java
+++ b/shardingsphere-rdl-parser/shardingsphere-rdl-parser-binder/src/main/java/org/apache/shardingsphere/rdl/parser/binder/util/DataSourceConnectionUrlUtil.java
@@ -20,8 +20,12 @@ package org.apache.shardingsphere.rdl.parser.binder.util;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.apache.shardingsphere.infra.database.type.DatabaseType;
+
+import org.apache.shardingsphere.infra.database.type.dialect.MariaDBDatabaseType;
import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
+import org.apache.shardingsphere.infra.database.type.dialect.OracleDatabaseType;
import org.apache.shardingsphere.infra.database.type.dialect.PostgreSQLDatabaseType;
+import org.apache.shardingsphere.infra.database.type.dialect.SQLServerDatabaseType;
import org.apache.shardingsphere.rdl.parser.statement.rdl.DataSourceConnectionSegment;
/**
@@ -43,6 +47,12 @@ public final class DataSourceConnectionUrlUtil {
return getUrl(connectionSegment, new MySQLDatabaseType().getJdbcUrlPrefixes().iterator().next());
case "PostgreSQL":
return getUrl(connectionSegment, new PostgreSQLDatabaseType().getJdbcUrlPrefixes().iterator().next());
+ case "MariaDB":
+ return getUrl(connectionSegment, new MariaDBDatabaseType().getJdbcUrlPrefixes().iterator().next());
+ case "Oracle":
+ return getUrl(connectionSegment, new OracleDatabaseType().getJdbcUrlPrefixes().iterator().next());
+ case "SQLServer":
+ return getUrl(connectionSegment, new SQLServerDatabaseType().getJdbcUrlPrefixes().iterator().next());
default:
throw new UnsupportedOperationException(String.format("ShardingSphere can not get url from %s.", databaseType.getName()));
}
diff --git a/shardingsphere-rdl-parser/shardingsphere-rdl-parser-binder/src/test/java/org/apache/shardingsphere/rdl/parser/binder/util/DataSourceConnectionUrlUtilTest.java b/shardingsphere-rdl-parser/shardingsphere-rdl-parser-binder/src/test/java/org/apache/shardingsphere/rdl/parser/binder/util/DataSourceConnectionUrlUtilTest.java
index ed718e1..33bb938 100644
--- a/shardingsphere-rdl-parser/shardingsphere-rdl-parser-binder/src/test/java/org/apache/shardingsphere/rdl/parser/binder/util/DataSourceConnectionUrlUtilTest.java
+++ b/shardingsphere-rdl-parser/shardingsphere-rdl-parser-binder/src/test/java/org/apache/shardingsphere/rdl/parser/binder/util/DataSourceConnectionUrlUtilTest.java
@@ -17,8 +17,11 @@
package org.apache.shardingsphere.rdl.parser.binder.util;
+import org.apache.shardingsphere.infra.database.type.dialect.MariaDBDatabaseType;
import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
+import org.apache.shardingsphere.infra.database.type.dialect.OracleDatabaseType;
import org.apache.shardingsphere.infra.database.type.dialect.PostgreSQLDatabaseType;
+import org.apache.shardingsphere.infra.database.type.dialect.SQLServerDatabaseType;
import org.apache.shardingsphere.rdl.parser.statement.rdl.DataSourceConnectionSegment;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -55,4 +58,43 @@ public final class DataSourceConnectionUrlUtilTest {
String expected = String.format("jdbc:postgresql://127.0.0.1:3306/test");
assertThat(actual, is(expected));
}
+
+ @Test
+ public void assertMariaDBGetUrl() {
+ DataSourceConnectionSegment segment = new DataSourceConnectionSegment();
+ segment.setHostName("127.0.0.1");
+ segment.setDb("test");
+ segment.setUser("root");
+ segment.setPort("3306");
+ MariaDBDatabaseType databaseType = new MariaDBDatabaseType();
+ String actual = DataSourceConnectionUrlUtil.getUrl(segment, databaseType);
+ String expected = String.format("jdbc:mariadb://127.0.0.1:3306/test");
+ assertThat(actual, is(expected));
+ }
+
+ @Test
+ public void assertOracleGetUrl() {
+ DataSourceConnectionSegment segment = new DataSourceConnectionSegment();
+ segment.setHostName("127.0.0.1");
+ segment.setDb("test");
+ segment.setUser("root");
+ segment.setPort("3306");
+ OracleDatabaseType databaseType = new OracleDatabaseType();
+ String actual = DataSourceConnectionUrlUtil.getUrl(segment, databaseType);
+ String expected = String.format("jdbc:oracle://127.0.0.1:3306/test");
+ assertThat(actual, is(expected));
+ }
+
+ @Test
+ public void assertSQLServerGetUrl() {
+ DataSourceConnectionSegment segment = new DataSourceConnectionSegment();
+ segment.setHostName("127.0.0.1");
+ segment.setDb("test");
+ segment.setUser("root");
+ segment.setPort("3306");
+ SQLServerDatabaseType databaseType = new SQLServerDatabaseType();
+ String actual = DataSourceConnectionUrlUtil.getUrl(segment, databaseType);
+ String expected = String.format("jdbc:microsoft:sqlserver://127.0.0.1:3306/test");
+ assertThat(actual, is(expected));
+ }
}