fix(storage): recall_seen_count 批更新加 COALESCE —— NULL 行不再吞召回观测值 (t_5aa7cb77)
批路径 .column("recall_seen_count", "recall_seen_count + delta") 下推 DataFusion,
SQL 语义 NULL+n=NULL ⇒ 17717 行(43.8%)观测值静默丢失。改 COALESCE(recall_seen_count,0)+delta。
逐条 fallback 路径本就 NULL-aware(读现值 unwrap_or(0))且其 split_whitespace 3 段
解析不容 COALESCE,故不动并加注释防后人误改。
This commit is contained in:
@@ -708,7 +708,12 @@ impl LanceDBOps {
|
||||
let op = ttbl
|
||||
.update()
|
||||
.only_if(&predicate)
|
||||
.column("recall_seen_count", &format!("recall_seen_count + {}", delta))
|
||||
// C档 (t_5aa7cb77):recall_seen_count 是可空列(存量 43.8% 行为 NULL)。
|
||||
// 裸 `recall_seen_count + delta` 在 NULL 上恒为 NULL ⇒ 观测值静默丢失。
|
||||
// COALESCE(.., 0) 让 NULL 行按 0 起算(NULL+1 ⇒ 1)。不可空列行为不变。
|
||||
// 注意:不得给逐条 fallback 的 value 字符串加 COALESCE —— 那走 current-value
|
||||
// 算术解析(split_whitespace 期望恰好 3 段),COALESCE 会炸掉解析。
|
||||
.column("recall_seen_count", &format!("COALESCE(recall_seen_count, 0) + {}", delta))
|
||||
.column("last_recalled_at", &ts_lit);
|
||||
rt().block_on(op.execute()).map_err(Into::into)
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user