handle_array_in()
function handle_array_in(
entityMetadata,
originalField,
rule
): string | null;
Defined in: packages/rxdb-adapter-sqlite-core/src/query/query_sql.utils.ts:473
处理数组字段的 in/notIn 查询
Parameters
| Parameter | Type |
|---|---|
entityMetadata | EntityMetadata |
originalField | string |
rule | QueryRuleValue |
Returns
string | null
Remarks
notIn 分支必须显式排除 NULL 行(SQLC-008)。标量列的取反操作符靠 SQL 三值逻辑天然排除
NULL,JS 增量匹配也据此把 notIn 归入 NULL_EXCLUDED_OPERATORS 直接返回 false
(见 packages/rxdb/src/query/query-matching.utils.ts 的设计契约)。但 json_each()
对 NULL 列不产生任何行,裸 NOT EXISTS(...) 恒为真 —— 数组列因此成为唯一会保留 NULL 行的
例外,同一行在首次 SQL 查询与写入后的增量匹配之间结论相反,响应式查询会自行漂移。
生成的两段式条件自带括号:buildRuleGroup 对单条规则不补括号,
否则 a OR tags notIn [...] 会被 AND 的优先级悄悄改写成 (a OR tags IS NOT NULL) AND ...。
in 分支无需守卫:EXISTS(...) 对 NULL 列本就为假。