pgvector.git / summary / log / commit / refs
commit efed873a3e2b7e379533daf6ea63f9df7af18f0a
Author: Andrew Kane <andrew@ankane.org>
Date: Wed Feb 28 19:33:14 2024 +0000
Revert "Replaced pairing heap with array in SelectNeighbors - closes #447"
This reverts commit 14b278dec93d63b8c8c813bf3ec97217d10328c4.
src/hnswutils.c | 16 +++++++---------
1 file changed, 7 insertions(+), 9 deletions(-)
diff --git a/src/hnswutils.c b/src/hnswutils.c
index 766cae5a..212214e0 100644
--- a/src/hnswutils.c
+++ b/src/hnswutils.c
@@ -952,9 +952,7 @@ SelectNeighbors(char *base, List *c, int lm, int lc, FmgrInfo *procinfo, Oid col
{
List *r = NIL;
List *w = list_copy(c);
- HnswCandidate **wd;
- int wdlen = 0;
- int wdoff = 0;
+ pairingheap *wd;
HnswNeighborArray *neighbors = HnswGetNeighbors(base, e2, lc);
bool mustCalculate = !neighbors->closerSet;
List *added = NIL;
@@ -963,7 +961,7 @@ SelectNeighbors(char *base, List *c, int lm, int lc, FmgrInfo *procinfo, Oid col
if (list_length(w) <= lm)
return w;
- wd = palloc(sizeof(HnswCandidate *) * list_length(w));
+ wd = pairingheap_allocate(CompareNearestCandidates, NULL);
/* Ensure order of candidates is deterministic for closer caching */
if (sortCandidates)
@@ -1029,21 +1027,21 @@ SelectNeighbors(char *base, List *c, int lm, int lc, FmgrInfo *procinfo, Oid col
if (e->closer)
r = lappend(r, e);
else
- wd[wdlen++] = e;
+ pairingheap_add(wd, &(CreatePairingHeapNode(e)->ph_node));
}
/* Cached value can only be used in future if sorted deterministically */
neighbors->closerSet = sortCandidates;
/* Keep pruned connections */
- while (wdoff < wdlen && list_length(r) < lm)
- r = lappend(r, wd[wdoff++]);
+ while (!pairingheap_is_empty(wd) && list_length(r) < lm)
+ r = lappend(r, ((HnswPairingHeapNode *) pairingheap_remove_first(wd))->inner);
/* Return pruned for update connections */
if (pruned != NULL)
{
- if (wdoff < wdlen)
- *pruned = wd[wdoff];
+ if (!pairingheap_is_empty(wd))
+ *pruned = ((HnswPairingHeapNode *) pairingheap_first(wd))->inner;
else
*pruned = linitial(w);
}
[parent: 14b278dec93d]