mirror of
https://github.com/pgvector/pgvector.git
synced 2026-07-12 15:46:54 +08:00
Reduced code paths
This commit is contained in:
@@ -379,19 +379,13 @@ UpdateNeighborsInMemory(char *base, FmgrInfo *procinfo, Oid collation, HnswEleme
|
|||||||
for (int lc = e->level; lc >= 0; lc--)
|
for (int lc = e->level; lc >= 0; lc--)
|
||||||
{
|
{
|
||||||
int lm = HnswGetLayerM(m, lc);
|
int lm = HnswGetLayerM(m, lc);
|
||||||
HnswNeighborArray *neighbors = HnswGetNeighbors(base, e, lc);
|
Size neighborsSize = HNSW_NEIGHBOR_ARRAY_SIZE(lm);
|
||||||
|
HnswNeighborArray *neighbors = palloc(neighborsSize);
|
||||||
|
|
||||||
/* Copy neighbors to local memory if needed */
|
/* Copy neighbors to local memory */
|
||||||
if (base != NULL)
|
LWLockAcquire(&e->lock, LW_SHARED);
|
||||||
{
|
memcpy(neighbors, HnswGetNeighbors(base, e, lc), neighborsSize);
|
||||||
Size neighborsSize = HNSW_NEIGHBOR_ARRAY_SIZE(HnswGetLayerM(m, lc));
|
LWLockRelease(&e->lock);
|
||||||
HnswNeighborArray *neighborsData = palloc(neighborsSize);
|
|
||||||
|
|
||||||
LWLockAcquire(&e->lock, LW_SHARED);
|
|
||||||
memcpy(neighborsData, neighbors, neighborsSize);
|
|
||||||
LWLockRelease(&e->lock);
|
|
||||||
neighbors = neighborsData;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 0; i < neighbors->length; i++)
|
for (int i = 0; i < neighbors->length; i++)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user