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