diff --git a/pom.xml b/pom.xml
index e54ee127c4..6c3f49a58b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -490,6 +490,13 @@
provided
+
+ org.apache.kylin
+ kylin-jdbc
+ 2.0.0
+ provided
+
+
org.quartz-scheduler
quartz
diff --git a/src/main/java/com/alibaba/druid/util/JdbcConstants.java b/src/main/java/com/alibaba/druid/util/JdbcConstants.java
index bdb09b70be..2325fc5e03 100644
--- a/src/main/java/com/alibaba/druid/util/JdbcConstants.java
+++ b/src/main/java/com/alibaba/druid/util/JdbcConstants.java
@@ -93,6 +93,10 @@ public interface JdbcConstants {
public static final String ENTERPRISEDB = "edb";
public static final String ENTERPRISEDB_DRIVER = "com.edb.Driver";
+ public static final String KYLIN = "kylin";
+ public static final String KYLIN_DRIVER = "org.apache.kylin.jdbc.Driver";
+
+
public static final String SQLITE = "sqlite";
public static final String SQLITE_DRIVER = "org.sqlite.JDBC";
}
diff --git a/src/main/java/com/alibaba/druid/util/JdbcUtils.java b/src/main/java/com/alibaba/druid/util/JdbcUtils.java
index 2b5e86d8c5..5bea647226 100644
--- a/src/main/java/com/alibaba/druid/util/JdbcUtils.java
+++ b/src/main/java/com/alibaba/druid/util/JdbcUtils.java
@@ -448,6 +448,8 @@ public final class JdbcUtils implements JdbcConstants {
return "org.apache.phoenix.queryserver.client.Driver";
} else if (rawUrl.startsWith("jdbc:phoenix://")) {
return JdbcConstants.PHOENIX_DRIVER;
+ } else if (rawUrl.startsWith("jdbc:kylin:")) {
+ return JdbcConstants.KYLIN_DRIVER;
} else {
throw new SQLException("unkow jdbc driver : " + rawUrl);
}
diff --git a/src/test/java/com/alibaba/druid/kylin/KylinDriverSupportTest.java b/src/test/java/com/alibaba/druid/kylin/KylinDriverSupportTest.java
new file mode 100644
index 0000000000..460cce4d43
--- /dev/null
+++ b/src/test/java/com/alibaba/druid/kylin/KylinDriverSupportTest.java
@@ -0,0 +1,53 @@
+package com.alibaba.druid.kylin;
+
+import com.alibaba.druid.pool.DruidDataSource;
+import com.alibaba.druid.util.JdbcConstants;
+import com.alibaba.druid.util.JdbcUtils;
+import org.hamcrest.core.Is;
+import org.hamcrest.core.IsNull;
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+/**
+ * @author yinheli
+ */
+public class KylinDriverSupportTest {
+
+ // test config
+ private static final String URL = "jdbc:kylin://172.168.1.111:7070/jlkBigData";
+ private static final String USER_NAME = "ADMIN";
+ private static final String PASSWORD = "KYLIN";
+ private static final String VALIDATION_QUERY = "select 1";
+
+ @Test
+ public void testDriverClassName() throws SQLException {
+ String driverClass = JdbcUtils.getDriverClassName(URL);
+ Assert.assertThat("check get driverClassName", driverClass, Is.is(JdbcConstants.KYLIN_DRIVER));
+ }
+
+ @Test
+ public void testQuery() throws SQLException {
+ DruidDataSource dataSource = new DruidDataSource();
+ try {
+ dataSource = new DruidDataSource();
+ dataSource.setUrl(URL);
+ dataSource.setUsername(USER_NAME);
+ dataSource.setPassword(PASSWORD);
+ dataSource.setValidationQuery(VALIDATION_QUERY);
+
+ Connection conn = dataSource.getConnection();
+ PreparedStatement state = conn.prepareStatement(VALIDATION_QUERY);
+ ResultSet resultSet = state.executeQuery();
+ Assert.assertThat("check result", resultSet, IsNull.notNullValue());
+ } finally {
+ dataSource.close();
+ }
+
+ }
+
+}