support BalancedClickhouseDataSource, fix #3984

This commit is contained in:
高铁
2021-02-17 17:21:31 +08:00
parent 963bdfaef3
commit 0966f69a3a
2 changed files with 66 additions and 0 deletions
@@ -82,6 +82,7 @@ import com.alibaba.druid.stat.DruidDataSourceStatManager;
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.logging.Log;
import com.alibaba.druid.support.logging.LogFactory;
import com.alibaba.druid.util.JMXUtils;
@@ -1196,6 +1197,12 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat
if (MockDriver.class.getName().equals(driverClass)) {
driver = MockDriver.instance;
} else if ("com.alibaba.druid.support.clickhouse.BalancedClickhouseDriver".equals(driverClass)) {
Properties info = new Properties();
info.put("user", username);
info.put("password", password);
info.putAll(connectProperties);
driver = new BalancedClickhouseDriver(jdbcUrl, info);
} else {
if (jdbcUrl == null && (driverClass == null || driverClass.length() == 0)) {
throw new SQLException("url not set");
@@ -0,0 +1,59 @@
package com.alibaba.druid.support.clickhouse;
import ru.yandex.clickhouse.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 BalancedClickhouseDriver implements java.sql.Driver {
private final String url;
private BalancedClickhouseDataSource dataSource;
public BalancedClickhouseDriver(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;
}
}