fix: 识别doris版本
This commit is contained in:
parent
c735f70903
commit
c8fb6d1feb
@ -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);
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -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(",`");
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user