CTE、窗口、锁与原始 SQL
高级结构仍然是 AST 节点。它们不会以字符串后缀附加,因此可以参与验证、方言检查和连续参数编号。
公用表表达式
CTE 名称来自目标表标记。重复名称会在编译阶段被拒绝。
集合运算
union、union_all、intersect 与 except 要求两侧具有相同 Rust 输出类型。带 CTE、排序、分页或行锁的操作数目前不受支持。
窗口函数
还提供 rank、dense_rank 与显式窗口 frame。无效的 frame 边界会被拒绝。
PostgreSQL 行锁
支持 FOR UPDATE、FOR NO KEY UPDATE、FOR SHARE、FOR KEY SHARE、NOWAIT 与 SKIP LOCKED。锁目标必须存在于来源表或连接表中。SQLite 与 MySQL 方言会拒绝行锁。
PostgreSQL 表锁
表锁模式使用封闭枚举,不接受任意 SQL 片段。
受控原始 SQL
SQL 文本参数必须是静态字符串。动态数据只能通过 bind 加入。输出类型是调用方断言,使用前应让静态 SQL 与测试共同覆盖它。