diff --git a/pom.xml b/pom.xml
index efc86f9602..0c52c6711d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -643,5 +643,30 @@
4.2.0
test
-
+
+ com.github.housepower
+ clickhouse-native-jdbc-shaded
+ 2.5.6
+ provided
+
+
+
+
+
+
+ nutz
+ https://jfrog.nutz.cn/artifactory/libs-release
+
+
+ nutz-snapshots
+ https://jfrog.nutz.cn/artifactory/snapshots
+
+ true
+ always
+
+
+ false
+
+
+
diff --git a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java
index 1866646b73..6594e343ed 100644
--- a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java
+++ b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java
@@ -39,6 +39,7 @@ import com.alibaba.druid.stat.JdbcDataSourceStat;
import com.alibaba.druid.stat.JdbcSqlStat;
import com.alibaba.druid.stat.JdbcSqlStatValue;
import com.alibaba.druid.support.clickhouse.BalancedClickhouseDriver;
+import com.alibaba.druid.support.clickhouse.BalancedClickhouseDriverNative;
import com.alibaba.druid.support.logging.Log;
import com.alibaba.druid.support.logging.LogFactory;
import com.alibaba.druid.util.*;
@@ -1191,6 +1192,13 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat
info.put("password", password);
info.putAll(connectProperties);
driver = new BalancedClickhouseDriver(jdbcUrl, info);
+ }
+ else if ("com.alibaba.druid.support.clickhouse.BalancedClickhouseDriverNative".equals(driverClass)) {
+ Properties info = new Properties();
+ info.put("user", username);
+ info.put("password", password);
+ info.putAll(connectProperties);
+ driver = new BalancedClickhouseDriverNative(jdbcUrl, info);
} else {
if (jdbcUrl == null && (driverClass == null || driverClass.length() == 0)) {
throw new SQLException("url not set");
diff --git a/src/main/java/com/alibaba/druid/support/clickhouse/BalancedClickhouseDriverNative.java b/src/main/java/com/alibaba/druid/support/clickhouse/BalancedClickhouseDriverNative.java
new file mode 100644
index 0000000000..d97bc471bb
--- /dev/null
+++ b/src/main/java/com/alibaba/druid/support/clickhouse/BalancedClickhouseDriverNative.java
@@ -0,0 +1,61 @@
+package com.alibaba.druid.support.clickhouse;
+
+
+
+import com.github.housepower.jdbc.BalancedClickhouseDataSource;
+
+import java.sql.Connection;
+import java.sql.DriverPropertyInfo;
+import java.sql.SQLException;
+import java.sql.SQLFeatureNotSupportedException;
+import java.util.Properties;
+import java.util.logging.Logger;
+
+public class BalancedClickhouseDriverNative implements java.sql.Driver {
+ private final String url;
+ private BalancedClickhouseDataSource dataSource;
+
+ public BalancedClickhouseDriverNative(final String url, Properties properties) {
+ this.url = url;
+ this.dataSource = new BalancedClickhouseDataSource(url, properties);
+ }
+
+ @Override
+ public Connection connect(String url, Properties info) throws SQLException {
+ if (!acceptsURL(url)) {
+ throw new SQLException("TODO");
+ }
+
+ return dataSource.getConnection();
+ }
+
+ @Override
+ public boolean acceptsURL(String url) throws SQLException {
+ return this.url.equals(url);
+ }
+
+ @Override
+ public DriverPropertyInfo[] getPropertyInfo(String url, Properties info) throws SQLException {
+ return new DriverPropertyInfo[0];
+ }
+
+ @Override
+ public int getMajorVersion() {
+ return 0;
+ }
+
+ @Override
+ public int getMinorVersion() {
+ return 0;
+ }
+
+ @Override
+ public boolean jdbcCompliant() {
+ return false;
+ }
+
+ @Override
+ public Logger getParentLogger() throws SQLFeatureNotSupportedException {
+ return null;
+ }
+}