Merge pull request #7231 from dataease/pr@dev@fixSql

Pr@dev@fix sql
This commit is contained in:
taojinlong 2023-12-20 01:13:48 -06:00 committed by GitHub
commit 6c34b94799
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 21 additions and 11 deletions

View File

@ -11,6 +11,7 @@ import io.dataease.plugins.common.base.domain.DeDriverDetails;
import io.dataease.plugins.common.dto.datasource.DataSourceType;
import io.dataease.plugins.common.exception.DataEaseException;
import io.dataease.plugins.common.util.SpringContextUtil;
import io.dataease.service.datasource.DatasourceService;
import io.dataease.service.datasource.DriverService;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@ -32,6 +33,8 @@ public class DriverMgmController {
@Resource
private DriverService driverService;
@Resource
private DatasourceService datasourceService;
@RequiresPermissions("datasource:read")
@ApiOperation("驱动列表")
@ -64,7 +67,7 @@ public class DriverMgmController {
driverDTO.setId("default");
driverDTO.setName("default");
driverDTO.setDriverClass("default");
SpringContextUtil.getApplicationContext().getBeansOfType(DataSourceType.class).values().forEach(dataSourceType -> {
datasourceService.types().forEach(dataSourceType -> {
if (dataSourceType.getType().equalsIgnoreCase(type)) {
driverDTO.setSurpportVersions(dataSourceType.getSurpportVersions());
}

View File

@ -18,7 +18,7 @@ public abstract class DDLProvider {
public abstract String replaceTable(String name);
public abstract String createTableSql(String name, List<DatasetTableField> datasetTableFields, Datasource engine);
public abstract String createTableSql(String name, List<DatasetTableField> datasetTableFields, Datasource engine, String version);
public abstract String insertSql(String name, List<String[]> dataList, int page, int pageNumber);
}

View File

@ -30,7 +30,7 @@ public class DDLProviderImpl extends DDLProvider {
}
@Override
public String createTableSql(String name, List<DatasetTableField> datasetTableFields, Datasource engine) {
public String createTableSql(String name, List<DatasetTableField> datasetTableFields, Datasource engine, String version) {
return null;
}

View File

@ -44,15 +44,15 @@ public class DorisDDLProvider extends DDLProviderImpl {
}
@Override
public String createTableSql(String tableName, List<DatasetTableField> datasetTableFields, Datasource engine) {
public String createTableSql(String tableName, List<DatasetTableField> datasetTableFields, Datasource engine, String version) {
DorisConfiguration dorisConfiguration = new Gson().fromJson(engine.getConfiguration(), DorisConfiguration.class);
String dorisTableColumnSql = createDorisTableColumnSql(datasetTableFields);
String dorisTableColumnSql = createDorisTableColumnSql(datasetTableFields, version);
return creatTableSql.replace("TABLE_NAME", tableName).replace("Column_Fields", dorisTableColumnSql)
.replace("BUCKETS_NUM", dorisConfiguration.getBucketNum().toString())
.replace("ReplicationNum", dorisConfiguration.getReplicationNum().toString());
}
private String createDorisTableColumnSql(final List<DatasetTableField> datasetTableFields) {
private String createDorisTableColumnSql(final List<DatasetTableField> datasetTableFields, String version) {
StringBuilder Column_Fields = new StringBuilder("dataease_uuid varchar(50), `");
for (DatasetTableField datasetTableField : datasetTableFields) {
Column_Fields.append(datasetTableField.getDataeaseName()).append("` ");
@ -73,7 +73,12 @@ public class DorisDDLProvider extends DDLProviderImpl {
break;
case 3:
if(datasetTableField.getType().equalsIgnoreCase("DECIMAL") && datasetTableField.getAccuracy() != 0){
Column_Fields.append("DecimalV3(" + datasetTableField.getSize() + "," + datasetTableField.getAccuracy() + ")").append(",`");
if(Integer.valueOf(version.split("5.7.")[1]) < 99){
Column_Fields.append("DECIMAL(" + datasetTableField.getSize() + "," + datasetTableField.getAccuracy() + ")").append(",`");
}else {
Column_Fields.append("DecimalV3(" + datasetTableField.getSize() + "," + datasetTableField.getAccuracy() + ")").append(",`");
}
}else {
Column_Fields.append("DOUBLE").append(",`");
}

View File

@ -71,7 +71,7 @@ public class MysqlDDLProvider extends DDLProviderImpl {
}
@Override
public String createTableSql(String tableName, List<DatasetTableField> datasetTableFields, Datasource engine) {
public String createTableSql(String tableName, List<DatasetTableField> datasetTableFields, Datasource engine, String version) {
String dorisTableColumnSql = createDorisTableColumnSql(datasetTableFields);
return creatTableSql.replace("TABLE_NAME", tableName).replace("Column_Fields", dorisTableColumnSql);
}

View File

@ -1450,7 +1450,7 @@ public class SqlserverQueryProvider extends QueryProvider {
String whereValue = "";
if (StringUtils.containsIgnoreCase(request.getOperator(), "in")) {
if (request.getDatasetTableField() != null && request.getDatasetTableField().getType().equalsIgnoreCase("NVARCHAR")) {
if ((request.getDatasetTableField() != null && request.getDatasetTableField().getType().equalsIgnoreCase("NVARCHAR")) || (request.getDatasetTableFieldList() != null && request.getDatasetTableFieldList().stream().map(DatasetTableField::getType).collect(Collectors.toList()).contains("nvarchar"))) {
whereValue = "(" + value.stream().map(str -> {
return "N" + "'" + str + "'";
}).collect(Collectors.joining(",")) + ")";
@ -1472,7 +1472,7 @@ public class SqlserverQueryProvider extends QueryProvider {
}
} else {
if (request.getDatasetTableField() != null && request.getDatasetTableField().getType().equalsIgnoreCase("NVARCHAR")) {
if ((request.getDatasetTableField() != null && request.getDatasetTableField().getType().equalsIgnoreCase("NVARCHAR")) || (request.getDatasetTableFieldList() != null && request.getDatasetTableFieldList().stream().map(DatasetTableField::getType).collect(Collectors.toList()).contains("nvarchar"))) {
whereValue = String.format(SqlServerSQLConstants.WHERE_VALUE_VALUE_CH, value.get(0));
} else {
whereValue = String.format(SqlServerSQLConstants.WHERE_VALUE_VALUE, value.get(0));

View File

@ -646,8 +646,10 @@ public class ExtractDataService {
JdbcProvider jdbcProvider = CommonBeanFactory.getBean(JdbcProvider.class);
DatasourceRequest datasourceRequest = new DatasourceRequest();
datasourceRequest.setDatasource(engine);
datasourceRequest.setQuery("mysql> SELECT VERSION();");
String version = jdbcProvider.getData(datasourceRequest).get(0)[0];
DDLProvider ddlProvider = ProviderFactory.getDDLProvider(engine.getType());
datasourceRequest.setQuery(ddlProvider.createTableSql(tableName, datasetTableFields, engine));
datasourceRequest.setQuery(ddlProvider.createTableSql(tableName, datasetTableFields, engine, version));
jdbcProvider.exec(datasourceRequest);
}