fix(calcite): 修复新建和删除数据源时空连接导致的unwrap异常,在获取CalciteConnection前增加空连接检查

This commit is contained in:
cjh
2025-10-23 11:19:21 +08:00
committed by taojinlong
parent 483bb8d643
commit 0ab5cbfc66

View File

@@ -1597,7 +1597,8 @@ public class CalciteProvider extends Provider {
DatasourceRequest datasourceRequest = new DatasourceRequest();
datasourceRequest.setDsList(Map.of(datasourceSchemaDTO.getId(), datasourceSchemaDTO));
try {
CalciteConnection calciteConnection = connection.unwrap(CalciteConnection.class);
Connection conn = (connection != null) ? connection : getCalciteConnection();
CalciteConnection calciteConnection = conn.unwrap(CalciteConnection.class);
SchemaPlus rootSchema = buildSchema(datasourceRequest, calciteConnection);
} catch (Exception e) {
DEException.throwException(e.getMessage());
@@ -1633,7 +1634,8 @@ public class CalciteProvider extends Provider {
BeanUtils.copyBean(datasourceSchemaDTO, datasource);
datasourceSchemaDTO.setSchemaAlias(String.format(SQLConstants.SCHEMA, datasourceSchemaDTO.getId()));
try {
CalciteConnection calciteConnection = connection.unwrap(CalciteConnection.class);
Connection conn = (connection != null) ? connection : getCalciteConnection();
CalciteConnection calciteConnection = conn.unwrap(CalciteConnection.class);
SchemaPlus rootSchema = calciteConnection.getRootSchema();
if (rootSchema.getSubSchema(datasourceSchemaDTO.getSchemaAlias()) != null) {
JdbcSchema jdbcSchema = rootSchema.getSubSchema(datasourceSchemaDTO.getSchemaAlias()).unwrap(JdbcSchema.class);