IndexBuildResult *result;
double reltuples;
GISTBuildState buildstate;
- Buffer buffer;
- Page page;
+ Buffer rootbuffer;
+ Page rootpage;
MemoryContext oldcxt = CurrentMemoryContext;
int fillfactor;
buildstate.giststate->tempCxt = createTempGistContext();
/* initialize the root page */
- buffer = gistNewBuffer(index);
- page = BufferGetPage(buffer);
+ rootbuffer = gistNewBuffer(index);
+ rootpage = BufferGetPage(rootbuffer);
START_CRIT_SECTION();
- GISTInitBuffer(buffer, F_LEAF);
+ GISTInitBuffer(rootbuffer, F_LEAF | F_ROOT);
- MarkBufferDirty(buffer);
+ MarkBufferDirty(rootbuffer);
if (RelationNeedsWAL(index))
{
gistxlogCreateIndex xlrec;
xlrec.node = index->rd_node;
- xlrec.blkno = BufferGetBlockNumber(buffer);
+ xlrec.blkno = BufferGetBlockNumber(rootbuffer);
rdata.data = (char *) &xlrec;
rdata.len = sizeof(RelFileNode);
rdata.next = NULL;
recptr = XLogInsert(RM_GIST_ID, XLOG_GIST_CREATE_INDEX, &rdata);
- PageSetLSN(page, recptr);
- PageSetTLI(page, ThisTimeLineID);
+ PageSetLSN(rootpage, recptr);
+ PageSetTLI(rootpage, ThisTimeLineID);
}
else
- PageSetLSN(page, GetXLogRecPtrForTemp());
+ PageSetLSN(rootpage, GetXLogRecPtrForTemp());
- UnlockReleaseBuffer(buffer);
+ UnlockReleaseBuffer(rootbuffer);
END_CRIT_SECTION();