返回正文目录

第36章:SQL转换含义核对实操

2026-10-25,Launcher 0.1.42 / CLI 0.1.25,Java 17.0.12 / Python 3.11.5。沿用 127.0.0.1:18368 的 file-legacy / LegacyBillQueryModel,匿名本机开发测试,Console/FAP关闭。实际进程117468及0.1.42 JAR路径已复查;没有重启、注册或刷新模型,没有操作18067。

调用与答案来源

当前Codex读取实时QM元数据,编写本章SQL意图与对应DSL。原生语义SQL接口仍未作为本章调用路线。引擎只接收DSL,全部先validate后execute;SQL与不明确输入的审查属于AI工作,不冒充引擎SQL解析。

第35章已审核的排名、HAVING请求原样复用。新增DSL的独立答案来自只读原始Chinook Invoice行,由Python Decimal按声明的日期、客户、国家、求和与计数规则计算。不是再执行一遍引擎SQL,也不是从本次响应自动生成预期值。

实际结果

类别 用例 结果
基线复跑 排名前三、年度金额HAVING大于25 与第35章一致,2项
新正常查询 整体均额 477.53 / 83 = 5.753373493975904,显示5.75
新正常查询 按国家均额 20组逐字段核对;组均额直接平均5.843171…,不等于全局均额
新正常查询 全量客户排序 47位逐行一致;含00013/00051同额24.75等实际并列情况
新正常查询 客户00999明细 空数组
新正常查询 1990年空范围汇总 [{"bills":0}],金额和均额NULL在默认输出中省略
故意改错 将HAVING合计条件改成slice单张条件 校验通过、执行空集;与原SQL要求的00026/25.84不一致
校验拒绝 排序引用未定义totalAmount FIELD_NOT_FOUND,phase=query.validate,未执行

7项正常执行包含2项基线复跑和5项新正常查询。1项故意改错的执行单列,不计入正确转换的通过数。另有1项校验拒绝,以及对含义不明确的聚合WHERE输入进行的AI审查,后者没有生成DSL或调用引擎。

错例说明引擎正确执行了错误意图,不是引擎BUG,也不是声称观察到LLM实际犯错。本轮未发现新增引擎问题;结论只限上述用例,没有生产权限、多数据库或LLM多次生成评测。

核对材料与复跑

从资料项目根目录,在原教学服务和模型可用时执行:

python -X utf8 lab/checks/verify-chapter36-query-meaning.py

脚本读取已保存的SQL/DSL,不实现SQL解析或重新调用LLM。人工审查SQL与独立预期的对应关系仍是前提;SQL含义变化时不能直接沿用旧预期。原模型、旧库、Chinook原始库、两份注册表及第35章基线请求的前后摘要一致。