版本与环境
受影响提交:46730ff(main)。环境为 GitHub Actions 的 Python 单元测试;本 Issue 不需要真实数据库凭据,SQLite 使用内存数据库,PostgreSQL 行为由 SQL tokenizer 回归测试覆盖。
问题与预期行为
main CI 的 17 个单元测试失败:代码生成路径出现重复斜杠,ConnectionManager 缺少连接级元数据缓存,且只读 SQL 对 PostgreSQL dollar-quoted literal、顶层 FETCH 限制和 FETCH WITH TIES 处理不正确。预期是缓存隔离且可失效、生成路径规范化、只读查询安全边界保持严格并正确收紧结果上限。
最小复现
PYTHONPATH=src pytest -q tests/unit
失败示例包括 test_entity_path_includes_package、test_describe_table_reuses_connection_scoped_cache_and_returns_copies、test_db_query_execute_ignores_keywords_inside_dollar_quoted_literals 和 test_db_query_execute_rejects_fetch_with_ties_before_execution。
验收标准
非目标、风险与安全
不改变公开 MCP 工具名称、数据库 schema、模板输出语义或真实数据库连接配置。SQL 仍只允许单条只读查询;本 Issue 不处理真实 MySQL/PostgreSQL 性能基线,相关工作保留在 Issue #213。回滚方式为回退关联 PR 的 squash commit。
版本与环境
受影响提交:
46730ff(main)。环境为 GitHub Actions 的 Python 单元测试;本 Issue 不需要真实数据库凭据,SQLite 使用内存数据库,PostgreSQL 行为由 SQL tokenizer 回归测试覆盖。问题与预期行为
main CI 的 17 个单元测试失败:代码生成路径出现重复斜杠,ConnectionManager 缺少连接级元数据缓存,且只读 SQL 对 PostgreSQL dollar-quoted literal、顶层 FETCH 限制和
FETCH WITH TIES处理不正确。预期是缓存隔离且可失效、生成路径规范化、只读查询安全边界保持严格并正确收紧结果上限。最小复现
失败示例包括
test_entity_path_includes_package、test_describe_table_reuses_connection_scoped_cache_and_returns_copies、test_db_query_execute_ignores_keywords_inside_dollar_quoted_literals和test_db_query_execute_rejects_fetch_with_ties_before_execution。验收标准
connection_id/table/schema隔离,容量为 256,返回深拷贝,DDL 与关闭连接时失效。packageSuffix不生成重复/。FETCH FIRST/NEXT正确收紧,嵌套 FETCH 不被改写,FETCH WITH TIES在执行前拒绝。非目标、风险与安全
不改变公开 MCP 工具名称、数据库 schema、模板输出语义或真实数据库连接配置。SQL 仍只允许单条只读查询;本 Issue 不处理真实 MySQL/PostgreSQL 性能基线,相关工作保留在 Issue #213。回滚方式为回退关联 PR 的 squash commit。