Update metapage if needed for HNSW vacuum

This commit is contained in:
Andrew Kane
2023-08-19 12:19:42 -07:00
parent 651e4343c1
commit a62c045c93

View File

@@ -368,13 +368,24 @@ RepairGraph(HnswVacuumState * vacuumstate)
foreach(lc2, elements)
{
HnswElement element = (HnswElement) lfirst(lc2);
HnswElement entryPoint;
/* Check if any neighbors point to deleted values */
if (!NeedsUpdated(vacuumstate, element))
continue;
/* Refresh entry point for each element */
RepairGraphElement(vacuumstate, element, HnswGetEntryPoint(index));
entryPoint = HnswGetEntryPoint(index);
/* Repair connections */
RepairGraphElement(vacuumstate, element, entryPoint);
/*
* Update metapage if needed. Should only happen if entry point
* was replaced and highest point was outdated.
*/
if (entryPoint == NULL || element->level > entryPoint->level)
HnswUpdateMetaPage(index, HNSW_UPDATE_ENTRY_GREATER, element, InvalidBlockNumber, MAIN_FORKNUM);
}
/* Reset memory context */