test: v042-hardening 适配 LSM.rangeScan 的 async 化(v0.8.0 读取自洽改动的连带修正)

This commit is contained in:
thzxx
2026-09-14 22:03:56 +08:00
parent 765df805eb
commit c6515440fd
+4 -2
View File
@@ -117,7 +117,8 @@ describe('P1-A — 二级索引恢复', () => {
expect(idxLsm).toBeDefined(); expect(idxLsm).toBeDefined();
expect(idxLsm.getStats().sstableCount).toBeGreaterThan(0); expect(idxLsm.getStats().sstableCount).toBeGreaterThan(0);
await idxLsm.prefetchRange('', '\uffff'); await idxLsm.prefetchRange('', '\uffff');
expect(idxLsm.rangeScan('', '\uffff')).toHaveLength(3); // v0.8.0: LSM.rangeScan 改为 async(读取自洽,未命中会回源加载)
expect(await idxLsm.rangeScan('', '\uffff')).toHaveLength(3);
const byEmail = await engine2.find('users', { table: 'users', where: { email: 'a@x.com' } }); const byEmail = await engine2.find('users', { table: 'users', where: { email: 'a@x.com' } });
expect(byEmail).toHaveLength(2); expect(byEmail).toHaveLength(2);
// createIndex 对已持久化的索引列应幂等可重建(不得静默跳过导致索引永久缺失) // createIndex 对已持久化的索引列应幂等可重建(不得静默跳过导致索引永久缺失)
@@ -147,7 +148,8 @@ describe('P1-A — 二级索引恢复', () => {
const idxLsm = (engine2 as any).secondaryIndexes.get('users:idx:city'); const idxLsm = (engine2 as any).secondaryIndexes.get('users:idx:city');
expect(idxLsm).toBeDefined(); expect(idxLsm).toBeDefined();
await idxLsm.prefetchRange('', '\uffff'); await idxLsm.prefetchRange('', '\uffff');
expect(idxLsm.rangeScan('', '\uffff')).toHaveLength(2); // v0.8.0: LSM.rangeScan 改为 async
expect(await idxLsm.rangeScan('', '\uffff')).toHaveLength(2);
// 索引查询应看到 WAL 恢复的行(修复前索引与主数据不一致 → 丢行) // 索引查询应看到 WAL 恢复的行(修复前索引与主数据不一致 → 丢行)
const byCity = await engine2.find('users', { table: 'users', where: { city: 'Shanghai' } }); const byCity = await engine2.find('users', { table: 'users', where: { city: 'Shanghai' } });
expect(byCity).toHaveLength(1); expect(byCity).toHaveLength(1);