Skip to content

MoonSQLiteFile v0.4.0

Choose a tag to compare

@prowk prowk released this 03 Oct 10:11

v0.4.0 补齐静态 B-tree 页空间校验,并提供可定位诊断、页面与对象统计、中文摘要及单文件离线页面导航。

主要更新

  • 校验四种 B-tree cell 的完整空间覆盖、最小填充、cell/freeblock 重叠、未登记空闲区间和碎片计数;修复空叶页跳过树深度验证的问题。
  • 新增 inspect_page、PageStatistics 和 PageDiagnostic,提供页内空间分项、声明 payload 与实际错误页/偏移/cell 下标。
  • 新增 inspect_btree_details、inspect_database_details,在同一次检查中保存树、overflow、record/schema、freelist、归属及 Ptrmap 的失败位置;保留原报告进度与诊断上限。
  • 新增 DatabaseInspection.summarize()、中文 summary 和 summary-json,汇总八类页及每对象 B-tree/overflow 占页,不重复读取数据库或计入冲突引用。
  • 新增 viewer-data 和离线 HTML 检查器,支持对象根页、父子页和 overflow 跳转、空间分布、cell 定位、原始字节与诊断位置。下方附件可直接保存到本地使用。
  • 新增有界、可重放的持续模糊测试:日常 CI 固定种子 512 次变更,每日任务 5000 次并更换种子;异常保存输入和重放元数据。

升级说明

现有 v0.3.0 公开签名、结构字段与枚举分支保持原有形式,但页面校验更严格:以前接受的空间损坏现在可能返回 Invalid;小 limit 读取前缀也会验证所访问页面的全部 cell。新单页接口的读取失败为 Incomplete,旧树/全库报告仍沿用原错误映射;请结合读取阶段判断,不能仅凭宿主 Invalid 宣称文件损坏。详见 v0.4.0 升级说明。

安装

moon add prowk/moonsqlitefile@0.4.0

验证

  • 发布 tag 指向 1155d786580b971768fec18267a357a16ed2606f,该提交的 GitHub CI 全部通过;Wasm、WasmGC、JavaScript、native 各 86 项测试通过。
  • SQLite 对照通过:1063 行普通表数据、4407 条索引/WITHOUT ROWID 记录,18 个数据库共 2412 页;Linux CI 对全部数据库使用 dbstat 核实逐页空间及每对象占页。
  • 固定种子 512 次变更及发布提交的 额外 5000 次模糊验收 通过;此项是 JavaScript 后端的字节变更测试,没有覆盖率引导。
  • 85 项 v0.3.0 公开声明对照、实际 HTML 内嵌解析器/导航数据与独立打包消费通过;浏览器本地预览验证对象、子页、overflow 和损坏诊断跳转。
  • 发布后从真实 Mooncakes registry 安装 0.4.0,独立项目的四后端 check/build/test 和 JS 运行通过,覆盖第三方 PageSource、新报告及旧结构直接构造。

使用边界

支持静态 SQLite 3 文件、四种 B-tree、索引内部页与 WITHOUT ROWID 原始记录、overflow、freelist、三种文本编码及 auto-vacuum Ptrmap。结构完成状态不等同于 SQLite integrity_check;单页统计不验证外部链或 record 内容,未完成报告的汇总仅表示已观察结果。

不执行 SQL、不写入文件、不合并 WAL,也不验证索引排序/collation、表与索引内容一致性或恢复损坏/删除数据。PageSource 为同步 Int 偏移接口;离线演示完整读取最多 64 MiB,单次检查最多 30 秒,使用 Blob Worker,不包含网络资源。大文件、64 位及异步读取仍属于后续版本范围。

相关链接