Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitd7d92b4

Browse files
author
Artur Zakirov
committed
Fixes
1 parent7dabdca commitd7d92b4

File tree

4 files changed

+34
-33
lines changed

4 files changed

+34
-33
lines changed

‎rumbtree.c

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -380,8 +380,7 @@ rumInsertValue(Relation index, RumBtree btree, RumBtreeStack *stack,
380380
btree->placeToPage(btree,stack->buffer,stack->off,&rdata);
381381

382382
state=GenericXLogStart(index);
383-
page=GenericXLogRegisterBuffer(state,stack->buffer,
384-
GENERIC_XLOG_FULL_IMAGE);
383+
page=GenericXLogRegisterBuffer(state,stack->buffer,0);
385384
GenericXLogFinish(state);
386385

387386
LockBuffer(stack->buffer,RUM_UNLOCK);
@@ -426,14 +425,11 @@ rumInsertValue(Relation index, RumBtree btree, RumBtreeStack *stack,
426425

427426
state=GenericXLogStart(index);
428427

429-
page=GenericXLogRegisterBuffer(state,stack->buffer,
430-
GENERIC_XLOG_FULL_IMAGE);
428+
page=GenericXLogRegisterBuffer(state,stack->buffer,0);
431429

432-
lpage=GenericXLogRegisterBuffer(state,lbuffer,
433-
GENERIC_XLOG_FULL_IMAGE);
430+
lpage=GenericXLogRegisterBuffer(state,lbuffer,0);
434431

435-
rpage=GenericXLogRegisterBuffer(state,rbuffer,
436-
GENERIC_XLOG_FULL_IMAGE);
432+
rpage=GenericXLogRegisterBuffer(state,rbuffer,0);
437433

438434

439435
RumPageGetOpaque(rpage)->rightlink=InvalidBlockNumber;
@@ -472,11 +468,9 @@ rumInsertValue(Relation index, RumBtree btree, RumBtreeStack *stack,
472468

473469
state=GenericXLogStart(index);
474470

475-
lpage=GenericXLogRegisterBuffer(state,stack->buffer,
476-
GENERIC_XLOG_FULL_IMAGE);
471+
lpage=GenericXLogRegisterBuffer(state,stack->buffer,0);
477472

478-
rpage=GenericXLogRegisterBuffer(state,rbuffer,
479-
GENERIC_XLOG_FULL_IMAGE);
473+
rpage=GenericXLogRegisterBuffer(state,rbuffer,0);
480474

481475
RumPageGetOpaque(rpage)->rightlink=savedRightLink;
482476
RumPageGetOpaque(newlpage)->rightlink=BufferGetBlockNumber(rbuffer);

‎rumfast.c

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -221,8 +221,7 @@ rumHeapTupleFastInsert(RumState *rumstate, RumTupleCollector *collector)
221221

222222
state=GenericXLogStart(rumstate->index);
223223
metabuffer=ReadBuffer(index,RUM_METAPAGE_BLKNO);
224-
metapage=GenericXLogRegisterBuffer(state,metabuffer,
225-
GENERIC_XLOG_FULL_IMAGE);
224+
metapage=GenericXLogRegisterBuffer(state,metabuffer,0);
226225

227226
if (collector->sumsize+collector->ntuples*sizeof(ItemIdData)>RumListPageSize)
228227
{
@@ -290,8 +289,7 @@ rumHeapTupleFastInsert(RumState *rumstate, RumTupleCollector *collector)
290289

291290
buffer=ReadBuffer(index,metadata->tail);
292291
LockBuffer(buffer,RUM_EXCLUSIVE);
293-
page=GenericXLogRegisterBuffer(state,buffer,
294-
GENERIC_XLOG_FULL_IMAGE);
292+
page=GenericXLogRegisterBuffer(state,buffer,0);
295293

296294
rdata[0].next=rdata+1;
297295

@@ -329,8 +327,7 @@ rumHeapTupleFastInsert(RumState *rumstate, RumTupleCollector *collector)
329327

330328
buffer=ReadBuffer(index,metadata->tail);
331329
LockBuffer(buffer,RUM_EXCLUSIVE);
332-
page=GenericXLogRegisterBuffer(state,buffer,
333-
GENERIC_XLOG_FULL_IMAGE);
330+
page=GenericXLogRegisterBuffer(state,buffer,0);
334331

335332
off= (PageIsEmpty(page)) ?FirstOffsetNumber :
336333
OffsetNumberNext(PageGetMaxOffsetNumber(page));
@@ -597,8 +594,7 @@ shiftList(Relation index, Buffer metabuffer, BlockNumber newHead,
597594
buffers[data.ndeleted]=ReadBuffer(index,blknoToDelete);
598595
LockBuffer(buffers[data.ndeleted],RUM_EXCLUSIVE);
599596

600-
page=GenericXLogRegisterBuffer(state,buffers[data.ndeleted],
601-
GENERIC_XLOG_FULL_IMAGE);
597+
page=GenericXLogRegisterBuffer(state,buffers[data.ndeleted],0);
602598

603599
data.ndeleted++;
604600

@@ -641,8 +637,7 @@ shiftList(Relation index, Buffer metabuffer, BlockNumber newHead,
641637

642638
for (i=0;i<data.ndeleted;i++)
643639
{
644-
page=GenericXLogRegisterBuffer(state,buffers[i],
645-
GENERIC_XLOG_FULL_IMAGE);
640+
page=GenericXLogRegisterBuffer(state,buffers[i],0);
646641

647642
RumPageGetOpaque(page)->flags=RUM_DELETED;
648643
MarkBufferDirty(buffers[i]);
@@ -812,15 +807,20 @@ rumInsertCleanup(RumState *rumstate,
812807
BuildAccumulatoraccum;
813808
KeyArraydatums;
814809
BlockNumberblkno;
810+
GenericXLogState*metastate;
811+
812+
metastate=GenericXLogStart(rumstate->index);
815813

816814
metabuffer=ReadBuffer(index,RUM_METAPAGE_BLKNO);
817815
LockBuffer(metabuffer,RUM_SHARE);
818-
metapage=BufferGetPage(metabuffer,NULL,NULL,BGP_NO_SNAPSHOT_TEST);
816+
817+
metapage=GenericXLogRegisterBuffer(metastate,metabuffer,0);
819818
metadata=RumPageGetMeta(metapage);
820819

821820
if (metadata->head==InvalidBlockNumber)
822821
{
823822
/* Nothing to do */
823+
GenericXLogAbort(metastate);
824824
UnlockReleaseBuffer(metabuffer);
825825
return;
826826
}
@@ -829,9 +829,6 @@ rumInsertCleanup(RumState *rumstate,
829829
* Read and lock head of pending list
830830
*/
831831
blkno=metadata->head;
832-
buffer=ReadBuffer(index,blkno);
833-
LockBuffer(buffer,RUM_SHARE);
834-
page=BufferGetPage(buffer,NULL,NULL,BGP_NO_SNAPSHOT_TEST);
835832

836833
LockBuffer(metabuffer,RUM_UNLOCK);
837834

@@ -857,9 +854,18 @@ rumInsertCleanup(RumState *rumstate,
857854
*/
858855
for (;;)
859856
{
857+
GenericXLogState*state;
858+
859+
state=GenericXLogStart(index);
860+
861+
buffer=ReadBuffer(index,blkno);
862+
LockBuffer(buffer,RUM_SHARE);
863+
page=GenericXLogRegisterBuffer(state,buffer,0);
864+
860865
if (RumPageIsDeleted(page))
861866
{
862867
/* another cleanup process is running concurrently */
868+
GenericXLogAbort(state);
863869
UnlockReleaseBuffer(buffer);
864870
break;
865871
}
@@ -932,6 +938,7 @@ rumInsertCleanup(RumState *rumstate,
932938
if (RumPageIsDeleted(page))
933939
{
934940
/* another cleanup process is running concurrently */
941+
GenericXLogAbort(state);
935942
UnlockReleaseBuffer(buffer);
936943
LockBuffer(metabuffer,RUM_UNLOCK);
937944
break;
@@ -975,6 +982,7 @@ rumInsertCleanup(RumState *rumstate,
975982
* Remember next page - it will become the new list head
976983
*/
977984
blkno=RumPageGetOpaque(page)->rightlink;
985+
GenericXLogFinish(state);
978986
UnlockReleaseBuffer(buffer);/* shiftList will do exclusive
979987
* locking */
980988

@@ -1008,18 +1016,18 @@ rumInsertCleanup(RumState *rumstate,
10081016
else
10091017
{
10101018
blkno=RumPageGetOpaque(page)->rightlink;
1019+
GenericXLogFinish(state);
10111020
UnlockReleaseBuffer(buffer);
10121021
}
10131022

10141023
/*
10151024
* Read next page in pending list
10161025
*/
10171026
vacuum_delay_point();
1018-
buffer=ReadBuffer(index,blkno);
1019-
LockBuffer(buffer,RUM_SHARE);
1020-
page=BufferGetPage(buffer,NULL,NULL,BGP_NO_SNAPSHOT_TEST);
10211027
}
10221028

1029+
GenericXLogFinish(metastate);
1030+
10231031
ReleaseBuffer(metabuffer);
10241032

10251033
/* Clean up temporary space */

‎rumutil.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -759,8 +759,7 @@ rumUpdateStats(Relation index, const GinStatsData *stats)
759759

760760
metabuffer=ReadBuffer(index,RUM_METAPAGE_BLKNO);
761761
LockBuffer(metabuffer,RUM_EXCLUSIVE);
762-
metapage=GenericXLogRegisterBuffer(state,metabuffer,
763-
GENERIC_XLOG_FULL_IMAGE);
762+
metapage=GenericXLogRegisterBuffer(state,metabuffer,0);
764763
metadata=RumPageGetMeta(metapage);
765764

766765
START_CRIT_SECTION();

‎rumvacuum.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ xlogVacuumPage(Relation index, Buffer buffer, OffsetNumber attrnum, RumState *ru
218218
return;
219219

220220
state=GenericXLogStart(index);
221-
page=GenericXLogRegisterBuffer(state,buffer,GENERIC_XLOG_FULL_IMAGE);
221+
page=GenericXLogRegisterBuffer(state,buffer,0);
222222

223223
Assert(RumPageIsLeaf(page));
224224

@@ -392,7 +392,7 @@ rumDeletePage(RumVacuumState *gvs, BlockNumber deleteBlkno, BlockNumber leftBlkn
392392
#endif
393393
RumPageDeletePostingItem(parentPage,myoff);
394394

395-
page=GenericXLogRegisterBuffer(state,dBuffer,GENERIC_XLOG_FULL_IMAGE);
395+
page=GenericXLogRegisterBuffer(state,dBuffer,0);
396396

397397
/*
398398
* we shouldn't change rightlink field to save workability of running

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp