Improved code [skip ci]

This commit is contained in:
Andrew Kane
2023-08-10 15:23:26 -07:00
parent 92e25e7733
commit 27ccb5fa7a
3 changed files with 6 additions and 6 deletions

View File

@@ -258,7 +258,7 @@ List *HnswSearchLayer(Datum q, List *ep, int ef, int lc, Relation index, Fmgr
HnswElement HnswGetEntryPoint(Relation index); HnswElement HnswGetEntryPoint(Relation index);
HnswElement HnswInitElement(ItemPointer tid, int m, double ml, int maxLevel); HnswElement HnswInitElement(ItemPointer tid, int m, double ml, int maxLevel);
void HnswFreeElement(HnswElement element); void HnswFreeElement(HnswElement element);
void HnswInsertElement(HnswElement element, HnswElement entryPoint, Relation index, FmgrInfo *procinfo, Oid collation, int m, int efConstruction, bool vacuuming); void HnswInsertElement(HnswElement element, HnswElement entryPoint, Relation index, FmgrInfo *procinfo, Oid collation, int m, int efConstruction, bool existing);
HnswElement HnswFindDuplicate(HnswElement e); HnswElement HnswFindDuplicate(HnswElement e);
HnswCandidate *HnswEntryCandidate(HnswElement em, Datum q, Relation rel, FmgrInfo *procinfo, Oid collation, bool loadVec); HnswCandidate *HnswEntryCandidate(HnswElement em, Datum q, Relation rel, FmgrInfo *procinfo, Oid collation, bool loadVec);
void HnswUpdateMetaPage(Relation index, bool updateEntry, HnswElement entryPoint, BlockNumber insertPage, ForkNumber forkNum); void HnswUpdateMetaPage(Relation index, bool updateEntry, HnswElement entryPoint, BlockNumber insertPage, ForkNumber forkNum);

View File

@@ -426,7 +426,7 @@ WriteElement(Relation index, FmgrInfo *procinfo, Oid collation, HnswElement elem
if (entryPoint == NULL && newEntryPoint != NULL) if (entryPoint == NULL && newEntryPoint != NULL)
{ {
/* Try again with new entry point */ /* Try again with new entry point */
HnswInsertElement(element, newEntryPoint, index, procinfo, collation, m, efConstruction, false); HnswInsertElement(element, newEntryPoint, index, procinfo, collation, m, efConstruction, true);
UpdateNeighborPages(index, procinfo, collation, element, m); UpdateNeighborPages(index, procinfo, collation, element, m);
} }
else else

View File

@@ -885,15 +885,15 @@ HnswUpdateConnection(HnswElement element, HnswCandidate * hc, int m, int lc, int
* Algorithm 1 from paper * Algorithm 1 from paper
*/ */
void void
HnswInsertElement(HnswElement element, HnswElement entryPoint, Relation index, FmgrInfo *procinfo, Oid collation, int m, int efConstruction, bool vacuuming) HnswInsertElement(HnswElement element, HnswElement entryPoint, Relation index, FmgrInfo *procinfo, Oid collation, int m, int efConstruction, bool existing)
{ {
List *ep = NIL; List *ep = NIL;
List *w; List *w;
int level = element->level; int level = element->level;
int entryLevel; int entryLevel;
Datum q = PointerGetDatum(element->vec); Datum q = PointerGetDatum(element->vec);
BlockNumber *skipPage = vacuuming ? &element->neighborPage : NULL; BlockNumber *skipPage = existing ? &element->neighborPage : NULL;
OffsetNumber *skipOffno = vacuuming ? &element->neighborOffno : NULL; OffsetNumber *skipOffno = existing ? &element->neighborOffno : NULL;
bool removeEntryPoint; bool removeEntryPoint;
HnswCandidate *entryCandidate; HnswCandidate *entryCandidate;
@@ -903,7 +903,7 @@ HnswInsertElement(HnswElement element, HnswElement entryPoint, Relation index, F
entryCandidate = HnswEntryCandidate(entryPoint, q, index, procinfo, collation, true); entryCandidate = HnswEntryCandidate(entryPoint, q, index, procinfo, collation, true);
ep = lappend(ep, entryCandidate); ep = lappend(ep, entryCandidate);
entryLevel = entryPoint->level; entryLevel = entryPoint->level;
removeEntryPoint = vacuuming && list_length(entryPoint->heaptids) == 0; removeEntryPoint = existing && list_length(entryPoint->heaptids) == 0;
} }
else else
{ {