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 <[email protected]> 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();
