From 94eeb83abe5c5490cf799fca84e9cbf815ae6b44 Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Sun, 31 Jul 2022 21:29:29 -0700 Subject: [PATCH] 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 9a0f68c..5f1cdfb 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);