fix(web3): list_columns SQL 去重 ALL_COL_COMMENTS 防 UI 字段翻倍
用户反馈:达梦 HGWXZJ 库的 YW_GJY(归集业务数据表)在「校验规则」Tab 每个字段 都显示两遍(ID/ID、DWZH/DWZH、DWZJID/DWZJID、...),内容完全一致。 根因推断: 达梦的 ALL_COL_COMMENTS 里同一 (OWNER, TABLE_NAME, COLUMN_NAME) 偶尔有 2+ 行 (历史 COMMENT ON COLUMN 重复 / DBA vs USER 视角双份 / 升级残留), LEFT JOIN 不去重 → ALL_TAB_COLUMNS 的每行匹配 2 行 → 整段 SQL 每列翻倍。 web2 模板跟 web3 一致,理论上同样问题;web3 之前没碰到是因为 web2 没做过 编辑场景自动 listColumns 的 UI 入口(手工流程绕开了)。 改动(dameng + oracle 同源一起改): LEFT JOIN ALL_COL_COMMENTS 改为 ROW_NUMBER() 子查询预聚合, PARTITION BY (OWNER, TABLE_NAME, COLUMN_NAME) 每组取一条, ORDER BY COMMENTS DESC NULLS LAST(启发式:取最长注释当用户最后写的)。 MySQL 模板不动(COLUMN_COMMENT 在 INFORMATION_SCHEMA.COLUMNS 自带, 不在另一张表里,无 1:N 风险)。 无单测(数据字典视图行为依达梦/Oracle 版本而异,fixture 不可靠); 让用户在达梦 disql 跑 SELECT ... GROUP BY ... HAVING COUNT(*) > 1 验证 ALL_COL_COMMENTS 本身 是否真有重复行。
Showing
Please register or sign in to comment