From 59a3a9df8cff301e05aaac3f461756291dfcdfc2 Mon Sep 17 00:00:00 2001 From: yinheli Date: Sat, 27 May 2017 11:27:37 +0800 Subject: [PATCH] add kylin support --- pom.xml | 7 +++ .../com/alibaba/druid/util/JdbcConstants.java | 4 ++ .../com/alibaba/druid/util/JdbcUtils.java | 2 + .../druid/kylin/KylinDriverSupportTest.java | 53 +++++++++++++++++++ 4 files changed, 66 insertions(+) create mode 100644 src/test/java/com/alibaba/druid/kylin/KylinDriverSupportTest.java 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(); + } + + } + +}