Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 2b8a0ae

Browse files
author
Artur Zakirov
committed
Fix bugs of rumbuild()
1 parent 24c4532 commit 2b8a0ae

File tree

1 file changed

+13
-9
lines changed

1 file changed

+13
-9
lines changed

ruminsert.c

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -653,15 +653,19 @@ rumbuild(Relation heap, Relation index, struct IndexInfo *indexInfo)
653653
*/
654654
for (blkno = 0; blkno < buildstate.buildStats.nTotalPages; blkno++)
655655
{
656-
Buffer buffer = ReadBuffer(index, blkno);
657-
GenericXLogState *state = RumGenericXLogStart(index,
658-
buildstate.rumstate.isBuild);
656+
Buffer buffer;
657+
GenericXLogState *state;
659658

660-
RumGenericXLogRegisterBuffer(state, buffer, GENERIC_XLOG_FULL_IMAGE,
661-
buildstate.rumstate.isBuild);
662-
RumGenericXLogFinish(state, buildstate.rumstate.isBuild);
659+
CHECK_FOR_INTERRUPTS();
660+
661+
buffer = ReadBuffer(index, blkno);
662+
LockBuffer(buffer, RUM_SHARE);
663+
664+
state = GenericXLogStart(index);
665+
GenericXLogRegisterBuffer(state, buffer, GENERIC_XLOG_FULL_IMAGE);
666+
GenericXLogFinish(state);
663667

664-
ReleaseBuffer(buffer);
668+
UnlockReleaseBuffer(buffer);
665669
}
666670

667671
/*
@@ -685,7 +689,7 @@ rumbuildempty(Relation index)
685689
MetaBuffer;
686690
GenericXLogState *state;
687691

688-
state = RumGenericXLogStart(index, false);
692+
state = GenericXLogStart(index);
689693

690694
/* An empty RUM index has two pages. */
691695
MetaBuffer =
@@ -699,7 +703,7 @@ rumbuildempty(Relation index)
699703
RumInitMetabuffer(state, MetaBuffer, false);
700704
RumInitBuffer(state, RootBuffer, RUM_LEAF, false);
701705

702-
RumGenericXLogFinish(state, false);
706+
GenericXLogFinish(state);
703707

704708
/* Unlock and release the buffers. */
705709
UnlockReleaseBuffer(MetaBuffer);

0 commit comments

Comments
 (0)