mirror of
https://github.com/pgvector/pgvector.git
synced 2026-07-11 15:16:54 +08:00
Revert "Improved insert logic [skip ci]"
This reverts commit 573a336f53.
This commit is contained in:
@@ -128,7 +128,6 @@ WriteNewElementPages(Relation index, HnswElement e, int m, BlockNumber insertPag
|
|||||||
OffsetNumber freeOffno = InvalidOffsetNumber;
|
OffsetNumber freeOffno = InvalidOffsetNumber;
|
||||||
OffsetNumber freeNeighborOffno = InvalidOffsetNumber;
|
OffsetNumber freeNeighborOffno = InvalidOffsetNumber;
|
||||||
BlockNumber firstFreePage = InvalidBlockNumber;
|
BlockNumber firstFreePage = InvalidBlockNumber;
|
||||||
bool lastPage;
|
|
||||||
|
|
||||||
/* Calculate sizes */
|
/* Calculate sizes */
|
||||||
etupSize = HNSW_ELEMENT_TUPLE_SIZE(dimensions);
|
etupSize = HNSW_ELEMENT_TUPLE_SIZE(dimensions);
|
||||||
@@ -153,14 +152,9 @@ WriteNewElementPages(Relation index, HnswElement e, int m, BlockNumber insertPag
|
|||||||
state = GenericXLogStart(index);
|
state = GenericXLogStart(index);
|
||||||
page = GenericXLogRegisterBuffer(state, buf, 0);
|
page = GenericXLogRegisterBuffer(state, buf, 0);
|
||||||
|
|
||||||
lastPage = !BlockNumberIsValid(HnswPageGetOpaque(page)->nextblkno);
|
/* First, try the fastest path */
|
||||||
|
/* Space for both tuples on the current page */
|
||||||
/*
|
if (PageGetFreeSpace(page) >= combinedSize)
|
||||||
* First, try the fastest path: space for both tuples on the current
|
|
||||||
* page. Only check on last page to avoid splitting existing tuples in
|
|
||||||
* rare cases (even though this is technically fine).
|
|
||||||
*/
|
|
||||||
if (lastPage && PageGetFreeSpace(page) >= combinedSize)
|
|
||||||
{
|
{
|
||||||
nbuf = buf;
|
nbuf = buf;
|
||||||
npage = page;
|
npage = page;
|
||||||
@@ -178,7 +172,7 @@ WriteNewElementPages(Relation index, HnswElement e, int m, BlockNumber insertPag
|
|||||||
|
|
||||||
/* Finally, try space for element only if last page */
|
/* Finally, try space for element only if last page */
|
||||||
/* Skip if both tuples can fit on the same page */
|
/* Skip if both tuples can fit on the same page */
|
||||||
if (lastPage && combinedSize > maxSize && PageGetFreeSpace(page) >= etupSize)
|
if (combinedSize > maxSize && PageGetFreeSpace(page) >= etupSize && !BlockNumberIsValid(HnswPageGetOpaque(page)->nextblkno))
|
||||||
{
|
{
|
||||||
HnswInsertAppendPage(index, &nbuf, &npage, state, page);
|
HnswInsertAppendPage(index, &nbuf, &npage, state, page);
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user