strip_trailing_semicolon 不会删除 SQL 注释前的分号
作者: AmirF194创建于 2026年9月10日更新于 2026年9月10日
connector/base.py 中的 strip_trailing_semicolon 只会删除字符串中最后一个分号(_TRAILING_SEMICOLONS_RE = re.compile(r"[;\s]+\Z"))。同一行上的分号后的注释会破坏此功能:
from wren.connector.base import strip_trailing_semicolon
strip_trailing_semicolon("SELECT 1 AS x; -- pick")
# 'SELECT 1 AS x; -- pick', 未变化每个连接器在进行 LIMIT/dry_run 处理之前都会调用此函数,因此幸存下来的分号会出现在子查询中:
SELECT * FROM (
SELECT 1 AS x; -- pick
) AS _sub LIMIT 0sqlglot 会对其进行拒绝,原因是 ParseError: Expecting ). Line 2, Col: 13.
与 #2498/#2499 不同:这些问题将每个连接器的 dry_run/query 调用路由到同一个辅助函数,但该辅助函数无论从何处调用都会出现此缺口,因此将调用提升到某个边界也无法解决问题。
内容来源: Canner/WrenAI