forked from github/dataease
fix(数据源): 修复 ClickHouse 自定义驱动创建数据集报错 #8423
This commit is contained in:
parent
272bdd244b
commit
bff30fd966
@ -448,8 +448,9 @@ public class JdbcProvider extends DefaultJdbcProvider {
|
|||||||
String username = null;
|
String username = null;
|
||||||
String password = null;
|
String password = null;
|
||||||
String defaultDriver = null;
|
String defaultDriver = null;
|
||||||
String jdbcurl = null;
|
|
||||||
String customDriver = null;
|
String customDriver = null;
|
||||||
|
String jdbcurl = null;
|
||||||
|
|
||||||
DatasourceTypes datasourceType = DatasourceTypes.valueOf(datasourceRequest.getDatasource().getType());
|
DatasourceTypes datasourceType = DatasourceTypes.valueOf(datasourceRequest.getDatasource().getType());
|
||||||
Properties props = new Properties();
|
Properties props = new Properties();
|
||||||
DeDriver deDriver = null;
|
DeDriver deDriver = null;
|
||||||
@ -626,6 +627,7 @@ public class JdbcProvider extends DefaultJdbcProvider {
|
|||||||
public JdbcConfiguration setCredential(DatasourceRequest datasourceRequest, DruidDataSource dataSource) throws Exception {
|
public JdbcConfiguration setCredential(DatasourceRequest datasourceRequest, DruidDataSource dataSource) throws Exception {
|
||||||
DatasourceTypes datasourceType = DatasourceTypes.valueOf(datasourceRequest.getDatasource().getType());
|
DatasourceTypes datasourceType = DatasourceTypes.valueOf(datasourceRequest.getDatasource().getType());
|
||||||
JdbcConfiguration jdbcConfiguration = new JdbcConfiguration();
|
JdbcConfiguration jdbcConfiguration = new JdbcConfiguration();
|
||||||
|
String defaultDriver = null;
|
||||||
switch (datasourceType) {
|
switch (datasourceType) {
|
||||||
case mysql:
|
case mysql:
|
||||||
case mariadb:
|
case mariadb:
|
||||||
@ -636,41 +638,44 @@ public class JdbcProvider extends DefaultJdbcProvider {
|
|||||||
case StarRocks:
|
case StarRocks:
|
||||||
MysqlConfiguration mysqlConfiguration = new Gson().fromJson(datasourceRequest.getDatasource().getConfiguration(), MysqlConfiguration.class);
|
MysqlConfiguration mysqlConfiguration = new Gson().fromJson(datasourceRequest.getDatasource().getConfiguration(), MysqlConfiguration.class);
|
||||||
dataSource.setUrl(mysqlConfiguration.getJdbc());
|
dataSource.setUrl(mysqlConfiguration.getJdbc());
|
||||||
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
|
|
||||||
dataSource.setValidationQuery("select 1");
|
dataSource.setValidationQuery("select 1");
|
||||||
jdbcConfiguration = mysqlConfiguration;
|
jdbcConfiguration = mysqlConfiguration;
|
||||||
|
defaultDriver = mysqlConfiguration.getDriver();
|
||||||
break;
|
break;
|
||||||
case sqlServer:
|
case sqlServer:
|
||||||
SqlServerConfiguration sqlServerConfiguration = new Gson().fromJson(datasourceRequest.getDatasource().getConfiguration(), SqlServerConfiguration.class);
|
SqlServerConfiguration sqlServerConfiguration = new Gson().fromJson(datasourceRequest.getDatasource().getConfiguration(), SqlServerConfiguration.class);
|
||||||
dataSource.setDriverClassName(sqlServerConfiguration.getDriver());
|
|
||||||
dataSource.setUrl(sqlServerConfiguration.getJdbc());
|
dataSource.setUrl(sqlServerConfiguration.getJdbc());
|
||||||
dataSource.setValidationQuery("select 1");
|
dataSource.setValidationQuery("select 1");
|
||||||
jdbcConfiguration = sqlServerConfiguration;
|
jdbcConfiguration = sqlServerConfiguration;
|
||||||
|
defaultDriver = sqlServerConfiguration.getDriver();
|
||||||
break;
|
break;
|
||||||
case oracle:
|
case oracle:
|
||||||
OracleConfiguration oracleConfiguration = new Gson().fromJson(datasourceRequest.getDatasource().getConfiguration(), OracleConfiguration.class);
|
OracleConfiguration oracleConfiguration = new Gson().fromJson(datasourceRequest.getDatasource().getConfiguration(), OracleConfiguration.class);
|
||||||
dataSource.setDriverClassName(oracleConfiguration.getDriver());
|
|
||||||
dataSource.setUrl(oracleConfiguration.getJdbc());
|
dataSource.setUrl(oracleConfiguration.getJdbc());
|
||||||
dataSource.setValidationQuery("select 1 from dual");
|
dataSource.setValidationQuery("select 1 from dual");
|
||||||
jdbcConfiguration = oracleConfiguration;
|
jdbcConfiguration = oracleConfiguration;
|
||||||
|
defaultDriver = oracleConfiguration.getDriver();
|
||||||
break;
|
break;
|
||||||
case pg:
|
case pg:
|
||||||
PgConfiguration pgConfiguration = new Gson().fromJson(datasourceRequest.getDatasource().getConfiguration(), PgConfiguration.class);
|
PgConfiguration pgConfiguration = new Gson().fromJson(datasourceRequest.getDatasource().getConfiguration(), PgConfiguration.class);
|
||||||
dataSource.setDriverClassName(pgConfiguration.getDriver());
|
dataSource.setDriverClassName(pgConfiguration.getDriver());
|
||||||
dataSource.setUrl(pgConfiguration.getJdbc());
|
dataSource.setUrl(pgConfiguration.getJdbc());
|
||||||
jdbcConfiguration = pgConfiguration;
|
jdbcConfiguration = pgConfiguration;
|
||||||
|
defaultDriver = pgConfiguration.getDriver();
|
||||||
break;
|
break;
|
||||||
case ck:
|
case ck:
|
||||||
CHConfiguration chConfiguration = new Gson().fromJson(datasourceRequest.getDatasource().getConfiguration(), CHConfiguration.class);
|
CHConfiguration chConfiguration = new Gson().fromJson(datasourceRequest.getDatasource().getConfiguration(), CHConfiguration.class);
|
||||||
dataSource.setDriverClassName(chConfiguration.getDriver());
|
dataSource.setDriverClassName(chConfiguration.getDriver());
|
||||||
dataSource.setUrl(chConfiguration.getJdbc());
|
dataSource.setUrl(chConfiguration.getJdbc());
|
||||||
jdbcConfiguration = chConfiguration;
|
jdbcConfiguration = chConfiguration;
|
||||||
|
defaultDriver = chConfiguration.getDriver();
|
||||||
break;
|
break;
|
||||||
case mongo:
|
case mongo:
|
||||||
MongodbConfiguration mongodbConfiguration = new Gson().fromJson(datasourceRequest.getDatasource().getConfiguration(), MongodbConfiguration.class);
|
MongodbConfiguration mongodbConfiguration = new Gson().fromJson(datasourceRequest.getDatasource().getConfiguration(), MongodbConfiguration.class);
|
||||||
dataSource.setDriverClassName(mongodbConfiguration.getDriver());
|
dataSource.setDriverClassName(mongodbConfiguration.getDriver());
|
||||||
dataSource.setUrl(mongodbConfiguration.getJdbc(datasourceRequest.getDatasource().getId()));
|
dataSource.setUrl(mongodbConfiguration.getJdbc(datasourceRequest.getDatasource().getId()));
|
||||||
jdbcConfiguration = mongodbConfiguration;
|
jdbcConfiguration = mongodbConfiguration;
|
||||||
|
defaultDriver = mongodbConfiguration.getDriver();
|
||||||
break;
|
break;
|
||||||
case redshift:
|
case redshift:
|
||||||
RedshiftConfiguration redshiftConfiguration = new Gson().fromJson(datasourceRequest.getDatasource().getConfiguration(), RedshiftConfiguration.class);
|
RedshiftConfiguration redshiftConfiguration = new Gson().fromJson(datasourceRequest.getDatasource().getConfiguration(), RedshiftConfiguration.class);
|
||||||
@ -678,6 +683,7 @@ public class JdbcProvider extends DefaultJdbcProvider {
|
|||||||
dataSource.setDriverClassName(redshiftConfiguration.getDriver());
|
dataSource.setDriverClassName(redshiftConfiguration.getDriver());
|
||||||
dataSource.setUrl(redshiftConfiguration.getJdbc());
|
dataSource.setUrl(redshiftConfiguration.getJdbc());
|
||||||
jdbcConfiguration = redshiftConfiguration;
|
jdbcConfiguration = redshiftConfiguration;
|
||||||
|
defaultDriver = redshiftConfiguration.getDriver();
|
||||||
break;
|
break;
|
||||||
case hive:
|
case hive:
|
||||||
HiveConfiguration hiveConfiguration = new Gson().fromJson(datasourceRequest.getDatasource().getConfiguration(), HiveConfiguration.class);
|
HiveConfiguration hiveConfiguration = new Gson().fromJson(datasourceRequest.getDatasource().getConfiguration(), HiveConfiguration.class);
|
||||||
@ -685,6 +691,7 @@ public class JdbcProvider extends DefaultJdbcProvider {
|
|||||||
dataSource.setDriverClassName(hiveConfiguration.getDriver());
|
dataSource.setDriverClassName(hiveConfiguration.getDriver());
|
||||||
dataSource.setUrl(hiveConfiguration.getJdbc());
|
dataSource.setUrl(hiveConfiguration.getJdbc());
|
||||||
jdbcConfiguration = hiveConfiguration;
|
jdbcConfiguration = hiveConfiguration;
|
||||||
|
defaultDriver = hiveConfiguration.getDriver();
|
||||||
break;
|
break;
|
||||||
case impala:
|
case impala:
|
||||||
ImpalaConfiguration impalaConfiguration = new Gson().fromJson(datasourceRequest.getDatasource().getConfiguration(), ImpalaConfiguration.class);
|
ImpalaConfiguration impalaConfiguration = new Gson().fromJson(datasourceRequest.getDatasource().getConfiguration(), ImpalaConfiguration.class);
|
||||||
@ -692,6 +699,7 @@ public class JdbcProvider extends DefaultJdbcProvider {
|
|||||||
dataSource.setDriverClassName(impalaConfiguration.getDriver());
|
dataSource.setDriverClassName(impalaConfiguration.getDriver());
|
||||||
dataSource.setUrl(impalaConfiguration.getJdbc());
|
dataSource.setUrl(impalaConfiguration.getJdbc());
|
||||||
jdbcConfiguration = impalaConfiguration;
|
jdbcConfiguration = impalaConfiguration;
|
||||||
|
defaultDriver = impalaConfiguration.getDriver();
|
||||||
break;
|
break;
|
||||||
case db2:
|
case db2:
|
||||||
Db2Configuration db2Configuration = new Gson().fromJson(datasourceRequest.getDatasource().getConfiguration(), Db2Configuration.class);
|
Db2Configuration db2Configuration = new Gson().fromJson(datasourceRequest.getDatasource().getConfiguration(), Db2Configuration.class);
|
||||||
@ -699,6 +707,7 @@ public class JdbcProvider extends DefaultJdbcProvider {
|
|||||||
dataSource.setDriverClassName(db2Configuration.getDriver());
|
dataSource.setDriverClassName(db2Configuration.getDriver());
|
||||||
dataSource.setUrl(db2Configuration.getJdbc());
|
dataSource.setUrl(db2Configuration.getJdbc());
|
||||||
jdbcConfiguration = db2Configuration;
|
jdbcConfiguration = db2Configuration;
|
||||||
|
defaultDriver = db2Configuration.getDriver();
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -707,14 +716,15 @@ public class JdbcProvider extends DefaultJdbcProvider {
|
|||||||
|
|
||||||
ExtendedJdbcClassLoader classLoader;
|
ExtendedJdbcClassLoader classLoader;
|
||||||
if (isDefaultClassLoader(jdbcConfiguration.getCustomDriver())) {
|
if (isDefaultClassLoader(jdbcConfiguration.getCustomDriver())) {
|
||||||
|
dataSource.setDriverClassName(defaultDriver);
|
||||||
classLoader = extendedJdbcClassLoader;
|
classLoader = extendedJdbcClassLoader;
|
||||||
} else {
|
} else {
|
||||||
DeDriver deDriver = deDriverMapper.selectByPrimaryKey(jdbcConfiguration.getCustomDriver());
|
DeDriver deDriver = deDriverMapper.selectByPrimaryKey(jdbcConfiguration.getCustomDriver());
|
||||||
classLoader = getCustomJdbcClassLoader(deDriver);
|
classLoader = getCustomJdbcClassLoader(deDriver);
|
||||||
|
dataSource.setDriverClassName(deDriver.getDriverClass());
|
||||||
}
|
}
|
||||||
dataSource.setDriverClassLoader(classLoader);
|
dataSource.setDriverClassLoader(classLoader);
|
||||||
dataSource.setPassword(jdbcConfiguration.getPassword());
|
dataSource.setPassword(jdbcConfiguration.getPassword());
|
||||||
|
|
||||||
return jdbcConfiguration;
|
return jdbcConfiguration;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user