Skip to content

feat: support TDengine STable/TAGS and 3.0 syntax adaptation#463

Open
Guan-Meng-Yuan wants to merge 5 commits intodromara:mainfrom
Guan-Meng-Yuan:feat/issue-170-tdengine-stable
Open

feat: support TDengine STable/TAGS and 3.0 syntax adaptation#463
Guan-Meng-Yuan wants to merge 5 commits intodromara:mainfrom
Guan-Meng-Yuan:feat/issue-170-tdengine-stable

Conversation

@Guan-Meng-Yuan
Copy link
Copy Markdown

@Guan-Meng-Yuan Guan-Meng-Yuan commented Mar 31, 2026

针对 TDengine 的数据模型(STable/TAGS)及 DDL 语法限制(3.0+)进行了全面的适配和优化:

1. 核心功能支持 (STable & TAGS)

  • 超级表 (STable) 支持:引入了对 TDengine 超级表的支持,允许通过实体类定义其时序特性。
  • 标签 (TAGS) 支持:支持在实体中定义标签列,并能在建表时正确生成 TAGS 子句。

2. 字段类型与长度优化 (针对 3.0+ 语法)

  • 移除内置类型长度限制:重载了 TSDBMigrationEntityParser。针对 INT, BIGINT, SMALLINT, TINYINT, FLOAT, DOUBLE, BOOL, TIMESTAMP 等内置类型,去除了 DDL 中的显示宽度/长度参数(如不再输出 INT(11))。
    • 原因:TDengine 3.0 对这些固定长度类型不允许指定长度,否则会导致语法错误。
  • 布尔类型适配:将 boolean 准确映射为 TDengine 的 BOOL 类型,而非 MySQL 风格的 TINYINT(1)
  • 全局拦截:在 replaceSqlTypeLength 中增加了拦截逻辑,确保即使在实体上配置了 length 属性,对于上述固定长度类型也会自动过滤。

3. DDL 迁移语法修正 (TSDBDatabaseMigrationProvider)

  • 空值约束清理:从 DDL 语句中移除了 NULL / NOT NULL 声明。
    • 原因:TDengine 语法不支持在此处声明空值约束。
  • ALTER TABLE 语句重写
    • addColumn:采用了符合 TDengine 规范的 ADD COLUMN 语法。
    • renameColumn:适配了 TDengine 3.x 的 RENAME COLUMN 语法,替代了不兼容的 CHANGE 语法。
  • 屏蔽不支持特性:显式屏蔽了索引(Index)和外键(ForeignKey)的生成过程,以符合时序数据库的实际存储模型。

4. 代码修正与清理

  • 修正了 TSDBDatabaseConfiguration 中的服务注册引用逻辑,清理了冗余引用(如 UUID),优化了代码质量。

本 PR 提供的改动已在本地通过了 TDengine 3.x 环境的实测,能够确保表结构自动迁移的准确性和稳定性。

@Guan-Meng-Yuan Guan-Meng-Yuan changed the title Feat: add TDengine STable and TAGS support Feat: add TDengine STable and TAGS supportfeat: Apr 1, 2026
@Guan-Meng-Yuan Guan-Meng-Yuan changed the title Feat: add TDengine STable and TAGS supportfeat: feat: support TDengine STable/TAGS and 3.0 syntax adaptation Apr 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant