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; + } +}