Files
MetonaSqlark/src/sql
thzxx 83c5aa0b9d fix(A11): AND 优先级高于 OR(SQL 标准)—— parser 条件表达式三层分层
此前 parseCondition 对 AND/OR 做纯左折叠:
  a = 1 OR a = 2 AND b = 3  →  (a = 1 OR a = 2) AND b = 3   (错,返回 1 行)
标准语义:a = 1 OR (a = 2 AND b = 3)                         (对,返回 3 行)

任何"权限条件 OR 业务条件 AND 软删标记"的写法都会静默返回错误行集。

改为标准文法分层:parseCondition → parseOrExpression → parseAndExpression
→ parseSimpleCondition(NOT 已在内层处理,结合性正确)。
仅在确有多个操作数时才包 $and/$or,避免产生 {$and:[x]} 冗余节点而破坏
既有 AST 契约与下游索引下推识别。

实测:WHERE a = 1 OR a = 2 AND b = 3 现返回 [1,2,4](此前 [2,4]),
与显式括号写法结果一致。parser/SQL 全部 111 用例通过。
2026-09-14 21:03:58 +08:00
..