mirror of
https://github.com/pgvector/pgvector.git
synced 2026-07-13 16:16:56 +08:00
DRY code
This commit is contained in:
@@ -255,7 +255,7 @@ InsertTuples(Relation index, IvfflatBuildState * buildstate, ForkNumber forkNum)
|
|||||||
CHECK_FOR_INTERRUPTS();
|
CHECK_FOR_INTERRUPTS();
|
||||||
|
|
||||||
buf = IvfflatNewBuffer(index, forkNum);
|
buf = IvfflatNewBuffer(index, forkNum);
|
||||||
IvfflatInitPage(index, &buf, &page, &state);
|
IvfflatInitRegisterPage(index, &buf, &page, &state);
|
||||||
|
|
||||||
startPage = BufferGetBlockNumber(buf);
|
startPage = BufferGetBlockNumber(buf);
|
||||||
|
|
||||||
@@ -412,7 +412,7 @@ CreateMetaPage(Relation index, int dimensions, int lists, ForkNumber forkNum)
|
|||||||
IvfflatMetaPage metap;
|
IvfflatMetaPage metap;
|
||||||
|
|
||||||
buf = IvfflatNewBuffer(index, forkNum);
|
buf = IvfflatNewBuffer(index, forkNum);
|
||||||
IvfflatInitPage(index, &buf, &page, &state);
|
IvfflatInitRegisterPage(index, &buf, &page, &state);
|
||||||
|
|
||||||
/* Set metapage data */
|
/* Set metapage data */
|
||||||
metap = IvfflatPageGetMeta(page);
|
metap = IvfflatPageGetMeta(page);
|
||||||
@@ -445,7 +445,7 @@ CreateListPages(Relation index, VectorArray centers, int dimensions,
|
|||||||
list = palloc(itemsz);
|
list = palloc(itemsz);
|
||||||
|
|
||||||
buf = IvfflatNewBuffer(index, forkNum);
|
buf = IvfflatNewBuffer(index, forkNum);
|
||||||
IvfflatInitPage(index, &buf, &page, &state);
|
IvfflatInitRegisterPage(index, &buf, &page, &state);
|
||||||
|
|
||||||
for (i = 0; i < lists; i++)
|
for (i = 0; i < lists; i++)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -208,7 +208,8 @@ void IvfflatUpdateList(Relation index, GenericXLogState *state, ListInfo listIn
|
|||||||
void IvfflatCommitBuffer(Buffer buf, GenericXLogState *state);
|
void IvfflatCommitBuffer(Buffer buf, GenericXLogState *state);
|
||||||
void IvfflatAppendPage(Relation index, Buffer *buf, Page *page, GenericXLogState **state, ForkNumber forkNum);
|
void IvfflatAppendPage(Relation index, Buffer *buf, Page *page, GenericXLogState **state, ForkNumber forkNum);
|
||||||
Buffer IvfflatNewBuffer(Relation index, ForkNumber forkNum);
|
Buffer IvfflatNewBuffer(Relation index, ForkNumber forkNum);
|
||||||
void IvfflatInitPage(Relation index, Buffer *buf, Page *page, GenericXLogState **state);
|
void IvfflatInitPage(Buffer buf, Page page);
|
||||||
|
void IvfflatInitRegisterPage(Relation index, Buffer *buf, Page *page, GenericXLogState **state);
|
||||||
|
|
||||||
/* Index access methods */
|
/* Index access methods */
|
||||||
IndexBuildResult *ivfflatbuild(Relation heap, Relation index, IndexInfo *indexInfo);
|
IndexBuildResult *ivfflatbuild(Relation heap, Relation index, IndexInfo *indexInfo);
|
||||||
|
|||||||
@@ -107,9 +107,7 @@ InsertTuple(Relation rel, IndexTuple itup, Relation heapRel, Datum *values)
|
|||||||
IvfflatPageGetOpaque(page)->nextblkno = insertPage;
|
IvfflatPageGetOpaque(page)->nextblkno = insertPage;
|
||||||
|
|
||||||
/* Init page */
|
/* Init page */
|
||||||
PageInit(newpage, BufferGetPageSize(newbuf), sizeof(IvfflatPageOpaqueData));
|
IvfflatInitPage(newbuf, newpage);
|
||||||
IvfflatPageGetOpaque(newpage)->nextblkno = InvalidBlockNumber;
|
|
||||||
IvfflatPageGetOpaque(newpage)->page_id = IVFFLAT_PAGE_ID;
|
|
||||||
|
|
||||||
/* Commit */
|
/* Commit */
|
||||||
MarkBufferDirty(buf);
|
MarkBufferDirty(buf);
|
||||||
|
|||||||
@@ -107,13 +107,22 @@ IvfflatNewBuffer(Relation index, ForkNumber forkNum)
|
|||||||
* Init page
|
* Init page
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
IvfflatInitPage(Relation index, Buffer *buf, Page *page, GenericXLogState **state)
|
IvfflatInitPage(Buffer buf, Page page)
|
||||||
|
{
|
||||||
|
PageInit(page, BufferGetPageSize(buf), sizeof(IvfflatPageOpaqueData));
|
||||||
|
IvfflatPageGetOpaque(page)->nextblkno = InvalidBlockNumber;
|
||||||
|
IvfflatPageGetOpaque(page)->page_id = IVFFLAT_PAGE_ID;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Init and register page
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
IvfflatInitRegisterPage(Relation index, Buffer *buf, Page *page, GenericXLogState **state)
|
||||||
{
|
{
|
||||||
*state = GenericXLogStart(index);
|
*state = GenericXLogStart(index);
|
||||||
*page = GenericXLogRegisterBuffer(*state, *buf, GENERIC_XLOG_FULL_IMAGE);
|
*page = GenericXLogRegisterBuffer(*state, *buf, GENERIC_XLOG_FULL_IMAGE);
|
||||||
PageInit(*page, BufferGetPageSize(*buf), sizeof(IvfflatPageOpaqueData));
|
IvfflatInitPage(*buf, *page);
|
||||||
IvfflatPageGetOpaque(*page)->nextblkno = InvalidBlockNumber;
|
|
||||||
IvfflatPageGetOpaque(*page)->page_id = IVFFLAT_PAGE_ID;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -143,9 +152,7 @@ IvfflatAppendPage(Relation index, Buffer *buf, Page *page, GenericXLogState **st
|
|||||||
IvfflatPageGetOpaque(*page)->nextblkno = BufferGetBlockNumber(newbuf);
|
IvfflatPageGetOpaque(*page)->nextblkno = BufferGetBlockNumber(newbuf);
|
||||||
|
|
||||||
/* Init new page */
|
/* Init new page */
|
||||||
PageInit(newpage, BufferGetPageSize(newbuf), sizeof(IvfflatPageOpaqueData));
|
IvfflatInitPage(newbuf, newpage);
|
||||||
IvfflatPageGetOpaque(newpage)->nextblkno = InvalidBlockNumber;
|
|
||||||
IvfflatPageGetOpaque(newpage)->page_id = IVFFLAT_PAGE_ID;
|
|
||||||
|
|
||||||
/* Commit */
|
/* Commit */
|
||||||
MarkBufferDirty(*buf);
|
MarkBufferDirty(*buf);
|
||||||
|
|||||||
Reference in New Issue
Block a user