From 348b06948b85587ff5e51eaea1bcc0871c3042b8 Mon Sep 17 00:00:00 2001 From: adrinr Date: Thu, 16 Mar 2023 13:44:03 +0100 Subject: [PATCH] Test limits --- packages/backend-core/src/db/lucene.ts | 4 +++- packages/backend-core/src/db/tests/lucene.spec.ts | 11 +++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/packages/backend-core/src/db/lucene.ts b/packages/backend-core/src/db/lucene.ts index b9463b12fb..50ec35f955 100644 --- a/packages/backend-core/src/db/lucene.ts +++ b/packages/backend-core/src/db/lucene.ts @@ -495,13 +495,15 @@ export class QueryBuilder { this.excludeDocs() let skipRemaining = skip + let iterationFetched = 0 do { const toSkip = Math.min(QueryBuilder.maxLimit, skipRemaining) this.setLimit(toSkip) const { bookmark, rows } = await this.#execute() this.setBookmark(bookmark) + iterationFetched = rows.length skipRemaining -= rows.length - } while (skipRemaining > 0) + } while (skipRemaining > 0 && iterationFetched > 0) this.#includeDocs = prevIncludeDocs this.#limit = prevLimit diff --git a/packages/backend-core/src/db/tests/lucene.spec.ts b/packages/backend-core/src/db/tests/lucene.spec.ts index 2e2fa9f2e7..5a773a4817 100644 --- a/packages/backend-core/src/db/tests/lucene.spec.ts +++ b/packages/backend-core/src/db/tests/lucene.spec.ts @@ -210,6 +210,17 @@ describe("lucene", () => { docs.slice(skip, skip + resp.rows.length).map(expect.objectContaining) ) }) + + it("should not return results if skipping all docs", async () => { + const builder = new QueryBuilder(skipDbName, INDEX_NAME) + // Skipping 2 max limits plus a little bit more + const skip = docs.length + 1 + builder.setSkip(skip) + + const resp = await builder.run() + + expect(resp.rows.length).toBe(0) + }) }) })