chore: 数据源接口抽象

This commit is contained in:
junjun 2024-07-03 14:07:24 +08:00
parent aa53d6ea8f
commit bc582d773f
9 changed files with 42 additions and 145 deletions

View File

@ -6,7 +6,6 @@ import io.dataease.chart.manage.ChartDataManage;
import io.dataease.chart.manage.ChartViewManege; import io.dataease.chart.manage.ChartViewManege;
import io.dataease.chart.utils.ChartDataBuild; import io.dataease.chart.utils.ChartDataBuild;
import io.dataease.dataset.manage.DatasetTableFieldManage; import io.dataease.dataset.manage.DatasetTableFieldManage;
import io.dataease.dataset.utils.SqlUtils;
import io.dataease.engine.constant.SQLConstants; import io.dataease.engine.constant.SQLConstants;
import io.dataease.engine.sql.SQLProvider; import io.dataease.engine.sql.SQLProvider;
import io.dataease.engine.trans.Dimension2SQLObj; import io.dataease.engine.trans.Dimension2SQLObj;
@ -109,7 +108,7 @@ public class DefaultChartHandler extends AbstractChartPlugin {
Dimension2SQLObj.dimension2sqlObj(sqlMeta, xAxis, FieldUtil.transFields(allFields), crossDs, dsMap); Dimension2SQLObj.dimension2sqlObj(sqlMeta, xAxis, FieldUtil.transFields(allFields), crossDs, dsMap);
Quota2SQLObj.quota2sqlObj(sqlMeta, yAxis, FieldUtil.transFields(allFields), crossDs, dsMap); Quota2SQLObj.quota2sqlObj(sqlMeta, yAxis, FieldUtil.transFields(allFields), crossDs, dsMap);
String querySql = SQLProvider.createQuerySQL(sqlMeta, true, needOrder, view); String querySql = SQLProvider.createQuerySQL(sqlMeta, true, needOrder, view);
querySql = SqlUtils.rebuildSQL(querySql, sqlMeta, crossDs, dsMap); querySql = provider.rebuildSQL(querySql, sqlMeta, crossDs, dsMap);
datasourceRequest.setQuery(querySql); datasourceRequest.setQuery(querySql);
logger.info("calcite chart sql: " + querySql); logger.info("calcite chart sql: " + querySql);
List<String[]> data = (List<String[]>) provider.fetchResultField(datasourceRequest).get("data"); List<String[]> data = (List<String[]>) provider.fetchResultField(datasourceRequest).get("data");

View File

@ -2,7 +2,6 @@ package io.dataease.chart.charts.impl;
import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.core.type.TypeReference;
import io.dataease.dataset.utils.SqlUtils;
import io.dataease.engine.sql.SQLProvider; import io.dataease.engine.sql.SQLProvider;
import io.dataease.engine.trans.ExtWhere2Str; import io.dataease.engine.trans.ExtWhere2Str;
import io.dataease.engine.utils.Utils; import io.dataease.engine.utils.Utils;
@ -84,7 +83,7 @@ public class YoyChartHandler extends DefaultChartHandler {
var allFields = (List<ChartViewFieldDTO>) filterResult.getContext().get("allFields"); var allFields = (List<ChartViewFieldDTO>) filterResult.getContext().get("allFields");
ExtWhere2Str.extWhere2sqlOjb(sqlMeta, originFilter, FieldUtil.transFields(allFields), crossDs, dsMap); ExtWhere2Str.extWhere2sqlOjb(sqlMeta, originFilter, FieldUtil.transFields(allFields), crossDs, dsMap);
var originSql = SQLProvider.createQuerySQL(sqlMeta, true, needOrder, view); var originSql = SQLProvider.createQuerySQL(sqlMeta, true, needOrder, view);
originSql = SqlUtils.rebuildSQL(originSql, sqlMeta, crossDs, dsMap); originSql = provider.rebuildSQL(originSql, sqlMeta, crossDs, dsMap);
var request = new DatasourceRequest(); var request = new DatasourceRequest();
request.setDsList(dsMap); request.setDsList(dsMap);
request.setQuery(originSql); request.setQuery(originSql);

View File

@ -2,7 +2,6 @@ package io.dataease.chart.charts.impl.map;
import io.dataease.chart.charts.impl.GroupChartHandler; import io.dataease.chart.charts.impl.GroupChartHandler;
import io.dataease.chart.utils.ChartDataBuild; import io.dataease.chart.utils.ChartDataBuild;
import io.dataease.dataset.utils.SqlUtils;
import io.dataease.engine.sql.SQLProvider; import io.dataease.engine.sql.SQLProvider;
import io.dataease.engine.trans.Dimension2SQLObj; import io.dataease.engine.trans.Dimension2SQLObj;
import io.dataease.engine.trans.Quota2SQLObj; import io.dataease.engine.trans.Quota2SQLObj;
@ -70,7 +69,7 @@ public class SymbolicMapHandler extends GroupChartHandler {
yAxis.addAll(yFields); yAxis.addAll(yFields);
Quota2SQLObj.quota2sqlObj(sqlMeta, yAxis, FieldUtil.transFields(allFields), crossDs, dsMap); Quota2SQLObj.quota2sqlObj(sqlMeta, yAxis, FieldUtil.transFields(allFields), crossDs, dsMap);
String querySql = SQLProvider.createQuerySQL(sqlMeta, true, needOrder, view); String querySql = SQLProvider.createQuerySQL(sqlMeta, true, needOrder, view);
querySql = SqlUtils.rebuildSQL(querySql, sqlMeta, crossDs, dsMap); querySql = provider.rebuildSQL(querySql, sqlMeta, crossDs, dsMap);
datasourceRequest.setQuery(querySql); datasourceRequest.setQuery(querySql);
logger.info("calcite chart sql: " + querySql); logger.info("calcite chart sql: " + querySql);
List<String[]> data = (List<String[]>) provider.fetchResultField(datasourceRequest).get("data"); List<String[]> data = (List<String[]>) provider.fetchResultField(datasourceRequest).get("data");
@ -86,7 +85,7 @@ public class SymbolicMapHandler extends GroupChartHandler {
String defaultResultMode = view.getResultMode(); String defaultResultMode = view.getResultMode();
view.setResultMode(""); view.setResultMode("");
String originSql = SQLProvider.createQuerySQL(sqlMeta1, false, needOrder, view); String originSql = SQLProvider.createQuerySQL(sqlMeta1, false, needOrder, view);
originSql = SqlUtils.rebuildSQL(originSql, sqlMeta, crossDs, dsMap); originSql = provider.rebuildSQL(originSql, sqlMeta, crossDs, dsMap);
datasourceRequest.setQuery(originSql); datasourceRequest.setQuery(originSql);
logger.info("calcite detail field sql: " + querySql); logger.info("calcite detail field sql: " + querySql);
detailData = (List<String[]>) provider.fetchResultField(datasourceRequest).get("data"); detailData = (List<String[]>) provider.fetchResultField(datasourceRequest).get("data");

View File

@ -2,7 +2,6 @@ package io.dataease.chart.charts.impl.numeric;
import io.dataease.chart.charts.impl.DefaultChartHandler; import io.dataease.chart.charts.impl.DefaultChartHandler;
import io.dataease.chart.utils.ChartDataBuild; import io.dataease.chart.utils.ChartDataBuild;
import io.dataease.dataset.utils.SqlUtils;
import io.dataease.engine.sql.SQLProvider; import io.dataease.engine.sql.SQLProvider;
import io.dataease.engine.trans.Quota2SQLObj; import io.dataease.engine.trans.Quota2SQLObj;
import io.dataease.engine.utils.Utils; import io.dataease.engine.utils.Utils;
@ -40,7 +39,7 @@ public class NumericalChartHandler extends DefaultChartHandler {
var allFields = (List<ChartViewFieldDTO>) filterResult.getContext().get("allFields"); var allFields = (List<ChartViewFieldDTO>) filterResult.getContext().get("allFields");
Quota2SQLObj.quota2sqlObj(sqlMeta, yAxis, FieldUtil.transFields(allFields), crossDs, dsMap); Quota2SQLObj.quota2sqlObj(sqlMeta, yAxis, FieldUtil.transFields(allFields), crossDs, dsMap);
String querySql = SQLProvider.createQuerySQL(sqlMeta, true, needOrder, view); String querySql = SQLProvider.createQuerySQL(sqlMeta, true, needOrder, view);
querySql = SqlUtils.rebuildSQL(querySql, sqlMeta, crossDs, dsMap); querySql = provider.rebuildSQL(querySql, sqlMeta, crossDs, dsMap);
datasourceRequest.setQuery(querySql); datasourceRequest.setQuery(querySql);
logger.info("calcite chart sql: " + querySql); logger.info("calcite chart sql: " + querySql);
List<String[]> data = (List<String[]>) provider.fetchResultField(datasourceRequest).get("data"); List<String[]> data = (List<String[]>) provider.fetchResultField(datasourceRequest).get("data");

View File

@ -2,7 +2,6 @@ package io.dataease.chart.charts.impl.table;
import io.dataease.api.chart.dto.PageInfo; import io.dataease.api.chart.dto.PageInfo;
import io.dataease.chart.charts.impl.DefaultChartHandler; import io.dataease.chart.charts.impl.DefaultChartHandler;
import io.dataease.dataset.utils.SqlUtils;
import io.dataease.engine.sql.SQLProvider; import io.dataease.engine.sql.SQLProvider;
import io.dataease.engine.trans.Dimension2SQLObj; import io.dataease.engine.trans.Dimension2SQLObj;
import io.dataease.engine.utils.Utils; import io.dataease.engine.utils.Utils;
@ -93,7 +92,7 @@ public class TableInfoHandler extends DefaultChartHandler {
var tablePageMode = (String) filterResult.getContext().get("tablePageMode"); var tablePageMode = (String) filterResult.getContext().get("tablePageMode");
var totalPageSql = "SELECT COUNT(*) FROM (" + SQLProvider.createQuerySQL(sqlMeta, false, false, view) + ") COUNT_TEMP"; var totalPageSql = "SELECT COUNT(*) FROM (" + SQLProvider.createQuerySQL(sqlMeta, false, false, view) + ") COUNT_TEMP";
if (StringUtils.isNotEmpty(totalPageSql) && StringUtils.equalsIgnoreCase(tablePageMode, "page")) { if (StringUtils.isNotEmpty(totalPageSql) && StringUtils.equalsIgnoreCase(tablePageMode, "page")) {
totalPageSql = SqlUtils.rebuildSQL(totalPageSql, sqlMeta, crossDs, dsMap); totalPageSql = provider.rebuildSQL(totalPageSql, sqlMeta, crossDs, dsMap);
datasourceRequest.setQuery(totalPageSql); datasourceRequest.setQuery(totalPageSql);
datasourceRequest.setTotalPageFlag(true); datasourceRequest.setTotalPageFlag(true);
logger.info("calcite total sql: " + totalPageSql); logger.info("calcite total sql: " + totalPageSql);
@ -107,7 +106,7 @@ public class TableInfoHandler extends DefaultChartHandler {
view.setTotalPage(totalPage); view.setTotalPage(totalPage);
} }
querySql = SqlUtils.rebuildSQL(querySql, sqlMeta, crossDs, dsMap); querySql = provider.rebuildSQL(querySql, sqlMeta, crossDs, dsMap);
datasourceRequest.setQuery(querySql); datasourceRequest.setQuery(querySql);
logger.info("calcite chart sql: " + querySql); logger.info("calcite chart sql: " + querySql);
List<String[]> data = (List<String[]>) provider.fetchResultField(datasourceRequest).get("data"); List<String[]> data = (List<String[]>) provider.fetchResultField(datasourceRequest).get("data");

View File

@ -10,8 +10,6 @@ import io.dataease.dataset.manage.DatasetGroupManage;
import io.dataease.dataset.manage.DatasetSQLManage; import io.dataease.dataset.manage.DatasetSQLManage;
import io.dataease.dataset.manage.DatasetTableFieldManage; import io.dataease.dataset.manage.DatasetTableFieldManage;
import io.dataease.dataset.manage.PermissionManage; import io.dataease.dataset.manage.PermissionManage;
import io.dataease.dataset.utils.SqlUtils;
import io.dataease.datasource.provider.CalciteProvider;
import io.dataease.engine.sql.SQLProvider; import io.dataease.engine.sql.SQLProvider;
import io.dataease.engine.trans.*; import io.dataease.engine.trans.*;
import io.dataease.engine.utils.SQLUtils; import io.dataease.engine.utils.SQLUtils;
@ -20,7 +18,9 @@ import io.dataease.exception.DEException;
import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO; import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO;
import io.dataease.extensions.datasource.dto.DatasourceRequest; import io.dataease.extensions.datasource.dto.DatasourceRequest;
import io.dataease.extensions.datasource.dto.DatasourceSchemaDTO; import io.dataease.extensions.datasource.dto.DatasourceSchemaDTO;
import io.dataease.extensions.datasource.factory.ProviderFactory;
import io.dataease.extensions.datasource.model.SQLMeta; import io.dataease.extensions.datasource.model.SQLMeta;
import io.dataease.extensions.datasource.provider.Provider;
import io.dataease.extensions.view.dto.*; import io.dataease.extensions.view.dto.*;
import io.dataease.extensions.view.factory.PluginsChartFactory; import io.dataease.extensions.view.factory.PluginsChartFactory;
import io.dataease.extensions.view.filter.FilterTreeObj; import io.dataease.extensions.view.filter.FilterTreeObj;
@ -56,8 +56,6 @@ public class ChartDataManage {
@Resource @Resource
private DatasetSQLManage datasetSQLManage; private DatasetSQLManage datasetSQLManage;
@Resource @Resource
private CalciteProvider calciteProvider;
@Resource
private ChartViewManege chartViewManege; private ChartViewManege chartViewManege;
@Resource @Resource
private PermissionManage permissionManage; private PermissionManage permissionManage;
@ -342,6 +340,13 @@ public class ChartDataManage {
} }
} }
Provider provider;
if (crossDs) {
provider = ProviderFactory.getDefaultProvider();
} else {
provider = ProviderFactory.getProvider(dsMap.entrySet().iterator().next().getValue().getType());
}
SQLMeta sqlMeta = new SQLMeta(); SQLMeta sqlMeta = new SQLMeta();
Table2SQLObj.table2sqlobj(sqlMeta, null, "(" + sql + ")", crossDs); Table2SQLObj.table2sqlobj(sqlMeta, null, "(" + sql + ")", crossDs);
CustomWhere2Str.customWhere2sqlObj(sqlMeta, fieldCustomFilter, transFields(allFields), crossDs, dsMap); CustomWhere2Str.customWhere2sqlObj(sqlMeta, fieldCustomFilter, transFields(allFields), crossDs, dsMap);
@ -357,10 +362,11 @@ public class ChartDataManage {
Dimension2SQLObj.dimension2sqlObj(sqlMeta, xAxis, FieldUtil.transFields(allFields), crossDs, dsMap); Dimension2SQLObj.dimension2sqlObj(sqlMeta, xAxis, FieldUtil.transFields(allFields), crossDs, dsMap);
Quota2SQLObj.quota2sqlObj(sqlMeta, yAxis, FieldUtil.transFields(allFields), crossDs, dsMap); Quota2SQLObj.quota2sqlObj(sqlMeta, yAxis, FieldUtil.transFields(allFields), crossDs, dsMap);
String querySql = SQLProvider.createQuerySQL(sqlMeta, true, needOrder, view); String querySql = SQLProvider.createQuerySQL(sqlMeta, true, needOrder, view);
querySql = SqlUtils.rebuildSQL(querySql, sqlMeta, crossDs, dsMap); querySql = provider.rebuildSQL(querySql, sqlMeta, crossDs, dsMap);
filterResult.getContext().put("querySql", querySql); filterResult.getContext().put("querySql", querySql);
} }
ChartCalcDataResult calcResult = chartHandler.calcChartResult(view, formatResult, filterResult, sqlMap, sqlMeta, calciteProvider);
ChartCalcDataResult calcResult = chartHandler.calcChartResult(view, formatResult, filterResult, sqlMap, sqlMeta, provider);
return chartHandler.buildChart(view, calcResult, formatResult, filterResult); return chartHandler.buildChart(view, calcResult, formatResult, filterResult);
} }
@ -661,6 +667,13 @@ public class ChartDataManage {
DatasourceRequest datasourceRequest = new DatasourceRequest(); DatasourceRequest datasourceRequest = new DatasourceRequest();
datasourceRequest.setDsList(dsMap); datasourceRequest.setDsList(dsMap);
Provider provider;
if (crossDs) {
provider = ProviderFactory.getDefaultProvider();
} else {
provider = ProviderFactory.getProvider(dsMap.entrySet().iterator().next().getValue().getType());
}
List<String[]> data = new ArrayList<>(); List<String[]> data = new ArrayList<>();
String querySql = null; String querySql = null;
@ -706,11 +719,11 @@ public class ChartDataManage {
querySql = SQLProvider.createQuerySQL(sqlMeta, true, needOrder, view); querySql = SQLProvider.createQuerySQL(sqlMeta, true, needOrder, view);
} }
querySql = SqlUtils.rebuildSQL(querySql, sqlMeta, crossDs, dsMap); querySql = provider.rebuildSQL(querySql, sqlMeta, crossDs, dsMap);
datasourceRequest.setQuery(querySql); datasourceRequest.setQuery(querySql);
logger.info("calcite chart get field enum sql: " + querySql); logger.info("calcite chart get field enum sql: " + querySql);
data = (List<String[]>) calciteProvider.fetchResultField(datasourceRequest).get("data"); data = (List<String[]>) provider.fetchResultField(datasourceRequest).get("data");
} }
return data; return data;
} }

