You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by sh...@apache.org on 2018/06/20 11:32:46 UTC

[kylin] 01/02: satisfy multi-path of domain for kylin connection

This is an automated email from the ASF dual-hosted git repository.

shaofengshi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kylin.git

commit ef28440a8270076393f3c695cad7b8fd66c5a9f6
Author: wangshengli <vi...@alibaba-inc.com>
AuthorDate: Thu Dec 14 20:19:31 2017 +0800

    satisfy multi-path of domain for kylin connection
---
 .../org/apache/kylin/jdbc/KylinConnection.java     |  8 ++++----
 .../java/org/apache/kylin/jdbc/DriverTest.java     | 23 ++++++++++++++++++++++
 2 files changed, 27 insertions(+), 4 deletions(-)

diff --git a/jdbc/src/main/java/org/apache/kylin/jdbc/KylinConnection.java b/jdbc/src/main/java/org/apache/kylin/jdbc/KylinConnection.java
index 6fb228a..6c7fae4 100644
--- a/jdbc/src/main/java/org/apache/kylin/jdbc/KylinConnection.java
+++ b/jdbc/src/main/java/org/apache/kylin/jdbc/KylinConnection.java
@@ -52,12 +52,12 @@ public class KylinConnection extends AvaticaConnection {
 
         String odbcUrl = url;
         odbcUrl = odbcUrl.replaceAll((Driver.CONNECT_STRING_PREFIX + "[[A-Za-z0-9]*=[A-Za-z0-9]*;]*//").toString(), "");
-        
+
         String[] temps = odbcUrl.split("/");
-        assert temps.length == 2;
+        assert temps.length >= 2;
 
-        this.baseUrl = temps[0];
-        this.project = temps[1];
+        this.project = temps[temps.length - 1];
+        this.baseUrl = odbcUrl.substring(0, odbcUrl.indexOf(project) - 1);
 
         logger.debug("Kylin base url " + this.baseUrl + ", project name " + this.project);
 
diff --git a/jdbc/src/test/java/org/apache/kylin/jdbc/DriverTest.java b/jdbc/src/test/java/org/apache/kylin/jdbc/DriverTest.java
index 70978d7..9b66f4d 100644
--- a/jdbc/src/test/java/org/apache/kylin/jdbc/DriverTest.java
+++ b/jdbc/src/test/java/org/apache/kylin/jdbc/DriverTest.java
@@ -105,6 +105,29 @@ public class DriverTest {
     }
 
     @Test
+    public void testMultipathOfDomainForConnection() throws SQLException {
+        Driver driver = new DummyDriver();
+
+        Connection conn = driver.connect("jdbc:kylin://test_url/kylin/test_db/", null);
+        Statement state = conn.createStatement();
+        ResultSet resultSet = state.executeQuery("select * from test_table where url not in ('http://a.b.com/?a=b') limit 1");
+        ResultSetMetaData metadata = resultSet.getMetaData();
+        assertEquals(12, metadata.getColumnType(1));
+        assertEquals("varchar", metadata.getColumnTypeName(1));
+        assertEquals(1, metadata.isNullable(1));
+
+        while (resultSet.next()) {
+            assertEquals("foo", resultSet.getString(1));
+            assertEquals("bar", resultSet.getString(2));
+            assertEquals("tool", resultSet.getString(3));
+        }
+
+        resultSet.close();
+        state.close();
+        conn.close();
+    }
+
+    @Test
     public void testPreparedStatementWithMockData() throws SQLException {
         Driver driver = new DummyDriver();