跳转到内容

行级差异引擎

row diff engine 比较 SQLite snapshots,并尝试用 table/row/schema 术语描述变化。

产品集成使用 repository-level row diff:

Terminal window
graft diff --rows HEAD~1 HEAD data.sqlite
graft diff --json --rows HEAD~1 HEAD data.sqlite

低层 storage diagnostics 可以比较 raw LSN:

PRAGMA graft_debug_log_lsn;
PRAGMA graft_debug_volume_diff = '2,4,rows';
PRAGMA graft_debug_volume_json_diff = '2,4,rows';

这些不是正常应用 API。

{
"path": "data.sqlite",
"change": "modified",
"row_diff_available": true,
"logical_status": "logical_changes",
"capabilities": ["rowid_table_rows", "primary_key_table_rows", "schema_entries"],
"limitations": [],
"tables": []
}

支持的 4 KiB rowid-table 路径使用直接 page parser。native page size 不同,或 WITHOUT ROWID table 需要声明主键 identity 时,引擎会通过 SQLite materialize snapshot。这样既保留 fast path,也覆盖合法物理 page size、STRICT schema 和 带类型的复合主键。

merge 时,同一分析会产生 row conflicts、schema conflicts、opaque changes、 blocked reasons 和 apply policy。