From 3ed582fe92d9e2d411a54572fdd3aabce334ad88 Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Mon, 23 Oct 2023 00:42:01 -0700 Subject: [PATCH] Removed loaded --- src/hnsw.h | 1 - src/hnswbuild.c | 4 +++- src/hnswutils.c | 7 +++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/hnsw.h b/src/hnsw.h index 9f9dfae..5ae8f70 100644 --- a/src/hnsw.h +++ b/src/hnsw.h @@ -101,7 +101,6 @@ typedef struct HnswElementData List *heaptids; uint8 level; uint8 deleted; - bool loaded; HnswNeighborArray *neighbors; BlockNumber blkno; OffsetNumber offno; diff --git a/src/hnswbuild.c b/src/hnswbuild.c index 556f14a..16720ca 100644 --- a/src/hnswbuild.c +++ b/src/hnswbuild.c @@ -375,11 +375,13 @@ BuildCallback(Relation index, CALLBACK_ITEM_POINTER, Datum *values, if (inserted) { element->value = datumCopy(element->value, false, -1); - element->loaded = true; buildstate->elements = lappend(buildstate->elements, element); } else + { + element->value = PointerGetDatum(NULL); HnswFreeElement(element); + } /* Reset memory context */ MemoryContextReset(buildstate->tmpCtx); diff --git a/src/hnswutils.c b/src/hnswutils.c index 24beae5..ea40a78 100644 --- a/src/hnswutils.c +++ b/src/hnswutils.c @@ -202,7 +202,7 @@ HnswFreeElement(HnswElement element) { HnswFreeNeighbors(element); list_free_deep(element->heaptids); - if (element->loaded) + if (DatumGetPointer(element->value)) pfree(DatumGetPointer(element->value)); pfree(element); } @@ -230,7 +230,7 @@ HnswInitElementFromBlock(BlockNumber blkno, OffsetNumber offno) element->blkno = blkno; element->offno = offno; element->neighbors = NULL; - element->loaded = false; + element->value = PointerGetDatum(NULL); return element; } @@ -466,7 +466,6 @@ HnswLoadElementFromTuple(HnswElement element, HnswElementTuple etup, bool loadHe Datum value = PointerGetDatum(&etup->value); element->value = datumCopy(value, false, -1); - element->loaded = true; } } @@ -954,7 +953,7 @@ HnswUpdateConnection(HnswElement element, HnswCandidate * hc, int m, int lc, int { HnswCandidate *hc3 = ¤tNeighbors->items[i]; - if (!hc3->element->loaded) + if (!DatumGetPointer(hc3->element->value)) HnswLoadElement(hc3->element, &hc3->distance, &q, index, procinfo, collation, true); else hc3->distance = GetCandidateDistance(hc3, q, procinfo, collation);