25
25
26
26
#include "rum.h"
27
27
28
+ #define RUM_NDELETE_AT_ONCE 16
29
+
28
30
#define RUM_PAGE_FREESIZE \
29
31
( BLCKSZ - MAXALIGN(SizeOfPageHeaderData) - MAXALIGN(sizeof(RumPageOpaqueData)) )
30
32
@@ -512,28 +514,26 @@ shiftList(Relation index, Buffer metabuffer, BlockNumber newHead,
512
514
do
513
515
{
514
516
Page page ;
515
- int i ;
516
517
int64 nDeletedHeapTuples = 0 ;
517
- rumxlogDeleteListPages data ;
518
+ uint32 i ,
519
+ nDeleted = 0 ;
518
520
Buffer buffers [RUM_NDELETE_AT_ONCE ];
519
521
GenericXLogState * state ;
520
522
521
- data .ndeleted = 0 ;
522
- while (data .ndeleted < RUM_NDELETE_AT_ONCE && blknoToDelete != newHead )
523
+ while (nDeleted < RUM_NDELETE_AT_ONCE && blknoToDelete != newHead )
523
524
{
524
- data .toDelete [data .ndeleted ] = blknoToDelete ;
525
- buffers [data .ndeleted ] = ReadBuffer (index , blknoToDelete );
526
- LockBuffer (buffers [data .ndeleted ], RUM_EXCLUSIVE );
525
+ buffers [nDeleted ] = ReadBuffer (index , blknoToDelete );
526
+ LockBuffer (buffers [nDeleted ], RUM_EXCLUSIVE );
527
527
528
- page = BufferGetPage (buffers [data . ndeleted ]);
528
+ page = BufferGetPage (buffers [nDeleted ]);
529
529
530
- data . ndeleted ++ ;
530
+ nDeleted ++ ;
531
531
532
532
if (RumPageIsDeleted (page ))
533
533
{
534
534
GenericXLogAbort (metastate );
535
535
/* concurrent cleanup process is detected */
536
- for (i = 0 ; i < data . ndeleted ; i ++ )
536
+ for (i = 0 ; i < nDeleted ; i ++ )
537
537
UnlockReleaseBuffer (buffers [i ]);
538
538
539
539
return true;
@@ -544,12 +544,12 @@ shiftList(Relation index, Buffer metabuffer, BlockNumber newHead,
544
544
}
545
545
546
546
if (stats )
547
- stats -> pages_deleted += data . ndeleted ;
547
+ stats -> pages_deleted += nDeleted ;
548
548
549
549
metadata -> head = blknoToDelete ;
550
550
551
- Assert (metadata -> nPendingPages >= data . ndeleted );
552
- metadata -> nPendingPages -= data . ndeleted ;
551
+ Assert (metadata -> nPendingPages >= nDeleted );
552
+ metadata -> nPendingPages -= nDeleted ;
553
553
Assert (metadata -> nPendingHeapTuples >= nDeletedHeapTuples );
554
554
metadata -> nPendingHeapTuples -= nDeletedHeapTuples ;
555
555
@@ -563,7 +563,7 @@ shiftList(Relation index, Buffer metabuffer, BlockNumber newHead,
563
563
564
564
MarkBufferDirty (metabuffer );
565
565
566
- for (i = 0 ; i < data . ndeleted ; i ++ )
566
+ for (i = 0 ; i < nDeleted ; i ++ )
567
567
{
568
568
state = GenericXLogStart (index );
569
569
page = GenericXLogRegisterBuffer (state , buffers [i ], 0 );
@@ -572,7 +572,7 @@ shiftList(Relation index, Buffer metabuffer, BlockNumber newHead,
572
572
GenericXLogFinish (state );
573
573
}
574
574
575
- for (i = 0 ; i < data . ndeleted ; i ++ )
575
+ for (i = 0 ; i < nDeleted ; i ++ )
576
576
UnlockReleaseBuffer (buffers [i ]);
577
577
} while (blknoToDelete != newHead );
578
578
0 commit comments