Skip to content

MoonSQLiteFile v0.5.0

Choose a tag to compare

@prowk prowk released this 04 Oct 13:11

v0.5.0 新增 WAL 帧检查与最新已提交快照的只读覆盖,库和 CLI 可读取一致的 db/WAL 静态副本。

主要更新

  • 新增 parse_wal_header、inspect_wal,验证 header/frame、两种累计 checksum 字节序与 salt,报告连续有效帧、提交边界及首个停止原因。
  • 新增 WalSource、open_wal_source、open_wal_database,复用原有检查器,采用最新已提交页版本与提交后的逻辑页数;隔离未提交更新及缩小、再次增长后的旧页版本。
  • 默认拒绝异常尾部;显式 UseValidPrefix 只读取此前最后一个完整提交,不跳过中间坏帧。帧预算不足保留限额错误,不作为旧快照成功返回。
  • CLI 新增 --wal WAL [--wal-prefix]、wal-inspect 与 wal-info;原有查询、页面、检查及中文摘要命令可使用同一 WAL 覆盖视图。
  • 扩展真实 SQLite 恢复对照和配对模糊测试;失败样本同时保留主文件并自动配对重放。修正模糊工具对 65536 字节页长的定位。

升级说明

重新生成接口后,核对 v0.3.0 的 85 项和 v0.4.0 的 123 项公开声明,原有签名、结构字段及枚举分支保持原有形式。普通 open_database / open_source 仍只读取主文件;WAL 视图必须使用专用打开入口,其逻辑边界以 page_count() 为准。默认严格策略可能拒绝 reset 后残留的旧 salt 尾部;检查报告后可显式采用前缀策略。详见 v0.5.0 升级说明。

安装

moon add prowk/moonsqlitefile@0.5.0

验证

  • 发布 tag 指向 06b7ecada2ae08dbbddf96e98c37e8ea258a2b5b,该提交的 GitHub CI 全部通过;Wasm、WasmGC、JavaScript、native 各 98 项测试通过。
  • WAL 独立 SQLite 恢复对照通过:29 组快照、5470 条记录,覆盖双 checksum 字节序、三种文本编码、512/4096/65536 字节页、多事务、未提交尾帧、中间损坏、reset 及页数缩小/增长;原始输入未被改写。
  • 原有 1063 行普通表、4407 条索引/WITHOUT ROWID 记录及 18 个数据库 2412 页对照继续通过;Linux CI 对全部数据库启用 dbstat 对照。
  • 固定种子 512 次变更及同一提交的 额外 5000 次模糊验收 通过,覆盖数据库与配对 WAL。这是 JavaScript 后端的有界字节变更测试,没有覆盖率引导。
  • 历史 API、独立打包消费及实际 HTML 内嵌解析器/导航数据验证通过。发布后从真实 Mooncakes registry 安装 0.5.0,独立项目在四后端完成 check/build/test 并实际运行 WAL API 与第三方 PageSource。

使用边界

支持静态 SQLite 3 主文件与最新已提交 WAL 快照,复用四种 B-tree、索引及 WITHOUT ROWID 原始记录、overflow、freelist、三种文本编码和 auto-vacuum Ptrmap 检查。结构检查完成不等同于 SQLite integrity_check。

宿主必须提供同一数据库、同一时刻且使用期间不变的 db/WAL 副本;salt/checksum 不能验证主文件身份。不执行 SQL、写事务、checkpoint、在线锁或 shm 协议,不提供任意历史事务、损坏/删除数据恢复,也不验证索引排序/collation 或表与索引内容一致性。

输入仍采用同步 Int 寻址,WAL 默认最多验证 100000 帧;64 位及异步读取属于后续版本。附带 HTML 仍只读取单个静态主文件,限制 64 MiB 和单次 30 秒,不接收 WAL;需要 WAL 的场景使用库或 CLI。

相关链接