返回 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