Skip to content

v8.5: update TiCDC Debezium DDL, WATERMARK support - #21885

Merged
ti-chi-bot[bot] merged 3 commits into
pingcap:release-8.5from
lilin90:ticdc-debezium-update
Aug 14, 2026
Merged

v8.5: update TiCDC Debezium DDL, WATERMARK support#21885
ti-chi-bot[bot] merged 3 commits into
pingcap:release-8.5from
lilin90:ticdc-debezium-update

Conversation

@lilin90

@lilin90 lilin90 commented Aug 14, 2026

Copy link
Copy Markdown
Member

What is changed, added or deleted? (Required)

Updated the TiCDC Debezium support for DDL, WATERMARK events in new and classic TiCDC architectures.

Which TiDB version(s) do your changes apply to? (Required)

Tips for choosing the affected version(s):

By default, CHOOSE MASTER ONLY so your changes will be applied to the next TiDB major or minor releases. If your PR involves a product feature behavior change or a compatibility change, CHOOSE THE AFFECTED RELEASE BRANCH(ES) AND MASTER.

For details, see tips for choosing the affected versions (in Chinese).

  • master (the latest development version)
  • v9.0 (TiDB 9.0 versions)
  • v8.5 (TiDB 8.5 versions)
  • v8.1 (TiDB 8.1 versions)
  • v7.5 (TiDB 7.5 versions)
  • v7.1 (TiDB 7.1 versions)
  • v6.5 (TiDB 6.5 versions)

What is the related PR or file link(s)?

AI agent involvement

  • The changes in this PR were primarily made by an AI agent on behalf of the PR author.

Do your changes match any of the following descriptions?

  • Delete files
  • Change aliases
  • Need modification after applied to another branch
  • Might cause conflicts after applied to another branch

Summary by CodeRabbit

  • 文档
    • 全面更新 TiCDC Debezium Protocol 文档,补充新旧架构支持差异及 newarch 配置说明。
    • 新增 DDL、DML 和 WATERMARK 事件的消息格式、Schema、示例及字段说明。
    • 补充表结构变更、字段语义和固定操作码等协议细节。
    • 更新 TiCDC 与原生 Debezium 在多种数据类型及默认值处理方面的差异说明。

@lilin90 lilin90 self-assigned this Aug 14, 2026
@lilin90 lilin90 added translation/from-docs This PR is translated from a PR in pingcap/docs. ONCALL Relates to documentation oncall. area/ticdc Indicates that the Issue or PR belongs to the area of TiCDC. labels Aug 14, 2026
@lilin90 lilin90 changed the title v8.5: update TiCDC Debezium DDL, WATERMARK support- #23524 v8.5: update TiCDC Debezium DDL, WATERMARK support Aug 14, 2026
@ti-chi-bot ti-chi-bot Bot added the size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. label Aug 14, 2026
@coderabbitai

coderabbitai Bot commented Aug 14, 2026

Copy link
Copy Markdown

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 778003e9-34e6-4eb7-8545-a897b7c3bec3

📥 Commits

Reviewing files that changed from the base of the PR and between eb7d3fe and 7e9dd97.

📒 Files selected for processing (1)
  • ticdc/ticdc-debezium.md

📝 Walkthrough

Walkthrough

文档扩展 TiCDC Debezium Protocol 说明,覆盖新旧架构支持差异、DDL、DML 和 WATERMARK 事件格式、schema 定义、字段语义,以及 TiCDC 与原生 Debezium 的数据类型差异。

Changes

TiCDC Debezium 协议文档

Layer / File(s) Summary
协议范围与 DDL 事件
ticdc/ticdc-debezium.md
补充版本支持、newarch 配置及新旧架构差异。新增 DDL 事件的 Key、Value、schema 和表结构变更字段说明。
DML 事件消息定义
ticdc/ticdc-debezium.md
更新 DML Key 示例和字段定义。新增 Value 示例,说明 sourcebeforeafter、操作类型及事务字段。
WATERMARK 事件与类型差异
ticdc/ticdc-debezium.md
新增 WATERMARK 事件的消息结构、固定操作码 m 和 schema。补充 TiCDC 与原生 Debezium 在多种数据类型处理上的差异。

