From bc582d773f2851dcacdee4d777588dc6a410e6c6 Mon Sep 17 00:00:00 2001 From: junjun Date: Wed, 3 Jul 2024 14:07:24 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E6=95=B0=E6=8D=AE=E6=BA=90=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E6=8A=BD=E8=B1=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../charts/impl/DefaultChartHandler.java | 3 +- .../chart/charts/impl/YoyChartHandler.java | 3 +- .../charts/impl/map/SymbolicMapHandler.java | 5 +- .../impl/numeric/NumericalChartHandler.java | 3 +- .../charts/impl/table/TableInfoHandler.java | 5 +- .../chart/manage/ChartDataManage.java | 29 +++-- .../manage/DatasetTableFieldManage.java | 6 - .../io/dataease/dataset/utils/SqlUtils.java | 112 ------------------ .../datasource/server/DatasourceServer.java | 21 ++-- 9 files changed, 42 insertions(+), 145 deletions(-) diff --git a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/DefaultChartHandler.java b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/DefaultChartHandler.java index a56f24e622..0097dac8e1 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/DefaultChartHandler.java +++ b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/DefaultChartHandler.java @@ -6,7 +6,6 @@ import io.dataease.chart.manage.ChartDataManage; import io.dataease.chart.manage.ChartViewManege; import io.dataease.chart.utils.ChartDataBuild; import io.dataease.dataset.manage.DatasetTableFieldManage; -import io.dataease.dataset.utils.SqlUtils; import io.dataease.engine.constant.SQLConstants; import io.dataease.engine.sql.SQLProvider; import io.dataease.engine.trans.Dimension2SQLObj; @@ -109,7 +108,7 @@ public class DefaultChartHandler extends AbstractChartPlugin { Dimension2SQLObj.dimension2sqlObj(sqlMeta, xAxis, FieldUtil.transFields(allFields), crossDs, dsMap); Quota2SQLObj.quota2sqlObj(sqlMeta, yAxis, FieldUtil.transFields(allFields), crossDs, dsMap); 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); logger.info("calcite chart sql: " + querySql); List data = (List) provider.fetchResultField(datasourceRequest).get("data"); diff --git a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/YoyChartHandler.java b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/YoyChartHandler.java index 1f257d7df7..4e3acc664f 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/YoyChartHandler.java +++ b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/YoyChartHandler.java @@ -2,7 +2,6 @@ package io.dataease.chart.charts.impl; import com.fasterxml.jackson.core.type.TypeReference; -import io.dataease.dataset.utils.SqlUtils; import io.dataease.engine.sql.SQLProvider; import io.dataease.engine.trans.ExtWhere2Str; import io.dataease.engine.utils.Utils; @@ -84,7 +83,7 @@ public class YoyChartHandler extends DefaultChartHandler { var allFields = (List) filterResult.getContext().get("allFields"); ExtWhere2Str.extWhere2sqlOjb(sqlMeta, originFilter, FieldUtil.transFields(allFields), crossDs, dsMap); 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(); request.setDsList(dsMap); request.setQuery(originSql); diff --git a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/map/SymbolicMapHandler.java b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/map/SymbolicMapHandler.java index 467b05148c..5b280a844e 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/map/SymbolicMapHandler.java +++ b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/map/SymbolicMapHandler.java @@ -2,7 +2,6 @@ package io.dataease.chart.charts.impl.map; import io.dataease.chart.charts.impl.GroupChartHandler; import io.dataease.chart.utils.ChartDataBuild; -import io.dataease.dataset.utils.SqlUtils; import io.dataease.engine.sql.SQLProvider; import io.dataease.engine.trans.Dimension2SQLObj; import io.dataease.engine.trans.Quota2SQLObj; @@ -70,7 +69,7 @@ public class SymbolicMapHandler extends GroupChartHandler { yAxis.addAll(yFields); Quota2SQLObj.quota2sqlObj(sqlMeta, yAxis, FieldUtil.transFields(allFields), crossDs, dsMap); 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); logger.info("calcite chart sql: " + querySql); List data = (List) provider.fetchResultField(datasourceRequest).get("data"); @@ -86,7 +85,7 @@ public class SymbolicMapHandler extends GroupChartHandler { String defaultResultMode = view.getResultMode(); view.setResultMode(""); 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); logger.info("calcite detail field sql: " + querySql); detailData = (List) provider.fetchResultField(datasourceRequest).get("data"); diff --git a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/numeric/NumericalChartHandler.java b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/numeric/NumericalChartHandler.java index 59cf7a4928..1774d0694b 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/numeric/NumericalChartHandler.java +++ b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/numeric/NumericalChartHandler.java @@ -2,7 +2,6 @@ package io.dataease.chart.charts.impl.numeric; import io.dataease.chart.charts.impl.DefaultChartHandler; import io.dataease.chart.utils.ChartDataBuild; -import io.dataease.dataset.utils.SqlUtils; import io.dataease.engine.sql.SQLProvider; import io.dataease.engine.trans.Quota2SQLObj; import io.dataease.engine.utils.Utils; @@ -40,7 +39,7 @@ public class NumericalChartHandler extends DefaultChartHandler { var allFields = (List) filterResult.getContext().get("allFields"); Quota2SQLObj.quota2sqlObj(sqlMeta, yAxis, FieldUtil.transFields(allFields), crossDs, dsMap); 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); logger.info("calcite chart sql: " + querySql); List data = (List) provider.fetchResultField(datasourceRequest).get("data"); diff --git a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/table/TableInfoHandler.java b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/table/TableInfoHandler.java index 6fe1f993de..e6e2b7da6d 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/table/TableInfoHandler.java +++ b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/table/TableInfoHandler.java @@ -2,7 +2,6 @@ package io.dataease.chart.charts.impl.table; import io.dataease.api.chart.dto.PageInfo; import io.dataease.chart.charts.impl.DefaultChartHandler; -import io.dataease.dataset.utils.SqlUtils; import io.dataease.engine.sql.SQLProvider; import io.dataease.engine.trans.Dimension2SQLObj; import io.dataease.engine.utils.Utils; @@ -93,7 +92,7 @@ public class TableInfoHandler extends DefaultChartHandler { var tablePageMode = (String) filterResult.getContext().get("tablePageMode"); var totalPageSql = "SELECT COUNT(*) FROM (" + SQLProvider.createQuerySQL(sqlMeta, false, false, view) + ") COUNT_TEMP"; 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.setTotalPageFlag(true); logger.info("calcite total sql: " + totalPageSql); @@ -107,7 +106,7 @@ public class TableInfoHandler extends DefaultChartHandler { view.setTotalPage(totalPage); } - querySql = SqlUtils.rebuildSQL(querySql, sqlMeta, crossDs, dsMap); + querySql = provider.rebuildSQL(querySql, sqlMeta, crossDs, dsMap); datasourceRequest.setQuery(querySql); logger.info("calcite chart sql: " + querySql); List data = (List) provider.fetchResultField(datasourceRequest).get("data"); diff --git a/core/core-backend/src/main/java/io/dataease/chart/manage/ChartDataManage.java b/core/core-backend/src/main/java/io/dataease/chart/manage/ChartDataManage.java index 6c319ab395..37ad8fc3ea 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/manage/ChartDataManage.java +++ b/core/core-backend/src/main/java/io/dataease/chart/manage/ChartDataManage.java @@ -10,8 +10,6 @@ import io.dataease.dataset.manage.DatasetGroupManage; import io.dataease.dataset.manage.DatasetSQLManage; import io.dataease.dataset.manage.DatasetTableFieldManage; 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.trans.*; 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.DatasourceRequest; 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.provider.Provider; import io.dataease.extensions.view.dto.*; import io.dataease.extensions.view.factory.PluginsChartFactory; import io.dataease.extensions.view.filter.FilterTreeObj; @@ -56,8 +56,6 @@ public class ChartDataManage { @Resource private DatasetSQLManage datasetSQLManage; @Resource - private CalciteProvider calciteProvider; - @Resource private ChartViewManege chartViewManege; @Resource 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(); Table2SQLObj.table2sqlobj(sqlMeta, null, "(" + sql + ")", crossDs); CustomWhere2Str.customWhere2sqlObj(sqlMeta, fieldCustomFilter, transFields(allFields), crossDs, dsMap); @@ -357,10 +362,11 @@ public class ChartDataManage { Dimension2SQLObj.dimension2sqlObj(sqlMeta, xAxis, FieldUtil.transFields(allFields), crossDs, dsMap); Quota2SQLObj.quota2sqlObj(sqlMeta, yAxis, FieldUtil.transFields(allFields), crossDs, dsMap); 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); } - 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); } @@ -661,6 +667,13 @@ public class ChartDataManage { DatasourceRequest datasourceRequest = new DatasourceRequest(); datasourceRequest.setDsList(dsMap); + Provider provider; + if (crossDs) { + provider = ProviderFactory.getDefaultProvider(); + } else { + provider = ProviderFactory.getProvider(dsMap.entrySet().iterator().next().getValue().getType()); + } + List data = new ArrayList<>(); String querySql = null; @@ -706,11 +719,11 @@ public class ChartDataManage { querySql = SQLProvider.createQuerySQL(sqlMeta, true, needOrder, view); } - querySql = SqlUtils.rebuildSQL(querySql, sqlMeta, crossDs, dsMap); + querySql = provider.rebuildSQL(querySql, sqlMeta, crossDs, dsMap); datasourceRequest.setQuery(querySql); logger.info("calcite chart get field enum sql: " + querySql); - data = (List) calciteProvider.fetchResultField(datasourceRequest).get("data"); + data = (List) provider.fetchResultField(datasourceRequest).get("data"); } return data; } diff --git a/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetTableFieldManage.java b/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetTableFieldManage.java index 96a66e7ce6..cb5b760ef0 100644 --- a/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetTableFieldManage.java +++ b/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetTableFieldManage.java @@ -2,10 +2,8 @@ package io.dataease.dataset.manage; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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.utils.TableUtils; -import io.dataease.datasource.provider.CalciteProvider; import io.dataease.engine.constant.ExtFieldConstant; import io.dataease.engine.func.FunctionConstant; import io.dataease.engine.utils.Utils; @@ -37,10 +35,6 @@ public class DatasetTableFieldManage { private CoreDatasetTableFieldMapper coreDatasetTableFieldMapper; @Resource private PermissionManage permissionManage; - @Resource - private CoreDatasetGroupMapper coreDatasetGroupMapper; - @Resource - private CalciteProvider calciteProvider; public void save(CoreDatasetTableField coreDatasetTableField) { checkNameLength(coreDatasetTableField.getName()); diff --git a/core/core-backend/src/main/java/io/dataease/dataset/utils/SqlUtils.java b/core/core-backend/src/main/java/io/dataease/dataset/utils/SqlUtils.java index 7da5902fb7..d0d71ee0bd 100644 --- a/core/core-backend/src/main/java/io/dataease/dataset/utils/SqlUtils.java +++ b/core/core-backend/src/main/java/io/dataease/dataset/utils/SqlUtils.java @@ -2,23 +2,14 @@ package io.dataease.dataset.utils; import com.google.common.collect.ImmutableList; 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.sql.*; -import org.apache.calcite.sql.dialect.*; import org.apache.calcite.sql.parser.SqlParseException; import org.apache.calcite.sql.parser.SqlParser; -import org.apache.commons.collections4.MapUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.HashMap; import java.util.List; -import java.util.Map; -import java.util.regex.Matcher; 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 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 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 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 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; - } } diff --git a/core/core-backend/src/main/java/io/dataease/datasource/server/DatasourceServer.java b/core/core-backend/src/main/java/io/dataease/datasource/server/DatasourceServer.java index 05397e3a5d..d2f02a728f 100644 --- a/core/core-backend/src/main/java/io/dataease/datasource/server/DatasourceServer.java +++ b/core/core-backend/src/main/java/io/dataease/datasource/server/DatasourceServer.java @@ -6,13 +6,14 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; import io.dataease.api.dataset.dto.PreviewSqlDTO; 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.utils.CommonThreadPool; -import io.dataease.constant.DataSourceType; import io.dataease.constant.LogOT; import io.dataease.constant.LogST; 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.exception.DEException; 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.i18n.Translator; import io.dataease.job.schedule.CheckDsStatusJob; @@ -492,7 +495,8 @@ public class DatasourceServer implements DatasourceApi { BeanUtils.copyBean(coreDatasource, dataSourceDTO); DatasourceRequest datasourceRequest = new DatasourceRequest(); datasourceRequest.setDatasource(dataSourceDTO); - return calciteProvider.getSchema(datasourceRequest); + Provider provider = ProviderFactory.getProvider(dataSourceDTO.getType()); + return provider.getSchema(datasourceRequest); } @Override @@ -724,7 +728,8 @@ public class DatasourceServer implements DatasourceApi { if (coreDatasource.getType().equals("Excel")) { return ExcelUtils.getTables(datasourceRequest); } - return calciteProvider.getTables(datasourceRequest); + Provider provider = ProviderFactory.getProvider(datasourceDTO.getType()); + return provider.getTables(datasourceRequest); } @Override @@ -742,7 +747,8 @@ public class DatasourceServer implements DatasourceApi { datasourceRequest.setDsList(Map.of(datasourceSchemaDTO.getId(), datasourceSchemaDTO)); datasourceRequest.setQuery(TableUtils.tableName2Sql(datasourceSchemaDTO, tableName) + " LIMIT 0 OFFSET 0"); datasourceRequest.setTable(tableName); - List tableFields = (List) calciteProvider.fetchTableField(datasourceRequest); + Provider provider = ProviderFactory.getProvider(datasourceSchemaDTO.getType()); + List tableFields = (List) provider.fetchTableField(datasourceRequest); return tableFields.stream().filter(tableField -> { return !tableField.getOriginName().equalsIgnoreCase("dataease_uuid"); }).collect(Collectors.toList()); @@ -754,7 +760,8 @@ public class DatasourceServer implements DatasourceApi { datasourceRequest.setDsList(Map.of(datasourceSchemaDTO.getId(), datasourceSchemaDTO)); datasourceRequest.setQuery(TableUtils.tableName2Sql(datasourceSchemaDTO, tableName) + " LIMIT 0 OFFSET 0"); datasourceRequest.setTable(tableName); - return (List) calciteProvider.fetchTableField(datasourceRequest); + Provider provider = ProviderFactory.getProvider(datasourceSchemaDTO.getType()); + return (List) provider.fetchTableField(datasourceRequest); } @Override