diff --git a/core/backend/src/main/java/io/dataease/provider/DDLProvider.java b/core/backend/src/main/java/io/dataease/provider/DDLProvider.java index 3b50208ba5..84190d5106 100644 --- a/core/backend/src/main/java/io/dataease/provider/DDLProvider.java +++ b/core/backend/src/main/java/io/dataease/provider/DDLProvider.java @@ -18,7 +18,7 @@ public abstract class DDLProvider { public abstract String replaceTable(String name); - public abstract String createTableSql(String name, List datasetTableFields, Datasource engine); + public abstract String createTableSql(String name, List datasetTableFields, Datasource engine, String version); public abstract String insertSql(String name, List dataList, int page, int pageNumber); } diff --git a/core/backend/src/main/java/io/dataease/provider/DDLProviderImpl.java b/core/backend/src/main/java/io/dataease/provider/DDLProviderImpl.java index 63fbc57589..4c42a3ce7b 100644 --- a/core/backend/src/main/java/io/dataease/provider/DDLProviderImpl.java +++ b/core/backend/src/main/java/io/dataease/provider/DDLProviderImpl.java @@ -30,7 +30,7 @@ public class DDLProviderImpl extends DDLProvider { } @Override - public String createTableSql(String name, List datasetTableFields, Datasource engine) { + public String createTableSql(String name, List datasetTableFields, Datasource engine, String version) { return null; } diff --git a/core/backend/src/main/java/io/dataease/provider/engine/doris/DorisDDLProvider.java b/core/backend/src/main/java/io/dataease/provider/engine/doris/DorisDDLProvider.java index 011eb80edc..3fd4ca4802 100644 --- a/core/backend/src/main/java/io/dataease/provider/engine/doris/DorisDDLProvider.java +++ b/core/backend/src/main/java/io/dataease/provider/engine/doris/DorisDDLProvider.java @@ -44,15 +44,15 @@ public class DorisDDLProvider extends DDLProviderImpl { } @Override - public String createTableSql(String tableName, List datasetTableFields, Datasource engine) { + public String createTableSql(String tableName, List 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 datasetTableFields) { + private String createDorisTableColumnSql(final List 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(",`"); } diff --git a/core/backend/src/main/java/io/dataease/provider/engine/mysql/MysqlDDLProvider.java b/core/backend/src/main/java/io/dataease/provider/engine/mysql/MysqlDDLProvider.java index 7ed47d27ef..f1418aa5c4 100644 --- a/core/backend/src/main/java/io/dataease/provider/engine/mysql/MysqlDDLProvider.java +++ b/core/backend/src/main/java/io/dataease/provider/engine/mysql/MysqlDDLProvider.java @@ -71,7 +71,7 @@ public class MysqlDDLProvider extends DDLProviderImpl { } @Override - public String createTableSql(String tableName, List datasetTableFields, Datasource engine) { + public String createTableSql(String tableName, List datasetTableFields, Datasource engine, String version) { String dorisTableColumnSql = createDorisTableColumnSql(datasetTableFields); return creatTableSql.replace("TABLE_NAME", tableName).replace("Column_Fields", dorisTableColumnSql); } diff --git a/core/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java b/core/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java index 2ec966dcd6..21609407cf 100644 --- a/core/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java +++ b/core/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java @@ -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); }