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