pgvector.git / summary / log / commit / refs

commit    94eeb83abe5c5490cf799fca84e9cbf815ae6b44
Author:   Andrew Kane <andrew@ankane.org>
Date:     Mon Aug 01 04:29:29 2022 +0000

    Commit pages with tuple


src/ivfinsert.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/ivfinsert.c b/src/ivfinsert.c index 9a0f68cb..5f1cdfbf 100644 --- a/src/ivfinsert.c +++ b/src/ivfinsert.c @@ -60,6 +60,7 @@ static void InsertTuple(Relation rel, IndexTuple itup, Relation heapRel, Datum *values) { Buffer buf; + Buffer prevbuf = InvalidBuffer; Page page; GenericXLogState *state; Size itemsz; @@ -105,20 +106,18 @@ InsertTuple(Relation rel, IndexTuple itup, Relation heapRel, Datum *values) /* Update previous buffer */ IvfflatPageGetOpaque(page)->nextblkno = insertPage; + MarkBufferDirty(buf); /* Init page */ PageInit(newpage, BufferGetPageSize(newbuf), sizeof(IvfflatPageOpaqueData)); IvfflatPageGetOpaque(newpage)->nextblkno = InvalidBlockNumber; IvfflatPageGetOpaque(newpage)->page_id = IVFFLAT_PAGE_ID; - /* Commit */ - MarkBufferDirty(buf); - MarkBufferDirty(newbuf); - GenericXLogFinish(state); + prevbuf = buf; + buf = newbuf; + page = newpage; - /* Unlock */ - UnlockReleaseBuffer(buf); - UnlockReleaseBuffer(newbuf); + break; } } @@ -128,6 +127,9 @@ InsertTuple(Relation rel, IndexTuple itup, Relation heapRel, Datum *values) IvfflatCommitBuffer(buf, state); + if (BufferIsValid(prevbuf)) + UnlockReleaseBuffer(prevbuf); + /* Update the insert page */ if (insertPage != originalInsertPage) IvfflatUpdateList(rel, state, listInfo, insertPage, originalInsertPage, InvalidBlockNumber, MAIN_FORKNUM); [parent: 6866939090cb]