pingcap / pingcap/tidb

When ticdc collects binlog to Kafka, decimal precision is lost.

Open
#64,864 3 comments 0 reactions 0 assignees View on GitHub
component/ticdc contribution first-time-contributor may-affects-7.1 may-affects-7.5 may-affects-8.1 may-affects-8.5 severity/major type/bug
Dominant language
Go
Stars
40.5k
Forks
6.2k
PR merge metrics
PR metrics pending

Description

## Bug Report

Please answer these questions before submitting your issue. Thanks!

### 1. Minimal reproduce step (Required)

### 2. What did you expect to see? (Required)

### 3. What did you see instead (Required)

### 4. What is your TiDB version? (Required)

详细内容在论坛这里

https://asktug.com/t/topic/1049923/5

ticdc 采集binlog到kafka,推断源码精度是按照float转的,无法保留精度

Image

Image

上游是业务库,很多涉及金额的字段,也不能改业务库的金额为string类型

ticdc同步到kafka,精度已经丢失,下游无法恢复精度。虽然这种精度丢的很小。原则上影响不大

但是ticdc集成demezium的配置貌似是把decimal转为float来出来,对位数很长的数,会精度丢失,另外float可能精度不准,1变成0.99999999这种,影响业务和测试理解

期望是
1, 能不能通过调整flink cdc的源码来使用decimal.handling.mode=string逻辑来控制数据转换逻辑
2, 未来能否开放或封装debezium的原生配置作为ticdc的配置,从而用户可以更灵活的使用原生参数,控制写出数据的行为
3, 未来能否想flink cdc mysql 一样,对时间类型做封装。目前ticdc对time,datetime,date,timestamp的处理是debezium原生的处理方式,需要用户自行转换,才能变成需要的值

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.