Skip to content

MoonSQLiteFile v0.2.0

Choose a tag to compare

@prowk prowk released this 02 Oct 12:31
· 56 commits to main since this release

v0.2.0 补齐 SQLite 索引与 WITHOUT ROWID 表的原始记录读取,并增加有界逐条扫描和宿主静态数据源接口。

主要更新

  • 统一四类 B-tree 遍历,读取索引内部页记录,支持 WITHOUT ROWID 表的磁盘存储记录。
  • 新增 BTreeRecord、read_btree、table_records、index_records 和 scan_btree;扫描支持回调提前停止,并区分完整、记录上限和主动停止。
  • 增加累计 payload 和跨 B-tree/overflow 页预算,拒绝重复占页。
  • 新增同步 PageSource 与 open_source,供宿主按需读取同一份静态快照;保留 open_database(Bytes) 和普通 rowid 表 API。
  • JSON CLI 新增 records、index、scan 命令。

升级说明

扫描现在累计限制 payload 与 B-tree/overflow 页数;超预算或重复占页的输入会被拒绝。需要调整预算时,请参考本版本资源边界与扫描完成状态。PageSource 必须在整个读取期间保持静态快照;WITHOUT ROWID 表请改用 table_records 读取原始存储记录。

安装

moon add prowk/moonsqlitefile@0.2.0

验证

  • Wasm、WasmGC、JavaScript、native 四后端各 42 项测试通过,包含 192 次确定性字节变更回归扫描。
  • SQLite 对照通过:1063 行普通表数据、4407 条索引及 WITHOUT ROWID 原始记录。
  • 独立打包消费验证通过,包含第三方 PageSource 实现。
  • 发布 tag 指向 a8a324a6c7780abd71ebc7d8b51512a5298e6f0f,其GitHub CI 全部通过。

使用边界

只读静态 SQLite 3 数据库文件,不执行 SQL、不写数据库、不合并 WAL、不恢复删除记录。返回磁盘字段顺序和存储值,不推断 SQL 列映射;索引排序、collation 和全局页归属报告尚未实现。同步 PageSource 使用 Int 偏移,不提供异步 I/O 或快照获取协议;扫描完成不等同于 SQLite integrity_check。

相关链接