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]