diff --git a/src/hnswutils.c b/src/hnswutils.c index f78608b..d3ba911 100644 --- a/src/hnswutils.c +++ b/src/hnswutils.c @@ -806,9 +806,16 @@ HnswSearchLayer(char *base, Datum q, List *ep, int ef, int lc, Relation index, F if (eDistance < f->distance || wlen < ef) { - /* Copy e */ - HnswCandidate *ec = palloc(sizeof(HnswCandidate)); + HnswCandidate *ec; + Assert(!eElement->deleted); + + /* Make robust to issues */ + if (eElement->level < lc) + continue; + + /* Copy e */ + ec = palloc(sizeof(HnswCandidate)); HnswPtrStore(base, ec->element, eElement); ec->distance = eDistance;