diff --git a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java index 8f2efbe720..6473127af4 100644 --- a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java +++ b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java @@ -74,6 +74,11 @@ public class DataSetTableService { public DatasetTable save(DatasetTable datasetTable) throws Exception { checkName(datasetTable); + if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "sql")) { + DataSetTableRequest dataSetTableRequest = new DataSetTableRequest(); + BeanUtils.copyBean(dataSetTableRequest, datasetTable); + getSQLPreview(dataSetTableRequest); + } if (StringUtils.isEmpty(datasetTable.getId())) { datasetTable.setId(UUID.randomUUID().toString()); datasetTable.setCreateBy(AuthUtils.getUser().getUsername()); @@ -320,6 +325,10 @@ public class DataSetTableService { DatasourceRequest datasourceRequest = new DatasourceRequest(); datasourceRequest.setDatasource(ds); String sql = new Gson().fromJson(dataSetTableRequest.getInfo(), DataTableInfoDTO.class).getSql(); + // 使用输入的sql先预执行一次 + datasourceRequest.setQuery(sql); + datasourceProvider.fetchResultAndField(datasourceRequest); + // 正式执行 datasourceRequest.setQuery("SELECT * FROM (" + sql + ") AS tmp LIMIT 0,1000"); Map result = datasourceProvider.fetchResultAndField(datasourceRequest); List data = result.get("dataList");