forked from github/dataease
feat(数据集): SQL片段支持注释 #11546
This commit is contained in:
parent
d8ce0db98d
commit
79e28c86cd
@ -112,7 +112,8 @@ public class DatasetDataManage {
|
||||
sql = provider.transSqlDialect(sql, datasourceRequest.getDsList());
|
||||
} else {
|
||||
// parser sql params and replace default value
|
||||
String originSql = SqlparserUtils.handleVariableDefaultValue(new String(Base64.getDecoder().decode(tableInfoDTO.getSql())), datasetTableDTO.getSqlVariableDetails(), false, false, null, false, datasourceRequest.getDsList(), pluginManage);
|
||||
String originSql = provider.replaceComment(new String(Base64.getDecoder().decode(tableInfoDTO.getSql())));
|
||||
originSql = SqlparserUtils.handleVariableDefaultValue(originSql, datasetTableDTO.getSqlVariableDetails(), false, false, null, false, datasourceRequest.getDsList(), pluginManage);
|
||||
// add sql table schema
|
||||
|
||||
sql = SQLUtils.buildOriginPreviewSql(SqlPlaceholderConstants.TABLE_PLACEHOLDER, 0, 0);
|
||||
@ -344,13 +345,16 @@ public class DatasetDataManage {
|
||||
dsMap.put(datasourceSchemaDTO.getId(), datasourceSchemaDTO);
|
||||
DatasourceRequest datasourceRequest = new DatasourceRequest();
|
||||
datasourceRequest.setDsList(dsMap);
|
||||
Provider provider = ProviderFactory.getProvider(datasourceSchemaDTO.getType());
|
||||
|
||||
// parser sql params and replace default value
|
||||
String originSql = SqlparserUtils.handleVariableDefaultValue(datasetSQLManage.subPrefixSuffixChar(new String(Base64.getDecoder().decode(dto.getSql()))), dto.getSqlVariableDetails(), true, true, null, false, dsMap, pluginManage);
|
||||
|
||||
String originSql = provider.replaceComment(new String(Base64.getDecoder().decode(dto.getSql())));
|
||||
originSql = SqlparserUtils.handleVariableDefaultValue(datasetSQLManage.subPrefixSuffixChar(originSql), dto.getSqlVariableDetails(), true, true, null, false, dsMap, pluginManage);
|
||||
|
||||
// sql 作为临时表,外层加上limit
|
||||
String sql;
|
||||
Provider provider = ProviderFactory.getProvider(datasourceSchemaDTO.getType());
|
||||
|
||||
if (Utils.isNeedOrder(List.of(datasourceSchemaDTO.getType()))) {
|
||||
// 先根据sql获取表字段
|
||||
String sqlField = SQLUtils.buildOriginPreviewSql(SqlPlaceholderConstants.TABLE_PLACEHOLDER, 0, 0);
|
||||
|
@ -19,7 +19,9 @@ import io.dataease.extensions.datasource.dto.DatasetTableDTO;
|
||||
import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO;
|
||||
import io.dataease.extensions.datasource.dto.DatasourceSchemaDTO;
|
||||
import io.dataease.extensions.datasource.dto.DsTypeDTO;
|
||||
import io.dataease.extensions.datasource.factory.ProviderFactory;
|
||||
import io.dataease.extensions.datasource.model.SQLObj;
|
||||
import io.dataease.extensions.datasource.provider.Provider;
|
||||
import io.dataease.extensions.datasource.vo.DatasourceConfiguration;
|
||||
import io.dataease.extensions.datasource.vo.XpackPluginsDatasourceVO;
|
||||
import io.dataease.extensions.view.dto.ChartExtFilterDTO;
|
||||
@ -430,8 +432,10 @@ public class DatasetSQLManage {
|
||||
if (StringUtils.equalsIgnoreCase(currentDs.getType(), DatasetTableTypeConstants.DATASET_TABLE_DB)) {
|
||||
tableObj = SQLObj.builder().tableSchema(tableSchema).tableName(infoDTO.getTable()).tableAlias(tableAlias).build();
|
||||
} else if (StringUtils.equalsIgnoreCase(currentDs.getType(), DatasetTableTypeConstants.DATASET_TABLE_SQL)) {
|
||||
Provider provider = ProviderFactory.getProvider(dsMap.entrySet().iterator().next().getValue().getType());
|
||||
// parser sql params and replace default value
|
||||
String sql = SqlparserUtils.handleVariableDefaultValue(new String(Base64.getDecoder().decode(infoDTO.getSql())), currentDs.getSqlVariableDetails(), false, isFromDataSet, parameters, isCross, dsMap, pluginManage);
|
||||
String sql = provider.replaceComment(new String(Base64.getDecoder().decode(infoDTO.getSql())));
|
||||
sql = SqlparserUtils.handleVariableDefaultValue(sql, currentDs.getSqlVariableDetails(), false, isFromDataSet, parameters, isCross, dsMap, pluginManage);
|
||||
// add table schema
|
||||
if (isCross) {
|
||||
sql = SqlUtils.addSchema(sql, tableSchema);
|
||||
|
@ -180,6 +180,11 @@ public abstract class Provider {
|
||||
return s;
|
||||
}
|
||||
|
||||
public String replaceComment(String s) {
|
||||
String regex = "/\\*[\\s\\S]*?\\*/|-- .*";
|
||||
return s.replaceAll(regex, " ");
|
||||
}
|
||||
|
||||
public SqlDialect getDialect(DatasourceSchemaDTO coreDatasource) {
|
||||
SqlDialect sqlDialect = null;
|
||||
DatasourceConfiguration.DatasourceType datasourceType = DatasourceConfiguration.DatasourceType.valueOf(coreDatasource.getType());
|
||||
|
Loading…
Reference in New Issue
Block a user