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

Commitf9e5bae

Browse files
author
Artur Zakirov
committed
Fixes for rumInsertCleanup
1 parent14a6bce commitf9e5bae

File tree

2 files changed

+10
-33
lines changed

2 files changed

+10
-33
lines changed

‎rumbtree.c

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -426,9 +426,7 @@ rumInsertValue(Relation index, RumBtree btree, RumBtreeStack *stack,
426426
state=GenericXLogStart(index);
427427

428428
page=GenericXLogRegisterBuffer(state,stack->buffer,0);
429-
430429
lpage=GenericXLogRegisterBuffer(state,lbuffer,0);
431-
432430
rpage=GenericXLogRegisterBuffer(state,rbuffer,0);
433431

434432
RumPageGetOpaque(rpage)->rightlink=InvalidBlockNumber;
@@ -468,7 +466,6 @@ rumInsertValue(Relation index, RumBtree btree, RumBtreeStack *stack,
468466
state=GenericXLogStart(index);
469467

470468
lpage=GenericXLogRegisterBuffer(state,stack->buffer,0);
471-
472469
rpage=GenericXLogRegisterBuffer(state,rbuffer,0);
473470

474471
RumPageGetOpaque(rpage)->rightlink=savedRightLink;

‎rumfast.c

Lines changed: 10 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -519,8 +519,6 @@ shiftList(Relation index, Buffer metabuffer, BlockNumber newHead,
519519
Bufferbuffers[RUM_NDELETE_AT_ONCE];
520520
GenericXLogState*state;
521521

522-
state=GenericXLogStart(index);
523-
524522
data.node=index->rd_node;
525523

526524
data.ndeleted=0;
@@ -530,13 +528,12 @@ shiftList(Relation index, Buffer metabuffer, BlockNumber newHead,
530528
buffers[data.ndeleted]=ReadBuffer(index,blknoToDelete);
531529
LockBuffer(buffers[data.ndeleted],RUM_EXCLUSIVE);
532530

533-
page=GenericXLogRegisterBuffer(state,buffers[data.ndeleted],0);
531+
page=BufferGetPage(buffers[data.ndeleted]);
534532

535533
data.ndeleted++;
536534

537535
if (RumPageIsDeleted(page))
538536
{
539-
GenericXLogAbort(state);
540537
GenericXLogAbort(metastate);
541538
/* concurrent cleanup process is detected */
542539
for (i=0;i<data.ndeleted;i++)
@@ -552,8 +549,6 @@ shiftList(Relation index, Buffer metabuffer, BlockNumber newHead,
552549
if (stats)
553550
stats->pages_deleted+=data.ndeleted;
554551

555-
START_CRIT_SECTION();
556-
557552
metadata->head=blknoToDelete;
558553

559554
Assert(metadata->nPendingPages >=data.ndeleted);
@@ -573,18 +568,15 @@ shiftList(Relation index, Buffer metabuffer, BlockNumber newHead,
573568

574569
for (i=0;i<data.ndeleted;i++)
575570
{
571+
state=GenericXLogStart(index);
576572
page=GenericXLogRegisterBuffer(state,buffers[i],0);
577573

578574
RumPageGetOpaque(page)->flags=RUM_DELETED;
579-
MarkBufferDirty(buffers[i]);
575+
GenericXLogFinish(state);
580576
}
581577

582-
GenericXLogFinish(state);
583-
584578
for (i=0;i<data.ndeleted;i++)
585579
UnlockReleaseBuffer(buffers[i]);
586-
587-
END_CRIT_SECTION();
588580
}while (blknoToDelete!=newHead);
589581

590582
GenericXLogFinish(metastate);
@@ -743,20 +735,16 @@ rumInsertCleanup(RumState *rumstate,
743735
BuildAccumulatoraccum;
744736
KeyArraydatums;
745737
BlockNumberblkno;
746-
GenericXLogState*metastate;
747-
748-
metastate=GenericXLogStart(rumstate->index);
749738

750739
metabuffer=ReadBuffer(index,RUM_METAPAGE_BLKNO);
751740
LockBuffer(metabuffer,RUM_SHARE);
752741

753-
metapage=GenericXLogRegisterBuffer(metastate,metabuffer,0);
742+
metapage=BufferGetPage(metabuffer);
754743
metadata=RumPageGetMeta(metapage);
755744

756745
if (metadata->head==InvalidBlockNumber)
757746
{
758747
/* Nothing to do */
759-
GenericXLogAbort(metastate);
760748
UnlockReleaseBuffer(metabuffer);
761749
return;
762750
}
@@ -765,6 +753,9 @@ rumInsertCleanup(RumState *rumstate,
765753
* Read and lock head of pending list
766754
*/
767755
blkno=metadata->head;
756+
buffer=ReadBuffer(index,blkno);
757+
LockBuffer(buffer,RUM_SHARE);
758+
page=BufferGetPage(buffer);
768759

769760
LockBuffer(metabuffer,RUM_UNLOCK);
770761

@@ -790,18 +781,9 @@ rumInsertCleanup(RumState *rumstate,
790781
*/
791782
for (;;)
792783
{
793-
GenericXLogState*state;
794-
795-
state=GenericXLogStart(index);
796-
797-
buffer=ReadBuffer(index,blkno);
798-
LockBuffer(buffer,RUM_SHARE);
799-
page=GenericXLogRegisterBuffer(state,buffer,0);
800-
801784
if (RumPageIsDeleted(page))
802785
{
803786
/* another cleanup process is running concurrently */
804-
GenericXLogAbort(state);
805787
UnlockReleaseBuffer(buffer);
806788
break;
807789
}
@@ -874,7 +856,6 @@ rumInsertCleanup(RumState *rumstate,
874856
if (RumPageIsDeleted(page))
875857
{
876858
/* another cleanup process is running concurrently */
877-
GenericXLogAbort(state);
878859
UnlockReleaseBuffer(buffer);
879860
LockBuffer(metabuffer,RUM_UNLOCK);
880861
break;
@@ -918,7 +899,6 @@ rumInsertCleanup(RumState *rumstate,
918899
* Remember next page - it will become the new list head
919900
*/
920901
blkno=RumPageGetOpaque(page)->rightlink;
921-
GenericXLogFinish(state);
922902
UnlockReleaseBuffer(buffer);/* shiftList will do exclusive
923903
* locking */
924904

@@ -952,18 +932,18 @@ rumInsertCleanup(RumState *rumstate,
952932
else
953933
{
954934
blkno=RumPageGetOpaque(page)->rightlink;
955-
GenericXLogFinish(state);
956935
UnlockReleaseBuffer(buffer);
957936
}
958937

959938
/*
960939
* Read next page in pending list
961940
*/
962941
vacuum_delay_point();
942+
buffer=ReadBuffer(index,blkno);
943+
LockBuffer(buffer,RUM_SHARE);
944+
page=BufferGetPage(buffer);
963945
}
964946

965-
GenericXLogFinish(metastate);
966-
967947
ReleaseBuffer(metabuffer);
968948

969949
/* Clean up temporary space */

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp