返回 Bug 清单
BUG-0293project-23高待处理unknown

NL2SQL 生成 SQL 的 LIMIT 处理三连修复:不完整/重复/位置错误的 LIMIT 全部触发执行语法错误

发现:2026-10-01验证:2026-10-09置信度:70%

症状

AI 问数功能随机报 syntax error at or near 'LIMIT'——同样的提示词有时成功有时失败,完全取决于 LLM 这次把 LIMIT 生成在哪

根因

LLM 生成 SQL 的 LIMIT 是不受控变量:可能只有关键字没有数值、可能与 FETCH FIRST 并存、可能出现在 OFFSET 之后(PostgreSQL 要求 LIMIT 在 OFFSET 前)、可能重复出现。第一版修复只处理'裸 LIMIT',第二版补位置,第三版才收敛为'全部移除再统一注入'——三次 commit 是对不受控 LLM 输出的认知迭代

修复方案

先正则移除所有 FETCH FIRST n ROWS ONLY / LIMIT n / 裸 LIMIT,再按 PostgreSQL 语法顺序统一注入 LIMIT(有 OFFSET 时插到 OFFSET 之前,无则追加尾部)

错误签名

NL2SQL LIMIT 注入 syntax error near 不完整 OFFSET FETCH FIRST 重复移除 统一注入

技术信息

来源项目

project-23

标签

project-23, mcp-reported