View File

@ -2,10 +2,8 @@ package io.dataease.dataset.manage;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import io.dataease.dataset.dao.auto.entity.CoreDatasetTableField; import io.dataease.dataset.dao.auto.entity.CoreDatasetTableField;
import io.dataease.dataset.dao.auto.mapper.CoreDatasetGroupMapper;
import io.dataease.dataset.dao.auto.mapper.CoreDatasetTableFieldMapper; import io.dataease.dataset.dao.auto.mapper.CoreDatasetTableFieldMapper;
import io.dataease.dataset.utils.TableUtils; import io.dataease.dataset.utils.TableUtils;
import io.dataease.datasource.provider.CalciteProvider;
import io.dataease.engine.constant.ExtFieldConstant; import io.dataease.engine.constant.ExtFieldConstant;
import io.dataease.engine.func.FunctionConstant; import io.dataease.engine.func.FunctionConstant;
import io.dataease.engine.utils.Utils; import io.dataease.engine.utils.Utils;
@ -37,10 +35,6 @@ public class DatasetTableFieldManage {
private CoreDatasetTableFieldMapper coreDatasetTableFieldMapper; private CoreDatasetTableFieldMapper coreDatasetTableFieldMapper;
@Resource @Resource
private PermissionManage permissionManage; private PermissionManage permissionManage;
@Resource
private CoreDatasetGroupMapper coreDatasetGroupMapper;
@Resource
private CalciteProvider calciteProvider;
public void save(CoreDatasetTableField coreDatasetTableField) { public void save(CoreDatasetTableField coreDatasetTableField) {
checkNameLength(coreDatasetTableField.getName()); checkNameLength(coreDatasetTableField.getName());

View File

@ -2,23 +2,14 @@ package io.dataease.dataset.utils;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import io.dataease.exception.DEException; import io.dataease.exception.DEException;
import io.dataease.extensions.datasource.constant.SqlPlaceholderConstants;
import io.dataease.extensions.datasource.dto.DatasourceSchemaDTO;
import io.dataease.extensions.datasource.model.SQLMeta;
import io.dataease.extensions.datasource.vo.DatasourceConfiguration;
import org.apache.calcite.config.Lex; import org.apache.calcite.config.Lex;
import org.apache.calcite.sql.*; import org.apache.calcite.sql.*;
import org.apache.calcite.sql.dialect.*;
import org.apache.calcite.sql.parser.SqlParseException; import org.apache.calcite.sql.parser.SqlParseException;
import org.apache.calcite.sql.parser.SqlParser; import org.apache.calcite.sql.parser.SqlParser;
import org.apache.commons.collections4.MapUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import static org.apache.calcite.sql.SqlKind.*; import static org.apache.calcite.sql.SqlKind.*;
@ -121,107 +112,4 @@ public class SqlUtils {
} }
} }
public static String rebuildSQL(String sql, SQLMeta sqlMeta, boolean crossDs, Map<Long, DatasourceSchemaDTO> dsMap) {
logger.info("calcite sql: " + sql);
if (crossDs) {
return sql;
}
String s = transSqlDialect(sql, dsMap);
String tableDialect = sqlMeta.getTableDialect();
s = replaceTablePlaceHolder(s, tableDialect);
return replaceCalcFieldPlaceHolder(s, sqlMeta);
}
public static String transSqlDialect(String sql, Map<Long, DatasourceSchemaDTO> dsMap) throws DEException {
try {
DatasourceSchemaDTO value = dsMap.entrySet().iterator().next().getValue();
SqlParser parser = SqlParser.create(sql, SqlParser.Config.DEFAULT.withLex(Lex.JAVA));
SqlNode sqlNode = parser.parseStmt();
return sqlNode.toSqlString(getDialect(value)).toString();
} catch (Exception e) {
DEException.throwException(e.getMessage());
}
return null;
}
public static String replaceTablePlaceHolder(String s, String placeholder) {
s = s.replaceAll("\r\n", " ")
.replaceAll("\n", " ")
.replaceAll(SqlPlaceholderConstants.TABLE_PLACEHOLDER_REGEX, Matcher.quoteReplacement(placeholder))
.replaceAll("ASYMMETRIC", "")
.replaceAll("SYMMETRIC", "");
return s;
}
public static String replaceCalcFieldPlaceHolder(String s, SQLMeta sqlMeta) {
Map<String, String> fieldsDialect = new HashMap<>();
if (MapUtils.isNotEmpty(sqlMeta.getXFieldsDialect())) {
fieldsDialect.putAll(sqlMeta.getXFieldsDialect());
}
if (MapUtils.isNotEmpty(sqlMeta.getYFieldsDialect())) {
fieldsDialect.putAll(sqlMeta.getYFieldsDialect());
}
if (MapUtils.isNotEmpty(sqlMeta.getCustomWheresDialect())) {
fieldsDialect.putAll(sqlMeta.getCustomWheresDialect());
}
if (MapUtils.isNotEmpty(sqlMeta.getExtWheresDialect())) {
fieldsDialect.putAll(sqlMeta.getExtWheresDialect());
}
if (MapUtils.isNotEmpty(sqlMeta.getWhereTreesDialect())) {
fieldsDialect.putAll(sqlMeta.getWhereTreesDialect());
}
if (MapUtils.isNotEmpty(fieldsDialect)) {
for (Map.Entry<String, String> ele : fieldsDialect.entrySet()) {
s = s.replaceAll(SqlPlaceholderConstants.KEYWORD_PREFIX_REGEX + ele.getKey() + SqlPlaceholderConstants.KEYWORD_SUFFIX_REGEX, Matcher.quoteReplacement(ele.getValue()));
}
}
return s;
}
private static SqlDialect getDialect(DatasourceSchemaDTO coreDatasource) {
SqlDialect sqlDialect = null;
DatasourceConfiguration.DatasourceType datasourceType = DatasourceConfiguration.DatasourceType.valueOf(coreDatasource.getType());
switch (datasourceType) {
case mysql:
case mongo:
case StarRocks:
case TiDB:
case mariadb:
sqlDialect = MysqlSqlDialect.DEFAULT;
break;
case doris:
sqlDialect = DorisSqlDialect.DEFAULT;
break;
case impala:
sqlDialect = ImpalaSqlDialect.DEFAULT;
break;
case sqlServer:
sqlDialect = MssqlSqlDialect.DEFAULT;
break;
case oracle:
sqlDialect = OracleSqlDialect.DEFAULT;
break;
case db2:
sqlDialect = Db2SqlDialect.DEFAULT;
break;
case pg:
sqlDialect = PostgresqlSqlDialect.DEFAULT;
break;
case redshift:
sqlDialect = RedshiftSqlDialect.DEFAULT;
break;
case ck:
sqlDialect = ClickHouseSqlDialect.DEFAULT;
break;
case h2:
sqlDialect = H2SqlDialect.DEFAULT;
break;
default:
sqlDialect = MysqlSqlDialect.DEFAULT;
}
return sqlDialect;
}
} }

View File

@ -6,13 +6,14 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import io.dataease.api.dataset.dto.PreviewSqlDTO; import io.dataease.api.dataset.dto.PreviewSqlDTO;
import io.dataease.api.ds.DatasourceApi; import io.dataease.api.ds.DatasourceApi;
import io.dataease.api.ds.vo.*; import io.dataease.api.ds.vo.ApiDefinition;
import io.dataease.api.ds.vo.CoreDatasourceTaskLogDTO;
import io.dataease.api.ds.vo.ExcelFileData;
import io.dataease.api.ds.vo.ExcelSheetData;
import io.dataease.commons.constants.TaskStatus; import io.dataease.commons.constants.TaskStatus;
import io.dataease.commons.utils.CommonThreadPool; import io.dataease.commons.utils.CommonThreadPool;
import io.dataease.constant.DataSourceType;
import io.dataease.constant.LogOT; import io.dataease.constant.LogOT;
import io.dataease.constant.LogST; import io.dataease.constant.LogST;
import io.dataease.dataset.manage.DatasetDataManage; import io.dataease.dataset.manage.DatasetDataManage;
@ -32,6 +33,8 @@ import io.dataease.datasource.provider.ExcelUtils;
import io.dataease.engine.constant.SQLConstants; import io.dataease.engine.constant.SQLConstants;
import io.dataease.exception.DEException; import io.dataease.exception.DEException;
import io.dataease.extensions.datasource.dto.*; import io.dataease.extensions.datasource.dto.*;
import io.dataease.extensions.datasource.factory.ProviderFactory;
import io.dataease.extensions.datasource.provider.Provider;
import io.dataease.extensions.datasource.vo.DatasourceConfiguration; import io.dataease.extensions.datasource.vo.DatasourceConfiguration;
import io.dataease.i18n.Translator; import io.dataease.i18n.Translator;
import io.dataease.job.schedule.CheckDsStatusJob; import io.dataease.job.schedule.CheckDsStatusJob;
@ -492,7 +495,8 @@ public class DatasourceServer implements DatasourceApi {
BeanUtils.copyBean(coreDatasource, dataSourceDTO); BeanUtils.copyBean(coreDatasource, dataSourceDTO);
DatasourceRequest datasourceRequest = new DatasourceRequest(); DatasourceRequest datasourceRequest = new DatasourceRequest();
datasourceRequest.setDatasource(dataSourceDTO); datasourceRequest.setDatasource(dataSourceDTO);
return calciteProvider.getSchema(datasourceRequest); Provider provider = ProviderFactory.getProvider(dataSourceDTO.getType());
return provider.getSchema(datasourceRequest);
} }
@Override @Override
@ -724,7 +728,8 @@ public class DatasourceServer implements DatasourceApi {
if (coreDatasource.getType().equals("Excel")) { if (coreDatasource.getType().equals("Excel")) {
return ExcelUtils.getTables(datasourceRequest); return ExcelUtils.getTables(datasourceRequest);
} }
return calciteProvider.getTables(datasourceRequest); Provider provider = ProviderFactory.getProvider(datasourceDTO.getType());
return provider.getTables(datasourceRequest);
} }
@Override @Override
@ -742,7 +747,8 @@ public class DatasourceServer implements DatasourceApi {
datasourceRequest.setDsList(Map.of(datasourceSchemaDTO.getId(), datasourceSchemaDTO)); datasourceRequest.setDsList(Map.of(datasourceSchemaDTO.getId(), datasourceSchemaDTO));
datasourceRequest.setQuery(TableUtils.tableName2Sql(datasourceSchemaDTO, tableName) + " LIMIT 0 OFFSET 0"); datasourceRequest.setQuery(TableUtils.tableName2Sql(datasourceSchemaDTO, tableName) + " LIMIT 0 OFFSET 0");
datasourceRequest.setTable(tableName); datasourceRequest.setTable(tableName);
List<TableField> tableFields = (List<TableField>) calciteProvider.fetchTableField(datasourceRequest); Provider provider = ProviderFactory.getProvider(datasourceSchemaDTO.getType());
List<TableField> tableFields = (List<TableField>) provider.fetchTableField(datasourceRequest);
return tableFields.stream().filter(tableField -> { return tableFields.stream().filter(tableField -> {
return !tableField.getOriginName().equalsIgnoreCase("dataease_uuid"); return !tableField.getOriginName().equalsIgnoreCase("dataease_uuid");
}).collect(Collectors.toList()); }).collect(Collectors.toList());
@ -754,7 +760,8 @@ public class DatasourceServer implements DatasourceApi {
datasourceRequest.setDsList(Map.of(datasourceSchemaDTO.getId(), datasourceSchemaDTO)); datasourceRequest.setDsList(Map.of(datasourceSchemaDTO.getId(), datasourceSchemaDTO));
datasourceRequest.setQuery(TableUtils.tableName2Sql(datasourceSchemaDTO, tableName) + " LIMIT 0 OFFSET 0"); datasourceRequest.setQuery(TableUtils.tableName2Sql(datasourceSchemaDTO, tableName) + " LIMIT 0 OFFSET 0");
datasourceRequest.setTable(tableName); datasourceRequest.setTable(tableName);
return (List<TableField>) calciteProvider.fetchTableField(datasourceRequest); Provider provider = ProviderFactory.getProvider(datasourceSchemaDTO.getType());
return (List<TableField>) provider.fetchTableField(datasourceRequest);
} }
@Override @Override