2525
2626#include "rum.h"
2727
28+ #define RUM_NDELETE_AT_ONCE 16
29+
2830#define RUM_PAGE_FREESIZE \
2931( BLCKSZ - MAXALIGN(SizeOfPageHeaderData) - MAXALIGN(sizeof(RumPageOpaqueData)) )
3032
@@ -512,28 +514,26 @@ shiftList(Relation index, Buffer metabuffer, BlockNumber newHead,
512514do
513515{
514516Page page ;
515- int i ;
516517int64 nDeletedHeapTuples = 0 ;
517- rumxlogDeleteListPages data ;
518+ uint32 i ,
519+ nDeleted = 0 ;
518520Buffer buffers [RUM_NDELETE_AT_ONCE ];
519521GenericXLogState * state ;
520522
521- data .ndeleted = 0 ;
522- while (data .ndeleted < RUM_NDELETE_AT_ONCE && blknoToDelete != newHead )
523+ while (nDeleted < RUM_NDELETE_AT_ONCE && blknoToDelete != newHead )
523524{
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 );
527527
528- page = BufferGetPage (buffers [data . ndeleted ]);
528+ page = BufferGetPage (buffers [nDeleted ]);
529529
530- data . ndeleted ++ ;
530+ nDeleted ++ ;
531531
532532if (RumPageIsDeleted (page ))
533533{
534534GenericXLogAbort (metastate );
535535/* concurrent cleanup process is detected */
536- for (i = 0 ;i < data . ndeleted ;i ++ )
536+ for (i = 0 ;i < nDeleted ;i ++ )
537537UnlockReleaseBuffer (buffers [i ]);
538538
539539return true;
@@ -544,12 +544,12 @@ shiftList(Relation index, Buffer metabuffer, BlockNumber newHead,
544544}
545545
546546if (stats )
547- stats -> pages_deleted += data . ndeleted ;
547+ stats -> pages_deleted += nDeleted ;
548548
549549metadata -> head = blknoToDelete ;
550550
551- Assert (metadata -> nPendingPages >=data . ndeleted );
552- metadata -> nPendingPages -= data . ndeleted ;
551+ Assert (metadata -> nPendingPages >=nDeleted );
552+ metadata -> nPendingPages -= nDeleted ;
553553Assert (metadata -> nPendingHeapTuples >=nDeletedHeapTuples );
554554metadata -> nPendingHeapTuples -= nDeletedHeapTuples ;
555555
@@ -563,7 +563,7 @@ shiftList(Relation index, Buffer metabuffer, BlockNumber newHead,
563563
564564MarkBufferDirty (metabuffer );
565565
566- for (i = 0 ;i < data . ndeleted ;i ++ )
566+ for (i = 0 ;i < nDeleted ;i ++ )
567567{
568568state = GenericXLogStart (index );
569569page = GenericXLogRegisterBuffer (state ,buffers [i ],0 );
@@ -572,7 +572,7 @@ shiftList(Relation index, Buffer metabuffer, BlockNumber newHead,
572572GenericXLogFinish (state );
573573}
574574
575- for (i = 0 ;i < data . ndeleted ;i ++ )
575+ for (i = 0 ;i < nDeleted ;i ++ )
576576UnlockReleaseBuffer (buffers [i ]);
577577}while (blknoToDelete != newHead );
578578