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

fix: 定时同步任务支持在历史数据变动后增量更新到doris中 #6276
This commit is contained in:
taojinlong 2024-01-24 15:57:11 +08:00 committed by GitHub
commit 8be2aeb67b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -63,15 +63,15 @@ public class DorisDDLProvider extends DDLProviderImpl {
} }
} }
sql = sql.replace("`UNIQUE_KEY`", "`" + String.join("`, `", keys) + "`") sql = sql.replace("`UNIQUE_KEY`", "`" + String.join("`, `", keys) + "`")
.replace("DISTRIBUTED_BY_HASH", keys.get(0)).replace("Column_Fields", createDorisTableColumnSql(datasetTableFields, version)); .replace("DISTRIBUTED_BY_HASH", keys.get(0)).replace("Column_Fields", createDorisTableColumnSql(datasetTableFields, version, keys));
} else { } else {
sql = sql.replace("UNIQUE_KEY", "dataease_uuid").replace("DISTRIBUTED_BY_HASH", "dataease_uuid").replace("Column_Fields", createDorisTableColumnSql(datasetTableFields, version)); sql = sql.replace("UNIQUE_KEY", "dataease_uuid").replace("DISTRIBUTED_BY_HASH", "dataease_uuid").replace("Column_Fields", createDorisTableColumnSql(datasetTableFields, version, null));
} }
return sql; return sql;
} }
private String createDorisTableColumnSql(final List<DatasetTableField> datasetTableFields, String version) { private String createDorisTableColumnSql(final List<DatasetTableField> datasetTableFields, String version, List<String> keys) {
StringBuilder Column_Fields = new StringBuilder("`"); StringBuilder Column_Fields = new StringBuilder("`");
for (DatasetTableField datasetTableField : datasetTableFields) { for (DatasetTableField datasetTableField : datasetTableFields) {
Column_Fields.append(datasetTableField.getDataeaseName()).append("` "); Column_Fields.append(datasetTableField.getDataeaseName()).append("` ");
@ -81,11 +81,14 @@ public class DorisDDLProvider extends DDLProviderImpl {
} }
switch (datasetTableField.getDeExtractType()) { switch (datasetTableField.getDeExtractType()) {
case 0: case 0:
Column_Fields.append("STRING".replace("length", String.valueOf(size))).append(",`"); if (size <= 65533 || (keys != null && keys.contains(datasetTableField.getDataeaseName()))) {
Column_Fields.append("VARCHAR(length)".replace("length", String.valueOf(size))).append(",`");
} else {
Column_Fields.append("STRING".replace("length", String.valueOf(size))).append(",`");
}
break; break;
case 1: case 1:
size = size < 50 ? 50 : size; Column_Fields.append("DATETIME").append(",`");
Column_Fields.append("STRING".replace("length", String.valueOf(size))).append(",`");
break; break;
case 2: case 2:
Column_Fields.append("bigint").append(",`"); Column_Fields.append("bigint").append(",`");
@ -99,7 +102,7 @@ public class DorisDDLProvider extends DDLProviderImpl {
} }
} else { } else {
Column_Fields.append("DOUBLE").append(",`"); Column_Fields.append("DECIMAL(27,8)").append(",`");
} }
break; break;
case 4: case 4: