跳转到内容

DSL 语义

Forge DSL 是一种机器生成、确定性编译的查询中间表示(IR)。编译器将支持范围内的 Forge JSON 翻译为 SQL;Direct SQL 是另一种候选格式,不必经过 DSL。两者都仍需评估与执行门禁,见架构设计。


Forge DSL 的字段对应 SQL 的逻辑求值阶段(不是数据库优化器的物理执行顺序;JSON 对象键的排列顺序也不决定执行顺序):

执行阶段SQL 子句Forge DSL 字段
1FROMscan
2JOINjoins
3WHEREfilter
4GROUP BYgroup
5Aggregationagg
6HAVINGhaving
7Window functionswindow
8QUALIFYqualify
9SELECTselect
10ORDER BYsort
11LIMIT / OFFSETlimit, offset

这种组织方式有助于区分行过滤、聚合和窗口阶段,但不能消除模型的业务或算法错误。


关系代数操作Forge DSL备注
选择(WHERE)filter比较、范围、IN、LIKE、IS NULL、OR/AND
投影(SELECT)select列引用、表达式、别名
内连接joins[type=inner]等值和多条件
左/右/全外连接joins[type=left/right/full]MySQL 不支持 FULL
反连接joins[type=anti]编译为安全的反连接语义
半连接joins[type=semi]编译为 WHERE EXISTS
显式笛卡儿积joins[type=cross]用于引用标量 CTE;无 on,不作为普通 JOIN 默认值
聚合group + aggcount/sum/avg/min/max/distinct/concat
集合运算union / intersect / except
能力Forge DSL备注
窗口函数window排名/分布/聚合/导航四类
窗口帧window.frame滑动平均、累计求和
per-group TopNqualify编译为包装子查询
CTEcte支持递归
IN 子查询filter[op=in, val.subquery]
相对日期$preset8 种预设,编译器适配方言
条件聚合agg.filterSQLite/PG 支持
能力原因
隐式/无意图的笛卡儿积只允许显式 cross 场景,合理性仍由 lint、审核与测试判断
DDL / DMLForge 是只读查询语言
存储过程超出查询范围
PIVOT / LATERAL JOIN暂未支持

结构约束与边界(不是不可能性证明)

Section titled “结构约束与边界(不是不可能性证明)”

动态 Schema 与严格 Structured Output 可以约束相应字段的结构和枚举;表达式、Provider 兼容性、业务口径、源数据和算法不在此保证内。合法 JSON、可编译 SQL 都不证明安全或语义正确。

错误类型SQL 中的问题约束如何帮助,仍有什么边界
无类型 JOIN裸 JOIN 默认 INNER,意图可能是 LEFTtype 必填可要求显式选择,但仍可能选错类型
NOT IN + NULL子查询含 NULL 时可能静默空集anti 表达反连接语义,不能替代业务意图判断
幻觉列名/表名引用不存在的表列严格动态 Schema 约束覆盖的位置;字符串表达式仍需检查
WHERE vs HAVING聚合条件误入 WHEREfilter 和 having 分字段,模型仍可能误填
GROUP BY方言与聚合粒度差异部分确定性规范化可修正结构,但不能猜测正确业务粒度
同层聚合别名引用同层 SELECT 引用 alias 可能无效仅展开本层未限定引用,不修复缺失的 CTE 输出

_expand_aliases() 仅展开本层表达式中的未限定 agg/window 列引用。SQLGlot AST 定位原文后单次替换,保留限定源列、常量、函数/类型名和子查询内部作用域;CTE缺失输出不猜测补齐。


特性SQLiteMySQLPostgreSQL
$preset 日期DATE(‘now’,…)CURDATE()/DATE_SUBCURRENT_DATE/INTERVAL
字符串聚合GROUP_CONCATGROUP_CONCAT SEPARATORSTRING_AGG
FILTER (WHERE)支持不支持支持
FULL OUTER JOIN支持不支持支持

维度SemQL(IRNet 2019)Forge DSL
表达形式树状 S-expressionJSON(LLM 友好)
约束方式文法规则JSON Schema + Structured Output
容错机制无部分确定性规范化;需行为回归验证
方言支持无SQLite / MySQL / PG,以及 BQ / SF 编译路径
目标场景学术 benchmark受控数据查询;不代表已有生产采用

这是一项历史设计思路对照,不是同模型、同数据的性能比较,也不能据此推导 Forge 的准确率优势。实际成绩与安全发布阻断见基准与验证边界。


本页为精简版。完整内容参见 docs/dsl-semantics.md。