From c6515440fda219530e8356ff06447a0e471b3e82 Mon Sep 17 00:00:00 2001 From: thzxx Date: Mon, 14 Sep 2026 22:03:56 +0800 Subject: [PATCH] =?UTF-8?q?test:=20v042-hardening=20=E9=80=82=E9=85=8D=20L?= =?UTF-8?q?SM.rangeScan=20=E7=9A=84=20async=20=E5=8C=96=EF=BC=88v0.8.0=20?= =?UTF-8?q?=E8=AF=BB=E5=8F=96=E8=87=AA=E6=B4=BD=E6=94=B9=E5=8A=A8=E7=9A=84?= =?UTF-8?q?=E8=BF=9E=E5=B8=A6=E4=BF=AE=E6=AD=A3=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/v042-hardening.test.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/v042-hardening.test.ts b/tests/v042-hardening.test.ts index 0b04663..cebd2f1 100644 --- a/tests/v042-hardening.test.ts +++ b/tests/v042-hardening.test.ts @@ -117,7 +117,8 @@ describe('P1-A — 二级索引恢复', () => { expect(idxLsm).toBeDefined(); expect(idxLsm.getStats().sstableCount).toBeGreaterThan(0); 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' } }); expect(byEmail).toHaveLength(2); // createIndex 对已持久化的索引列应幂等可重建(不得静默跳过导致索引永久缺失) @@ -147,7 +148,8 @@ describe('P1-A — 二级索引恢复', () => { const idxLsm = (engine2 as any).secondaryIndexes.get('users:idx:city'); expect(idxLsm).toBeDefined(); await idxLsm.prefetchRange('', '\uffff'); - expect(idxLsm.rangeScan('', '\uffff')).toHaveLength(2); + // v0.8.0: LSM.rangeScan 改为 async + expect(await idxLsm.rangeScan('', '\uffff')).toHaveLength(2); // 索引查询应看到 WAL 恢复的行(修复前索引与主数据不一致 → 丢行) const byCity = await engine2.find('users', { table: 'users', where: { city: 'Shanghai' } }); expect(byCity).toHaveLength(1);