Files
MyGoNavi/docs/需求追踪/需求进度追踪-SQL方言适配-20260426.md
Syngnat df4fcab90b 🐛 fix(sql): 适配多数据源 SQL 方言生成
- 表设计 DDL 按 Oracle/Dameng、SQL Server、PG-family、SQLite/DuckDB、ClickHouse/TDengine 分支生成

- 新增统一 SQL 方言工具,驱动字段类型候选和 SQL 自动补全

- 修复 Oracle/Dameng DATE/TIMESTAMP 删除条件字面量

- 补充多方言 DDL、补全和 Oracle 删除回归测试

Refs #402

Refs #409
2026-04-26 17:14:07 +08:00

1.3 KiB
Raw Blame History

SQL 方言适配需求进度追踪

背景

  • Oracle 等非 MySQL 数据源在表设计 DDL 预览中可能回落到 MySQL 语法,导致修改字段名、字段属性等操作执行失败。
  • GitHub 相关问题Refs #402金仓字段类型/DDL 方言、Refs #409Oracle 删除数据 DATE 字面量)。

范围

  • 表设计 ALTER TABLE 预览:按 MySQL-family、PostgreSQL-family、Oracle/Dameng、SQL Server、SQLite、DuckDB、ClickHouse、TDengine 分支生成。
  • 新建表 DDL 预览:避免 Oracle/Dameng/SQL Server/SQLite/DuckDB/ClickHouse/TDengine 输出 MySQL 表选项。
  • SQL 自动补全:按当前连接方言解析关键字和函数,避免 Oracle/SQL Server 出现 MySQL-only 提示。
  • 表设计字段类型:按数据源给出候选类型,不再大量回退到 MySQL 通用类型。
  • Oracle/Dameng 数据复制/删除 SQLDATE/TIMESTAMP 字段使用 Oracle 时间构造函数。

验证

  • npm test -- tableDesignerSchemaSql.test.ts sqlDialect.test.ts dataGridCopyInsert.test.ts
  • npm run build

风险与后续

  • ClickHouse/TDengine 的字段约束、默认值、备注语法差异较大,当前策略是生成有限原生 ALTER并用中文注释阻止 MySQL 专属子句外溢。
  • SQL Server 删除旧主键约束需要真实约束名,当前预览会提示先在索引页确认。