Skip to content

Commit c195d43

Browse files
authored
Merge pull request #517 from tapdata/TAP-6473
fix: TAP-6473 doris add apply default switch
2 parents 33414e2 + 183ceb9 commit c195d43

File tree

3 files changed

+57
-1
lines changed

3 files changed

+57
-1
lines changed

connectors/doris-connector/src/main/java/io/tapdata/connector/doris/DorisConnector.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ public void onStart(TapConnectionContext tapConnectionContext) {
7676
commonDbConfig = dorisConfig;
7777
jdbcContext = dorisJdbcContext;
7878
commonSqlMaker = new DorisSqlMaker();
79+
commonSqlMaker.applyDefault(commonDbConfig.getApplyDefault());
7980
exceptionCollector = new DorisExceptionCollector();
8081
fieldDDLHandlers = new BiClassHandlers<>();
8182
fieldDDLHandlers.register(TapNewFieldEvent.class, this::newField);

connectors/doris-connector/src/main/java/io/tapdata/connector/doris/DorisSqlMaker.java

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package io.tapdata.connector.doris;
22

33
import io.tapdata.common.CommonSqlMaker;
4+
import io.tapdata.connector.mysql.bean.MysqlColumn;
45
import io.tapdata.entity.schema.TapField;
56
import io.tapdata.entity.schema.TapTable;
67
import io.tapdata.kit.EmptyKit;
8+
import io.tapdata.kit.StringKit;
79

810
import java.util.*;
911
import java.util.stream.Collectors;
@@ -31,9 +33,35 @@ public String buildColumnDefinitionByOrder(TapTable tapTable, Collection<String>
3133
builder.append("REPLACE_IF_NOT_NULL ");
3234
}
3335
buildNullDefinition(builder, tapField);
34-
buildDefaultDefinition(builder, tapField);
36+
if (Boolean.TRUE.equals(applyDefault)) {
37+
buildDefaultDefinition(builder, tapField);
38+
}
3539
buildCommentDefinition(builder, tapField);
3640
return builder.toString();
3741
}).collect(Collectors.joining(", "));
3842
}
43+
44+
protected void buildDefaultDefinition(StringBuilder builder, TapField tapField) {
45+
if (EmptyKit.isNotNull(tapField.getDefaultValue())) {
46+
builder.append("DEFAULT").append(' ');
47+
if (EmptyKit.isNotNull(tapField.getDefaultFunction())) {
48+
String function = MysqlColumn.MysqlDefaultFunction.valueOf(tapField.getDefaultFunction().toString()).getFunction();
49+
if (function.endsWith("()")) {
50+
builder.append("(").append(function).append(") ");
51+
} else {
52+
builder.append(function).append(' ');
53+
}
54+
} else if (tapField.getDefaultValue() instanceof Number) {
55+
builder.append(tapField.getDefaultValue()).append(' ');
56+
} else {
57+
if ("json".equals(tapField.getDataType()) || "longtext".equals(tapField.getDataType())) {
58+
builder.append("(").append(tapField.getDefaultValue().toString().replace("\\", "")).append(") ");
59+
} else {
60+
builder.append("'").append(StringKit.escape(tapField.getDefaultValue().toString(), "'")).append("' ");
61+
}
62+
}
63+
} else if (Boolean.TRUE.equals(tapField.getNullable()) && "timestamp".equals(tapField.getDataType())) {
64+
builder.append("DEFAULT NULL ");
65+
}
66+
}
3967
}

connectors/doris-connector/src/main/resources/spec_doris.json

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -495,6 +495,27 @@
495495
"value": "csv"
496496
}
497497
]
498+
},
499+
"applyDefault": {
500+
"type": "boolean",
501+
"title": "${applyDefault}",
502+
"default": false,
503+
"x-index": 8,
504+
"x-decorator": "FormItem",
505+
"x-component": "Switch",
506+
"x-decorator-props": {
507+
"tooltip": "${applyDefaultTooltip}"
508+
},
509+
"x-reactions": [
510+
{
511+
"dependencies": ["$inputs"],
512+
"fulfill": {
513+
"state": {
514+
"display": "{{$deps[0].length > 0 ? \"visible\":\"hidden\"}}"
515+
}
516+
}
517+
}
518+
]
498519
}
499520
}
500521
}
@@ -519,6 +540,8 @@
519540
"timezone": "Timezone for Datetime",
520541
"timezoneTips": "Affect Type: DATE",
521542
"writeByteBufferCapacity": "Write buffer capacity(KB)",
543+
"applyDefault": "Apply default value",
544+
"applyDefaultTooltip": "When the switch is turned on, the default value will be applied to the target. If there are unadapted functions or expressions, it may cause an error",
522545
"writeFormat": "Write format",
523546
"doc": "docs/readme_en_US.md",
524547
"duplicateKey": "duplicateKey",
@@ -555,6 +578,8 @@
555578
"timezone": "时间类型的时区",
556579
"timezoneTips": "影响类型: DATE",
557580
"writeByteBufferCapacity": "写入缓冲区容量(KB)",
581+
"applyDefault": "应用默认值",
582+
"applyDefaultTooltip": "开关打开时会将默认值应用到目标,如果有未适配的函数或表达式,可能会导致报错",
558583
"writeFormat": "写入格式",
559584
"doc": "docs/readme_zh_CN.md",
560585
"duplicateKey": "排序字段",
@@ -591,6 +616,8 @@
591616
"timezone": "时间类型的时区",
592617
"timezoneTips": "影響類型: DATE",
593618
"writeByteBufferCapacity": "寫入緩沖區容量(KB)",
619+
"applyDefault": "應用默認值",
620+
"applyDefaultTooltip": "開關打開時會將默認值應用到目標,如果有未適配的函數或表達式,可能會導致報錯",
594621
"writeFormat": "寫入格式",
595622
"doc": "docs/readme_zh_CN.md",
596623
"duplicateKey": "排序字段",

0 commit comments

Comments
 (0)