Estimated code review effort: 3 (Moderate) | ~20 minutes

Merge Risk: 🟡 Moderate · up to 7e9dd

The updated TiCDC Debezium examples describe payload fields that are not declared in their corresponding schemas, which can mislead users and break expectations for schemaful integrations. Correct the examples or explicitly accept this compatibility risk before merging.

Suggested reviewers: ti-chi-bot

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed 标题准确概括了 TiCDC Debezium DDL 和 WATERMARK 支持更新,并标明适用的 v8.5 版本。
Description check ✅ Passed 描述包含变更内容、适用版本、相关 PR 链接及模板要求的其他检查项,信息完整。
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 7


ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 73b07dfb-e517-4585-a25d-ec1fb231553f

📥 Commits

Reviewing files that changed from the base of the PR and between f85cecc and 255ba4a.

📒 Files selected for processing (1)
  • ticdc/ticdc-debezium.md

Comment thread ticdc/ticdc-debezium.md Outdated
Comment thread ticdc/ticdc-debezium.md
| `schema.fields` | JSON | `payload` 中各个字段的类型信息。 |
| `schema.type` | 字符串 | 字段类型。 |
| `schema.optional` | 布尔值 | 该字段是否为选填项。值为 `true` 表示该字段为选填项。 |
| `schema.version` | 字符串 | schema 的版本。 |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

修正 schema.version 的类型。

JSON 示例中的值是数值 1,但说明表将其标为字符串。请保持说明表与 JSON schema 一致。

可直接提交的替换
Suggested change
| `schema.version` | 字符串 | schema 的版本。 |
| `schema.version` | 数值 | schema 的版本。 |

As per path instructions:此文件匹配 **/*.md;可安全替换连续 diff 行的可操作问题必须使用 GitHub 可提交的 suggestion block。

Source: Path instructions

Comment thread ticdc/ticdc-debezium.md
Comment on lines +153 to +240
"fields": [
{
"field": "source",
"name": "io.debezium.connector.mysql.Source",
"optional": false,
"type": "struct",
"fields": [
{
"field": "version",
"optional": false,
"type": "string"
},
{
"field": "connector",
"optional": false,
"type": "string"
},
{
"field": "name",
"optional": false,
"type": "string"
},
{
"field": "ts_ms",
"optional": false,
"type": "int64"
},
{
"field": "snapshot",
"optional": true,
"type": "string",
"parameters": {
"allowed": "true,last,false,incremental"
},
"default": "false",
"name": "io.debezium.data.Enum",
"version": 1
},
{
"field": "db",
"optional": false,
"type": "string"
},
{
"field": "sequence",
"optional": true,
"type": "string"
},
{
"field": "table",
"optional": true,
"type": "string"
},
{
"field": "server_id",
"optional": false,
"type": "int64"
},
{
"field": "gtid",
"optional": true,
"type": "string"
},
{
"field": "file",
"optional": false,
"type": "string"
},
{
"field": "pos",
"optional": false,
"type": "int64"
},
{
"field": "row",
"optional": false,
"type": "int32"
},
{
"field": "thread",
"optional": true,
"type": "int64"
},
{
"field": "query",
"optional": true,
"type": "string"
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift

对齐三个事件的 source schema。

三个示例的 payload.source 都包含 commit_tscluster_id,但对应的 io.debezium.connector.mysql.Source schema 没有声明这两个字段。文档中的 payload 和 schema 因此不是同一个线协议。Schema 驱动的消费者可能丢弃或拒绝这两个 TiDB 扩展字段。

请在 DDL、DML 和 WATERMARK 的 Source schema 中补齐字段及其实际类型,或从 payload 示例中移除字段,并使用实际生成的消息验证。

As per path instructions:此问题跨越多个非连续位置,且需要以实际 wire contract 确认,因此使用普通 review comment。

Also applies to: 528-556, 658-746

Source: Path instructions

Comment thread ticdc/ticdc-debezium.md
Comment on lines +425 to +434
| `payload.tableChanges.table.primaryKeyColumnNames` | 字符串 | 组成表主键的列的名称列表。 |
| `payload.tableChanges.table.columns` | 数组 | 变更的表中每一列的元数据。 |
| `payload.tableChanges.table.columns.name` | 字符串 | 列的名称。 |
| `payload.tableChanges.table.columns.jdbcType` | 数值 | 列的 JDBC 类型。 |
| `payload.tableChanges.table.columns.comment` | 字符串 | 列的注释。 |
| `payload.tableChanges.table.columns.defaultValueExpression` | 字符串 | 列的默认值。 |
| `payload.tableChanges.table.columns.enumValues` | 字符串 | 列的枚举值。格式为 `['e1', 'e2']`。 |
| `payload.tableChanges.table.columns.charsetName` | 字符串 | 列的字符集。 |
| `payload.tableChanges.table.columns.length` | 数值 | 列的长度。 |
| `payload.tableChanges.table.columns.scale` | 数值 | 列的精度。 |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

修正 tableChanges 字段说明的类型和语义。

说明表与后面的 JSON 和 schema 不一致:

  • primaryKeyColumnNames 是字符串数组。
  • enumValues 是字符串数组。
  • scale 表示小数位数,不是精度。
可直接提交的替换
Suggested change
| `payload.tableChanges.table.primaryKeyColumnNames` | 字符串 | 组成表主键的列的名称列表。 |
| `payload.tableChanges.table.columns` | 数组 | 变更的表中每一列的元数据。 |
| `payload.tableChanges.table.columns.name` | 字符串 | 列的名称。 |
| `payload.tableChanges.table.columns.jdbcType` | 数值 | 列的 JDBC 类型。 |
| `payload.tableChanges.table.columns.comment` | 字符串 | 列的注释。 |
| `payload.tableChanges.table.columns.defaultValueExpression` | 字符串 | 列的默认值。 |
| `payload.tableChanges.table.columns.enumValues` | 字符串 | 列的枚举值。格式为 `['e1', 'e2']`|
| `payload.tableChanges.table.columns.charsetName` | 字符串 | 列的字符集。 |
| `payload.tableChanges.table.columns.length` | 数值 | 列的长度。 |
| `payload.tableChanges.table.columns.scale` | 数值 | 列的精度。 |
| `payload.tableChanges.table.primaryKeyColumnNames` | 字符串数组 | 组成表主键的列的名称列表。 |
Suggested change
| `payload.tableChanges.table.primaryKeyColumnNames` | 字符串 | 组成表主键的列的名称列表。 |
| `payload.tableChanges.table.columns` | 数组 | 变更的表中每一列的元数据。 |
| `payload.tableChanges.table.columns.name` | 字符串 | 列的名称。 |
| `payload.tableChanges.table.columns.jdbcType` | 数值 | 列的 JDBC 类型。 |
| `payload.tableChanges.table.columns.comment` | 字符串 | 列的注释。 |
| `payload.tableChanges.table.columns.defaultValueExpression` | 字符串 | 列的默认值。 |
| `payload.tableChanges.table.columns.enumValues` | 字符串 | 列的枚举值。格式为 `['e1', 'e2']`|
| `payload.tableChanges.table.columns.charsetName` | 字符串 | 列的字符集。 |
| `payload.tableChanges.table.columns.length` | 数值 | 列的长度。 |
| `payload.tableChanges.table.columns.scale` | 数值 | 列的精度。 |
| `payload.tableChanges.table.columns.enumValues` | 字符串数组 | 列的枚举值列表。格式为 `['e1', 'e2']`|
Suggested change
| `payload.tableChanges.table.primaryKeyColumnNames` | 字符串 | 组成表主键的列的名称列表。 |
| `payload.tableChanges.table.columns` | 数组 | 变更的表中每一列的元数据。 |
| `payload.tableChanges.table.columns.name` | 字符串 | 列的名称。 |
| `payload.tableChanges.table.columns.jdbcType` | 数值 | 列的 JDBC 类型。 |
| `payload.tableChanges.table.columns.comment` | 字符串 | 列的注释。 |
| `payload.tableChanges.table.columns.defaultValueExpression` | 字符串 | 列的默认值。 |
| `payload.tableChanges.table.columns.enumValues` | 字符串 | 列的枚举值。格式为 `['e1', 'e2']`|
| `payload.tableChanges.table.columns.charsetName` | 字符串 | 列的字符集。 |
| `payload.tableChanges.table.columns.length` | 数值 | 列的长度。 |
| `payload.tableChanges.table.columns.scale` | 数值 | 列的精度。 |
| `payload.tableChanges.table.columns.scale` | 数值 | 列的小数位数。 |

As per path instructions:此文件匹配 **/*.md;可安全替换连续 diff 行的可操作问题必须使用 GitHub 可提交的 suggestion block。

Source: Path instructions

Comment thread ticdc/ticdc-debezium.md
| `payload.tableChanges.table.columns.position` | 数值 | 列的位置。 |
| `payload.tableChanges.table.columns.optional` | 布尔值 | 是否为可选列。值为 `true` 表示为可选列。 |
| `schema.fields` | JSON | `payload` 每个字段的类型信息,包括变更表的列 schema 信息。 |
| `schema.name` | 字符串 | schema 的名称,格式为 `"{cluster-name}.{schema-name}.{table-name}.SchemaChangeValue"`。 |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -eu

file='ticdc/ticdc-debezium.md'
printf '%s\n' '--- target context ---'
sed -n '400,455p' "$file"

printf '%s\n' '--- schema.name references ---'
rg -n -C 3 'schema\.name|SchemaChangeValue|schemaName' "$file" ticdc 2>/dev/null || true

printf '%s\n' '--- repository references ---'
rg -n -C 2 'SchemaChangeValue|schema\.name' . --glob '!node_modules/**' --glob '!dist/**' --glob '!build/**' 2>/dev/null | head -300

Repository: pingcap/docs-cn

Length of output: 14119


🌐 Web query:

TiCDC Debezium schema.name SchemaChangeValue cluster-name schema-name table-name

💡 Result:

In the TiCDC Debezium protocol, the schema.name field follows a structured naming convention designed to uniquely identify the schema definition for different parts of the message [1][2][3]. The format is "{cluster-name}.{schema-name}.{table-name}.{suffix}", where the suffix indicates the specific type of the message payload [1][2][4]. The documented suffixes include: - SchemaChangeValue: Used when the schema information relates to DDL or schema change events [1][4]. - Envelope: Used for the primary DML event structure (the "wrapper" containing the operation type, source info, and data) [2][3]. - Key: Used specifically for the schema of the primary key or unique index columns within the payload [2][3]. In this format, {cluster-name} refers to the TiDB cluster identifier, {schema-name} refers to the upstream database name, and {table-name} refers to the table name where the event occurred [1][2][5]. This hierarchical naming allows downstream consumers to parse and map the Debezium-formatted messages back to the correct database and table structures [2][6].

Citations:


🌐 Web query:

site:github.com/pingcap/tiflow "SchemaChangeValue" "schema.name"

💡 Result:

The term SchemaChangeValue and the property schema.name do not appear together as a formal, documented API component in common technical frameworks. Based on technical documentation and codebases such as TiCDC (part of the TiFlow project), these terms appear in the context of specific internal structures: 1. Schema Handling: In projects like TiCDC, schema names are frequently handled as strings (often labeled schema.name or SchemaName) within data structures representing DDL (Data Definition Language) jobs or events [1]. 2. SchemaChange/Schema Value: The terminology "SchemaChange" often refers to internal events representing schema modifications (DDL operations like CREATE, ALTER, or DROP table/database) [2][1]. In this context, specific values associated with these events—such as the schema name, table name, query text, and timestamps—are stored in objects (often called DDL Jobs or Events) to track and replicate database state changes across distributed systems [2][1]. 3. Context: If you encountered this syntax in a specific configuration or code snippet, it is likely a reference to a field (schema.name) within an object or structure (like a SchemaChange or DDL event) used by a change data capture or database replication tool to identify the target database for a DDL operation [3][1]. If you are working with a specific software or library, please provide the name of the tool or the code snippet context for a more precise explanation.

Citations:


🏁 Script executed:

#!/bin/bash
set -eu

printf '%s\n' '--- document metadata and nearby examples ---'
sed -n '1,180p' ticdc/ticdc-debezium.md
sed -n '450,610p' ticdc/ticdc-debezium.md

printf '%s\n' '--- repository history metadata for the target line ---'
git status --short
git diff -- ticdc/ticdc-debezium.md
git log --oneline -8 -- ticdc/ticdc-debezium.md

Repository: pingcap/docs-cn

Length of output: 12816


🌐 Web query:

site:github.com/pingcap/tiflow "io.debezium.connector.mysql.SchemaChangeValue"

💡 Result:

io.debezium.connector.mysql.SchemaChangeValue is not a public or standard class name documented within the official Debezium project. References to similar strings in technical contexts (such as GitHub repositories) typically represent custom implementations, internal classes, or documentation naming conventions for schema change event structures within specific downstream connectors or integrations, rather than a core Debezium API class [1][2][3]. In the official Debezium architecture: 1. Schema Change Events: Debezium connectors emit schema change events to notify downstream consumers of database structure modifications (like CREATE, ALTER, or DROP table/database operations) [4]. 2. Event Structure: These events provide detailed, structured metadata about schema changes, sparing consumers from having to manually parse complex DDL statements [4]. The payload typically includes information such as the database name, schema name, the raw DDL statement, and a structured representation of table changes [3]. 3. Configuration and Usage: While Debezium emits these events, they are distinct from the internal "schema history" mechanisms (which use classes like io.debezium.storage.kafka.history.KafkaSchemaHistory to persist state) [5]. Consumers or transformations (such as SMTs or custom filters) may refer to schema change value structures, sometimes using internal or informal naming (e.g., filter.SchemaChangeValue) in documentation examples or custom codebases [3]. 4. Integration Contexts: The specific string you encountered is often seen in third-party integrations, such as TiCDC (TiDB Change Data Capture), where developers implement or reference custom schemas for mapping Debezium-formatted events to other systems [1][2]. For authoritative details on schema change handling, refer to the Debezium documentation on schema change topics and connectors [3][5][4].

Citations:


🌐 Web query:

site:github.com/pingcap/tiflow "SchemaChangeKey" "SchemaChangeValue"

💡 Result:

The terms "SchemaChangeKey" and "SchemaChangeValue" are not standard technical terms or public API constants in major software frameworks. Instead, they appear to be internal variables, enum members, or custom naming conventions used within the codebase of TiCDC (a component of the TiDB distributed database project) or similar event-driven data streaming systems [1][2][3]. In the context of data replication, schema change events often involve a structure that represents the mutation (the "change") and its associated metadata (the "key" or identifier of the schema object). Developers working with such systems may define structs or map keys named SchemaChangeKey and SchemaChangeValue to handle: 1. SchemaChangeKey: Typically represents the unique identifier or the structural path (e.g., database name, table name, or schema version ID) associated with a schema mutation [4][5]. 2. SchemaChangeValue: Represents the payload or the specific details of the schema change (e.g., the DDL statement, the modified table metadata, or the state before/after the change) [2][3]. These naming patterns are frequently found in test helpers or internal sink logic when serializing or debugging schema evolution events [1][3]. If you encountered these in a specific codebase, they are likely project-specific implementations rather than generic industry standards.

Citations:


🏁 Script executed:

#!/bin/bash
set -eu

api='https://api.github.com/repos/pingcap/tiflow/git/trees/master?recursive=1'
curl -fsSL "$api" |
  jq -r '.tree[] | select(.type == "blob" and (.path | test("debezium|Debezium"; "i"))) | .path' |
  head -200

Repository: pingcap/docs-cn

Length of output: 202


🏁 Script executed:

#!/bin/bash
set -eu

for url in \
  'https://github.com/pingcap/tiflow/commit/0e0b615a916230e6fa4ca1385f8ddafd0762f36c.patch' \
  'https://raw.githubusercontent.com/pingcap/tiflow/master/cdc/sink/codec/debezium/codec.go' \
  'https://raw.githubusercontent.com/pingcap/tiflow/master/cdc/sink/codec/debezium/debezium.go'
do
  printf '\n--- %s ---\n' "$url"
  curl -L --fail --silent --show-error "$url" |
    rg -n -C 4 'SchemaChange(Value|Key)|schema(Name)?|Envelope|cluster' |
    head -240 || true
done

Repository: pingcap/docs-cn

Length of output: 10028


🌐 Web query:

"test_cluster.test.table1.SchemaChangeValue" TiCDC

💡 Result:

In TiCDC, "SchemaChangeValue" is part of the naming convention for schema-related event metadata, specifically within the context of message protocols (such as Avro or Debezium) used when streaming data to downstream systems like Kafka [1]. When TiCDC replicates data, it serializes schema information to ensure downstream consumers can correctly interpret the data payload [1]. The identifier "test_cluster.test.table1.SchemaChangeValue" follows the naming pattern "{cluster-name}.{schema-name}.{table-name}.SchemaChangeValue," which serves as the "schema.name" property in the message metadata [1]. This field informs the downstream consumer about the structure and type information of the columns within the table being replicated, allowing the consumer to adapt to changes as the upstream table schema evolves [1][2]. TiCDC manages these schema changes by tracking versions and applying the correct schema snapshot to each event based on its commit timestamp [2]. This ensures that even in distributed environments where schema changes occur concurrently with data modifications (DML), the downstream system maintains a consistent view of the data [2].

Citations:


🌐 Web query:

"SchemaChangeValue" "test_cluster" TiCDC

💡 Result:

In the context of TiCDC, SchemaChangeValue refers to a specific component of the message schema used in the Debezium protocol [1][2]. Specifically, it is part of the naming convention for the schema name of a message, which typically follows the format {cluster-name}.{schema-name}.{table-name}.SchemaChangeValue [1]. The Debezium protocol in TiCDC allows TiCDC to integrate with systems that expect Debezium-formatted change data [1][3]. In this protocol, the schema of a message includes metadata about the changed data, and SchemaChangeValue identifies the structure of the schema change information associated with an event [1][4][2]. Regarding the term test_cluster, this is likely a placeholder or naming convention used in documentation or configuration examples for identifying the specific TiDB cluster from which data is being replicated [1]. When configuring TiCDC, you specify the cluster, and it is reflected in the event metadata to ensure that downstreams can correctly identify and process the source of the incoming change events [1][5].

Citations:


schema.name 说明改为固定名称

DDL 协议实际使用固定值 io.debezium.connector.mysql.SchemaChangeValue,不使用集群、数据库和表名拼接格式。

建议修改
Suggested change
| `schema.name` | 字符串 | schema 的名称,格式为 `"{cluster-name}.{schema-name}.{table-name}.SchemaChangeValue"`|
| `schema.name` | 字符串 | schema 的名称,固定为 `io.debezium.connector.mysql.SchemaChangeValue`|

Source: Path instructions

Comment thread ticdc/ticdc-debezium.md
| schema.optional | 布尔值 | optional 为 `true` 时表示该字段为选填项 |
| schema.type | 字符串 | 表示该字段的数据类型 |
| `payload` | JSON | 主键或唯一索引列的信息。每个字段的 key 和 value 分别为列名和当前值 |
| `schema.fields` | JSON | `payload` 中各个字段的类型信息,包括对应行数据变更前后 schema 的信息。 |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

分别描述 DML Key 和 WATERMARK 的 schema.fields

DML Key 只包含主键或唯一索引字段,不包含 beforeafter schema。WATERMARK 也没有行数据的 beforeafter。当前说明沿用了 DML Value 的描述。

可直接提交的替换
Suggested change
| `schema.fields` | JSON | `payload` 中各个字段的类型信息,包括对应行数据变更前后 schema 的信息|
| `schema.fields` | JSON | `payload` 中各个 Key 字段的类型信息|
Suggested change
| `schema.fields` | JSON | `payload` 中各个字段的类型信息,包括对应行数据变更前后 schema 的信息。 |
| `schema.fields` | JSON | `payload` 中各个字段的类型信息,包括 `source``op``ts_ms``transaction` |

As per path instructions:此文件匹配 **/*.md;可安全替换连续 diff 行的可操作问题必须使用 GitHub 可提交的 suggestion block。

Also applies to: 796-796

Source: Path instructions

Comment thread ticdc/ticdc-debezium.md

- TiCDC 将 REAL 转换为 DOUBLE;当长度为 1 时,将 BOOLEAN 转换为 TINYINT(1)。

- 在 TiCDC 中,BLOB、TEXT、GEOMETRY、JSON 列没有默认值。

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

移除与 TiDB 支持范围矛盾的 GEOMETRY 说明。

前文说明 TiDB 不支持 GEOMETRY,但此处又将其列为 TiCDC 的默认值处理差异。请删除该项或明确其不是 TiCDC 支持范围内的行为。

可直接提交的替换
Suggested change
- 在 TiCDC 中,BLOBTEXT、GEOMETRY、JSON 列没有默认值。
- 在 TiCDC 支持的数据类型中,`BLOB``TEXT``JSON` 列没有默认值。TiDB 不支持 `GEOMETRY`,因此本节不描述其默认值行为

As per path instructions:此文件匹配 **/*.md;可安全替换连续 diff 行的可操作问题必须使用 GitHub 可提交的 suggestion block。

Source: Path instructions

Comment thread ticdc/ticdc-debezium.md Outdated
Co-authored-by: Grace Cai <qqzczy@126.com>

@qiancai qiancai left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Rest LGTM

Comment thread ticdc/ticdc-debezium.md Outdated
Comment thread ticdc/ticdc-debezium.md Outdated
Comment thread ticdc/ticdc-debezium.md Outdated
Comment thread ticdc/ticdc-debezium.md Outdated
@ti-chi-bot ti-chi-bot Bot added the needs-1-more-lgtm Indicates a PR needs 1 more LGTM. label Aug 14, 2026
@ti-chi-bot

ti-chi-bot Bot commented Aug 14, 2026

Copy link
Copy Markdown

[LGTM Timeline notifier]

Timeline:

  • 2026-08-14 08:44:25.248277372 +0000 UTC m=+3381651.284372428: ☑️ agreed by qiancai.

Co-authored-by: Grace Cai <qqzczy@126.com>
@ti-chi-bot

ti-chi-bot Bot commented Aug 14, 2026

Copy link
Copy Markdown

@wk989898: adding LGTM is restricted to approvers and reviewers in OWNERS files.

Details

In response to this:

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@ti-chi-bot

ti-chi-bot Bot commented Aug 14, 2026

Copy link
Copy Markdown

@qiancai: Your lgtm message is repeated, so it is ignored.

Details

In response to this:

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@lilin90 lilin90 added the lgtm label Aug 14, 2026

@lilin90 lilin90 left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/approve

@ti-chi-bot

ti-chi-bot Bot commented Aug 14, 2026

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: lilin90

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@ti-chi-bot ti-chi-bot Bot added the approved label Aug 14, 2026
@ti-chi-bot
ti-chi-bot Bot merged commit eee9aaa into pingcap:release-8.5 Aug 14, 2026
11 checks passed
@lilin90
lilin90 deleted the ticdc-debezium-update branch August 14, 2026 09:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved area/ticdc Indicates that the Issue or PR belongs to the area of TiCDC. lgtm needs-1-more-lgtm Indicates a PR needs 1 more LGTM. ONCALL Relates to documentation oncall. size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. translation/from-docs This PR is translated from a PR in pingcap/docs.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants