From a156f6c7ae2aa8594623c62309551d7644108d4a Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Mon, 4 Dec 2023 15:00:32 -0800 Subject: [PATCH] Fixed invalid memory alloc request size error with HNSW - fixes #43 --- CHANGELOG.md | 1 + src/hnswbuild.c | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 21c9866..dc3589d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ ## 0.5.2 (unreleased) - Added support for on-disk parallel index builds for HNSW +- Fixed `invalid memory alloc request size` error with HNSW ## 0.5.1 (2023-10-10) diff --git a/src/hnswbuild.c b/src/hnswbuild.c index ea7b889..8f4e0c7 100644 --- a/src/hnswbuild.c +++ b/src/hnswbuild.c @@ -56,6 +56,8 @@ #define PARALLEL_KEY_HNSW_SHARED UINT64CONST(0xA000000000000001) #define PARALLEL_KEY_QUERY_TEXT UINT64CONST(0xA000000000000002) +#define LIST_MAX_LENGTH ((1 << 26) - 1) + /* * Create the metapage */ @@ -381,7 +383,7 @@ BuildCallback(Relation index, CALLBACK_ITEM_POINTER, Datum *values, if (isnull[0]) return; - if (buildstate->memoryLeft <= 0) + if (buildstate->memoryLeft <= 0 || list_length(buildstate->elements) == LIST_MAX_LENGTH) { if (!buildstate->flushed) {