Skip to content

Commit 34eacc2

Browse files
authored
[Fix-3478][CDCSOURCE] Fix Oracle CDC could not deal with the date and number type properly (#3562)
Co-authored-by: wenmo <32723967+wenmo@users.noreply.github.com>
1 parent 8b9bfd1 commit 34eacc2

File tree

3 files changed

+4
-2
lines changed

3 files changed

+4
-2
lines changed

dinky-cdc/dinky-cdc-core/src/main/java/org/dinky/cdc/AbstractSinkBuilder.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -404,7 +404,7 @@ protected Optional<Object> convertBigIntType(Object value, LogicalType logicalTy
404404
return Optional.of(((Integer) value).longValue());
405405
}
406406

407-
return Optional.of(value);
407+
return Optional.of(Long.parseLong(value.toString()));
408408
}
409409
return Optional.empty();
410410
}
@@ -484,7 +484,7 @@ protected Optional<Object> convertTimeType(Object target, LogicalType logicalTyp
484484

485485
protected Optional<Object> convertVarCharType(Object target, LogicalType logicalType) {
486486
if (logicalType instanceof VarCharType) {
487-
return Optional.of(StringData.fromString((String) target));
487+
return Optional.of((String) target);
488488
}
489489
return Optional.empty();
490490
}

dinky-cdc/dinky-cdc-core/src/main/java/org/dinky/cdc/sql/SQLSinkBuilder.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ private SQLSinkBuilder(FlinkCDCConfig config) {
5858
@Override
5959
protected void initTypeConverterList() {
6060
typeConverterList = Arrays.asList(
61+
this::convertVarCharType,
6162
this::convertDateType,
6263
this::convertTimestampType,
6364
this::convertFloatType,

dinky-metadata/dinky-metadata-base/src/main/java/org/dinky/metadata/convert/AbstractTypeConvert.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ public ColumnType convert(Column column, DriverConfig<T> driverConfig) {
4848
if (Asserts.isNull(column)) {
4949
return ColumnType.STRING;
5050
}
51+
column.setType(column.getType().toLowerCase());
5152
for (Map.Entry<String, BiFunction<Column, DriverConfig<T>, Optional<ColumnType>>> entry :
5253
convertMap.entrySet()) {
5354
if (column.getType().contains(entry.getKey())) {

0 commit comments

Comments
 (0)