Skip to content

MoonSQLiteFile v0.3.0

Choose a tag to compare

@prowk prowk released this 03 Oct 06:55
· 51 commits to main since this release

v0.3.0 增加数据库结构检查,追踪全局页归属、校验 auto-vacuum 反向指针并输出有界诊断报告。

主要更新

  • 新增 Database.inspect_database:发现 schema 根页,扫描表、索引、overflow 和 freelist,报告跨对象重复占页、freelist 冲突与未认领页;全程共享记录、页数、累计 payload 和诊断预算。
  • 新增 Database.ptrmap_entries:支持 FULL / INCREMENTAL auto-vacuum 五类反向指针,并在全局检查中核对类型、父页、largest root 与根页排列。
  • 新增 Database.inspect_btree 与 BTreeInspection:保留单树检查状态、原始错误和此前成功解码的记录数。
  • 新增 inspect JSON CLI,退出码 0/1/2 分别表示完整、失败和未完成;报告明确标记归属遍历、Ptrmap 检查与诊断截断。根页发现不完整时,未知页不会被判作孤儿。

升级说明

公开的 Header 新增 largest_root_page : UInt 与 incremental_vacuum : Bool 字段;直接构造 Header 的消费代码需要补齐字段。从 parse_header 或 Database.header() 获取头部的代码可继续使用。检查调用方需同时处理完成状态与覆盖标记,具体含义见本版本架构说明。

安装

moon add prowk/moonsqlitefile@0.3.0

验证

  • Wasm、WasmGC、JavaScript、native 四后端各 55 项测试通过,包含 192 次确定性字节变更回归扫描。
  • SQLite 对照通过:1063 行普通表数据、4407 条索引及 WITHOUT ROWID 原始记录。
  • 页归属对照覆盖 13 个数据库、1765 页,验证 FULL / INCREMENTAL auto-vacuum、别名根页、孤儿页、Ptrmap 类型与父页错误及诊断截断。
  • 独立打包消费验证通过,覆盖新检查 API 和第三方 PageSource。
  • 发布 tag 指向 1159951e72a4ac6d4b2e2a4de6dc42f9788b75f5,其GitHub CI 全部通过。

使用边界

只读静态 SQLite 3 数据库文件,支持普通表、索引、WITHOUT ROWID 和 auto-vacuum 页结构;不执行 SQL、不写数据库、不合并 WAL、不恢复删除记录。返回原始存储值,不提供 SQL 列映射。结构检查尚不验证索引排序与 collation、表/索引记录一致性或完整 cell 空间覆盖,不等同于 SQLite integrity_check。同步 PageSource 使用 Int 偏移,不提供异步 I/O 或快照获取协议;全局页归属检查仅覆盖逻辑数据库页。

相关链接