返回正文目录

语义 SQL 系列实操

第36章已完成转换含义核对:7项正常执行、1项故意改错的执行及1项校验拒绝,按类别单独记录;模型与数据保持。下方保留第35章原验收范围与计数。

2026-10-25,第35章。Launcher 0.1.42 / CLI 0.1.25,Java 17.0.12 / Python 3.11.5。使用原文件教学服务 http://127.0.0.1:18368,file-legacy Namespace,LegacyBillQueryModel,匿名开发测试;Console/FAP关闭。

本章真实调用路线

本次公开入口核对未发现原生语义SQL解析器。当前Codex根据实时元数据生成SQL与对应DSL,实际调用引擎的请求是DSL。 SQL文件是意图表达和人工核对材料,不是传给引擎的输入,也没有编写确定性SQL转换器。

模型、绑定、注册表及旧库沿用第32章。没有刷新或改写模型、重载数据、操作18067服务。入口核对与公开能力清单说明检查范围。

实际用例

每个正常用例都有同名 .sql 与 .json,保存在 queries。SQL由当前AI会话转换,语义模型由CLI模型参数指定,JSON只包含DSL。

用例 结果
35-top-customers 00026/25.84、00034/24.77、00013/24.75,前导零和排序保留
35-total 83张、477.53教学元
35-having 按客户汇总后金额大于25,仅00026/25.84
35-excluded-statuses 作废和草稿教学编号均为空集
35-unpublished-field 错误DSL中的v1在query.validate拒绝,未执行

4项语义执行、1项语义校验拒绝。另外有1次query.explain、2次数据库探查;探查中1项预期失败,不混入正常查询数。

独立答案来自只读 lab/data/Chinook_Sqlite.sqlite 的原始Invoice行,由Python与Decimal按日期筛选、按客户汇总。没有将引擎生成SQL的结果当作独立答案,也没有通过数据库探查代替语义查询作答。

SQL、分页与解释证据

主查询执行响应中的 debug.extra.sql 已原样保存为物理SQL,包含原TM的分转元、客户映射及有效状态过滤。当前返回SQL文本不含LIMIT;本例响应的pagination.limit=3,items实际为3条。这里不据SQL文本推断分页的具体数据库实现或性能。

query.explain返回 basis=RECOMPILED,属于重新编译的解释,不是刚才执行的历史轨迹。其viewSql底层血缘标记为OPAQUE;SQL文本可见不等于已推断完整物理血缘。正文的模型展开节选以实际execute响应为依据。

转换记录保存每组SQL/DSL摘要和转换主体;独立答案、验收、命令与退出码、关键日志及各请求响应保留。

复跑

教学服务运行、原第32章模型已加载时,从资料项目根目录执行:

python -X utf8 lab/checks/discover-semantic-sql-0.1.42.py
python -X utf8 lab/checks/verify-chapter35-semantic-sql.py

核对脚本读取现有 .sql / .json,重放已保存的DSL并核对结果,不会重新调用LLM生成转换。输入或业务规则变更时,需要先重新审查转换与独立基线。本次没有进行干净AI会话提示词验收、生产身份测试或原生SQL解析测试。