release: v0.4.4 — SSTable 编码修复(UTF-8 字节估算 + u32 长度字段 + v1/v2 双格式兼容),大内容不再崩溃
This commit is contained in:
@@ -2,6 +2,24 @@
|
||||
|
||||
All notable changes to MetonaSqlark will be documented in this file.
|
||||
|
||||
## [0.4.4] - 2026-08-09
|
||||
|
||||
### Fixed
|
||||
|
||||
- **SSTable 编码缺陷导致大内容写入崩溃(P0)** — AriaEngine 保存大段中文内容(如 300KB 笔记)→ close 构建 SSTable 崩溃 → 半写文件 → 下次打开 ARIA_OPEN_ERROR:
|
||||
- **块大小估算用 UTF-16 码元而非 UTF-8 字节** — `computeBlockSize` 用 `json.length`(中文 1 字 = 1 码元)估算,实际写入 UTF-8 字节(中文 1 字 = 3 字节)→ 300KB 中文实际 900KB → 缓冲区低估 → `Uint8Array.set` 越界崩溃。改为 TextEncoder 预编码,全部按字节长度计算(切块、块大小、索引块、总大小)
|
||||
- **valueLen/keyLen 字段 u16 截断** — 长度字段 u16 上限 64KB,大 value 被截断 → 线性格式整体错乱。格式 v2(magic "SSTC")升级为 u32 长度字段
|
||||
- **大 value 块切分** — 单条 value 超过块大小(4096)时独立成块(基于字节估算正确切分)
|
||||
- **格式兼容** — reader 支持 v1("SSTB",u16)与 v2("SSTC",u32)双格式:旧库 v1 文件仍可读(小 value 场景无缺陷),新写入用 v2,旧库数据不丢失
|
||||
- 连带受益:中文主键 key、大内容二级索引列(索引 key 含列值)同样支持 u32 长度字段
|
||||
|
||||
### Changed
|
||||
|
||||
- 测试 950 → **958**(52 套件),新增 `tests/v045-hardening.test.ts`(8 条:300KB 中文 builder/端到端跨重启、>64KB value、大 value 独立成块、中文 key、v1 兼容、v2 魔数)
|
||||
- 版本号升至 v0.4.4
|
||||
|
||||
---
|
||||
|
||||
## [0.4.3] - 2026-08-09
|
||||
|
||||
### Fixed
|
||||
|
||||
Reference in New Issue
Block a user