@ -394,8 +394,8 @@ heapgetpage(HeapScanDesc scan, BlockNumber page)
*/
LockBuffer ( buffer , BUFFER_LOCK_SHARE ) ;
dp = BufferGetPage ( buffer , snapshot , scan - > rs_rd ,
BGP_TEST_FOR_OLD_SNAPSHOT ) ;
dp = BufferGetPage ( buffer ) ;
TestForOldSnapshot ( snapshot , scan - > rs_rd , dp ) ;
lines = PageGetMaxOffsetNumber ( dp ) ;
ntup = 0 ;
@ -538,7 +538,8 @@ heapgettup(HeapScanDesc scan,
LockBuffer ( scan - > rs_cbuf , BUFFER_LOCK_SHARE ) ;
dp = BufferGetPage ( scan - > rs_cbuf , snapshot , scan - > rs_rd , BGP_TEST_FOR_OLD_SNAPSHOT ) ;
dp = BufferGetPage ( scan - > rs_cbuf ) ;
TestForOldSnapshot ( snapshot , scan - > rs_rd , dp ) ;
lines = PageGetMaxOffsetNumber ( dp ) ;
/* page and lineoff now reference the physically next tid */
@ -583,8 +584,8 @@ heapgettup(HeapScanDesc scan,
LockBuffer ( scan - > rs_cbuf , BUFFER_LOCK_SHARE ) ;
dp = BufferGetPage ( scan - > rs_cbuf , snapshot , scan - > rs_rd ,
BGP_TEST_FOR_OLD_SNAPSHOT ) ;
dp = BufferGetPage ( scan - > rs_cbuf ) ;
TestForOldSnapshot ( snapshot , scan - > rs_rd , dp ) ;
lines = PageGetMaxOffsetNumber ( dp ) ;
if ( ! scan - > rs_inited )
@ -618,8 +619,8 @@ heapgettup(HeapScanDesc scan,
heapgetpage ( scan , page ) ;
/* Since the tuple was previously fetched, needn't lock page here */
dp = BufferGetPage ( scan - > rs_cbuf , snapshot , scan - > rs_rd ,
BGP_TEST_FOR_OLD_SNAPSHOT ) ;
dp = BufferGetPage ( scan - > rs_cbuf ) ;
TestForOldSnapshot ( snapshot , scan - > rs_rd , dp ) ;
lineoff = ItemPointerGetOffsetNumber ( & ( tuple - > t_self ) ) ;
lpp = PageGetItemId ( dp , lineoff ) ;
Assert ( ItemIdIsNormal ( lpp ) ) ;
@ -748,8 +749,8 @@ heapgettup(HeapScanDesc scan,
LockBuffer ( scan - > rs_cbuf , BUFFER_LOCK_SHARE ) ;
dp = BufferGetPage ( scan - > rs_cbuf , snapshot , scan - > rs_rd ,
BGP_TEST_FOR_OLD_SNAPSHOT ) ;
dp = BufferGetPage ( scan - > rs_cbuf ) ;
TestForOldSnapshot ( snapshot , scan - > rs_rd , dp ) ;
lines = PageGetMaxOffsetNumber ( ( Page ) dp ) ;
linesleft = lines ;
if ( backward )
@ -836,8 +837,8 @@ heapgettup_pagemode(HeapScanDesc scan,
lineindex = scan - > rs_cindex + 1 ;
}
dp = BufferGetPage ( scan - > rs_cbuf , scan - > rs_snapshot , scan - > rs_rd ,
BGP_TEST_FOR_OLD_SNAPSHOT ) ;
dp = BufferGetPage ( scan - > rs_cbuf ) ;
TestForOldSnapshot ( scan - > rs_snapshot , scan - > rs_rd , dp ) ;
lines = scan - > rs_ntuples ;
/* page and lineindex now reference the next visible tid */
@ -880,8 +881,8 @@ heapgettup_pagemode(HeapScanDesc scan,
page = scan - > rs_cblock ; /* current page */
}
dp = BufferGetPage ( scan - > rs_cbuf , scan - > rs_snapshot , scan - > rs_rd ,
BGP_TEST_FOR_OLD_SNAPSHOT ) ;
dp = BufferGetPage ( scan - > rs_cbuf ) ;
TestForOldSnapshot ( scan - > rs_snapshot , scan - > rs_rd , dp ) ;
lines = scan - > rs_ntuples ;
if ( ! scan - > rs_inited )
@ -914,8 +915,8 @@ heapgettup_pagemode(HeapScanDesc scan,
heapgetpage ( scan , page ) ;
/* Since the tuple was previously fetched, needn't lock page here */
dp = BufferGetPage ( scan - > rs_cbuf , scan - > rs_snapshot , scan - > rs_rd ,
BGP_TEST_FOR_OLD_SNAPSHOT ) ;
dp = BufferGetPage ( scan - > rs_cbuf ) ;
TestForOldSnapshot ( scan - > rs_snapshot , scan - > rs_rd , dp ) ;
lineoff = ItemPointerGetOffsetNumber ( & ( tuple - > t_self ) ) ;
lpp = PageGetItemId ( dp , lineoff ) ;
Assert ( ItemIdIsNormal ( lpp ) ) ;
@ -1034,8 +1035,8 @@ heapgettup_pagemode(HeapScanDesc scan,
heapgetpage ( scan , page ) ;
dp = BufferGetPage ( scan - > rs_cbuf , scan - > rs_snapshot , scan - > rs_rd ,
BGP_TEST_FOR_OLD_SNAPSHOT ) ;
dp = BufferGetPage ( scan - > rs_cbuf ) ;
TestForOldSnapshot ( scan - > rs_snapshot , scan - > rs_rd , dp ) ;
lines = scan - > rs_ntuples ;
linesleft = lines ;
if ( backward )
@ -1879,7 +1880,8 @@ heap_fetch(Relation relation,
* Need share lock on buffer to examine tuple commit status .
*/
LockBuffer ( buffer , BUFFER_LOCK_SHARE ) ;
page = BufferGetPage ( buffer , snapshot , relation , BGP_TEST_FOR_OLD_SNAPSHOT ) ;
page = BufferGetPage ( buffer ) ;
TestForOldSnapshot ( snapshot , relation , page ) ;
/*
* We ' d better check for out - of - range offnum in case of VACUUM since the
@ -1994,7 +1996,7 @@ heap_hot_search_buffer(ItemPointer tid, Relation relation, Buffer buffer,
Snapshot snapshot , HeapTuple heapTuple ,
bool * all_dead , bool first_call )
{
Page dp = BufferGetPage ( buffer , NULL , NULL , BGP_NO_SNAPSHOT_TEST ) ;
Page dp = ( Page ) BufferGetPage ( buffer ) ;
TransactionId prev_xmax = InvalidTransactionId ;
OffsetNumber offnum ;
bool at_chain_start ;
@ -2208,8 +2210,8 @@ heap_get_latest_tid(Relation relation,
*/
buffer = ReadBuffer ( relation , ItemPointerGetBlockNumber ( & ctid ) ) ;
LockBuffer ( buffer , BUFFER_LOCK_SHARE ) ;
page = BufferGetPage ( buffer , snapshot , relation ,
BGP_TEST_FOR_OLD_SNAPSHOT ) ;
page = BufferGetPage ( buffer ) ;
TestForOldSnapshot ( snapshot , relation , page ) ;
/*
* Check for bogus item number . This is not treated as an error
@ -2427,12 +2429,10 @@ heap_insert(Relation relation, HeapTuple tup, CommandId cid,
RelationPutHeapTuple ( relation , buffer , heaptup ,
( options & HEAP_INSERT_SPECULATIVE ) ! = 0 ) ;
if ( PageIsAllVisible ( BufferGetPage ( buffer , NULL , NULL ,
BGP_NO_SNAPSHOT_TEST ) ) )
if ( PageIsAllVisible ( BufferGetPage ( buffer ) ) )
{
all_visible_cleared = true ;
PageClearAllVisible ( BufferGetPage ( buffer , NULL , NULL ,
BGP_NO_SNAPSHOT_TEST ) ) ;
PageClearAllVisible ( BufferGetPage ( buffer ) ) ;
visibilitymap_clear ( relation ,
ItemPointerGetBlockNumber ( & ( heaptup - > t_self ) ) ,
vmbuffer ) ;
@ -2457,8 +2457,7 @@ heap_insert(Relation relation, HeapTuple tup, CommandId cid,
xl_heap_insert xlrec ;
xl_heap_header xlhdr ;
XLogRecPtr recptr ;
Page page = BufferGetPage ( buffer , NULL , NULL ,
BGP_NO_SNAPSHOT_TEST ) ;
Page page = BufferGetPage ( buffer ) ;
uint8 info = XLOG_HEAP_INSERT ;
int bufflags = 0 ;
@ -2717,7 +2716,7 @@ heap_multi_insert(Relation relation, HeapTuple *tuples, int ntuples,
buffer = RelationGetBufferForTuple ( relation , heaptuples [ ndone ] - > t_len ,
InvalidBuffer , options , bistate ,
& vmbuffer , NULL ) ;
page = BufferGetPage ( buffer , NULL , NULL , BGP_NO_SNAPSHOT_TEST ) ;
page = BufferGetPage ( buffer ) ;
/* NO EREPORT(ERROR) from here till changes are logged */
START_CRIT_SECTION ( ) ;
@ -3031,7 +3030,7 @@ heap_delete(Relation relation, ItemPointer tid,
block = ItemPointerGetBlockNumber ( tid ) ;
buffer = ReadBuffer ( relation , block ) ;
page = BufferGetPage ( buffer , NULL , NULL , BGP_NO_SNAPSHOT_TEST ) ;
page = BufferGetPage ( buffer ) ;
/*
* Before locking the buffer , pin the visibility map page if it appears to
@ -3521,7 +3520,7 @@ heap_update(Relation relation, ItemPointer otid, HeapTuple newtup,
block = ItemPointerGetBlockNumber ( otid ) ;
buffer = ReadBuffer ( relation , block ) ;
page = BufferGetPage ( buffer , NULL , NULL , BGP_NO_SNAPSHOT_TEST ) ;
page = BufferGetPage ( buffer ) ;
/*
* Before locking the buffer , pin the visibility map page if it appears to
@ -4122,22 +4121,17 @@ l2:
oldtup . t_data - > t_ctid = heaptup - > t_self ;
/* clear PD_ALL_VISIBLE flags */
if ( PageIsAllVisible ( BufferGetPage ( buffer , NULL , NULL ,
BGP_NO_SNAPSHOT_TEST ) ) )
if ( PageIsAllVisible ( BufferGetPage ( buffer ) ) )
{
all_visible_cleared = true ;
PageClearAllVisible ( BufferGetPage ( buffer , NULL , NULL ,
BGP_NO_SNAPSHOT_TEST ) ) ;
PageClearAllVisible ( BufferGetPage ( buffer ) ) ;
visibilitymap_clear ( relation , BufferGetBlockNumber ( buffer ) ,
vmbuffer ) ;
}
if ( newbuf ! = buffer & &
PageIsAllVisible ( BufferGetPage ( newbuf , NULL , NULL ,
BGP_NO_SNAPSHOT_TEST ) ) )
if ( newbuf ! = buffer & & PageIsAllVisible ( BufferGetPage ( newbuf ) ) )
{
all_visible_cleared_new = true ;
PageClearAllVisible ( BufferGetPage ( newbuf , NULL , NULL ,
BGP_NO_SNAPSHOT_TEST ) ) ;
PageClearAllVisible ( BufferGetPage ( newbuf ) ) ;
visibilitymap_clear ( relation , BufferGetBlockNumber ( newbuf ) ,
vmbuffer_new ) ;
}
@ -4168,12 +4162,9 @@ l2:
all_visible_cleared_new ) ;
if ( newbuf ! = buffer )
{
PageSetLSN ( BufferGetPage ( newbuf , NULL , NULL ,
BGP_NO_SNAPSHOT_TEST ) ,
recptr ) ;
PageSetLSN ( BufferGetPage ( newbuf ) , recptr ) ;
}
PageSetLSN ( BufferGetPage ( buffer , NULL , NULL , BGP_NO_SNAPSHOT_TEST ) ,
recptr ) ;
PageSetLSN ( BufferGetPage ( buffer ) , recptr ) ;
}
END_CRIT_SECTION ( ) ;
@ -4537,7 +4528,7 @@ heap_lock_tuple(Relation relation, HeapTuple tuple,
* buffer = ReadBuffer ( relation , ItemPointerGetBlockNumber ( tid ) ) ;
LockBuffer ( * buffer , BUFFER_LOCK_EXCLUSIVE ) ;
page = BufferGetPage ( * buffer , NULL , NULL , BGP_NO_SNAPSHOT_TEST ) ;
page = BufferGetPage ( * buffer ) ;
lp = PageGetItemId ( page , ItemPointerGetOffsetNumber ( tid ) ) ;
Assert ( ItemIdIsNormal ( lp ) ) ;
@ -5715,8 +5706,7 @@ l4:
{
xl_heap_lock_updated xlrec ;
XLogRecPtr recptr ;
Page page = BufferGetPage ( buf , NULL , NULL ,
BGP_NO_SNAPSHOT_TEST ) ;
Page page = BufferGetPage ( buf ) ;
XLogBeginInsert ( ) ;
XLogRegisterBuffer ( 0 , buf , REGBUF_STANDARD ) ;
@ -5823,7 +5813,7 @@ heap_finish_speculative(Relation relation, HeapTuple tuple)
buffer = ReadBuffer ( relation , ItemPointerGetBlockNumber ( & ( tuple - > t_self ) ) ) ;
LockBuffer ( buffer , BUFFER_LOCK_EXCLUSIVE ) ;
page = BufferGetPage ( buffer , NULL , NULL , BGP_NO_SNAPSHOT_TEST ) ;
page = ( Page ) BufferGetPage ( buffer ) ;
offnum = ItemPointerGetOffsetNumber ( & ( tuple - > t_self ) ) ;
if ( PageGetMaxOffsetNumber ( page ) > = offnum )
@ -5917,7 +5907,7 @@ heap_abort_speculative(Relation relation, HeapTuple tuple)
block = ItemPointerGetBlockNumber ( tid ) ;
buffer = ReadBuffer ( relation , block ) ;
page = BufferGetPage ( buffer , NULL , NULL , BGP_NO_SNAPSHOT_TEST ) ;
page = BufferGetPage ( buffer ) ;
LockBuffer ( buffer , BUFFER_LOCK_EXCLUSIVE ) ;
@ -6064,7 +6054,7 @@ heap_inplace_update(Relation relation, HeapTuple tuple)
buffer = ReadBuffer ( relation , ItemPointerGetBlockNumber ( & ( tuple - > t_self ) ) ) ;
LockBuffer ( buffer , BUFFER_LOCK_EXCLUSIVE ) ;
page = BufferGetPage ( buffer , NULL , NULL , BGP_NO_SNAPSHOT_TEST ) ;
page = ( Page ) BufferGetPage ( buffer ) ;
offnum = ItemPointerGetOffsetNumber ( & ( tuple - > t_self ) ) ;
if ( PageGetMaxOffsetNumber ( page ) > = offnum )
@ -7319,8 +7309,7 @@ log_heap_update(Relation reln, Buffer oldbuf,
uint16 prefixlen = 0 ,
suffixlen = 0 ;
XLogRecPtr recptr ;
Page page = BufferGetPage ( newbuf , NULL , NULL ,
BGP_NO_SNAPSHOT_TEST ) ;
Page page = BufferGetPage ( newbuf ) ;
bool need_tuple_data = RelationIsLogicallyLogged ( reln ) ;
bool init ;
int bufflags ;
@ -7769,8 +7758,7 @@ heap_xlog_clean(XLogReaderState *record)
& buffer ) ;
if ( action = = BLK_NEEDS_REDO )
{
Page page = BufferGetPage ( buffer , NULL , NULL ,
BGP_NO_SNAPSHOT_TEST ) ;
Page page = ( Page ) BufferGetPage ( buffer ) ;
OffsetNumber * end ;
OffsetNumber * redirected ;
OffsetNumber * nowdead ;
@ -7876,7 +7864,7 @@ heap_xlog_visible(XLogReaderState *record)
* XLOG record ' s LSN , we mustn ' t mark the page all - visible , because
* the subsequent update won ' t be replayed to clear the flag .
*/
page = BufferGetPage ( buffer , NULL , NULL , BGP_NO_SNAPSHOT_TEST ) ;
page = BufferGetPage ( buffer ) ;
PageSetAllVisible ( page ) ;
@ -7902,8 +7890,7 @@ heap_xlog_visible(XLogReaderState *record)
if ( XLogReadBufferForRedoExtended ( record , 0 , RBM_ZERO_ON_ERROR , false ,
& vmbuffer ) = = BLK_NEEDS_REDO )
{
Page vmpage = BufferGetPage ( vmbuffer , NULL , NULL ,
BGP_NO_SNAPSHOT_TEST ) ;
Page vmpage = BufferGetPage ( vmbuffer ) ;
Relation reln ;
/* initialize the page if it was read as zeros */
@ -7970,8 +7957,7 @@ heap_xlog_freeze_page(XLogReaderState *record)
if ( XLogReadBufferForRedo ( record , 0 , & buffer ) = = BLK_NEEDS_REDO )
{
Page page = BufferGetPage ( buffer , NULL , NULL ,
BGP_NO_SNAPSHOT_TEST ) ;
Page page = BufferGetPage ( buffer ) ;
xl_heap_freeze_tuple * tuples ;
tuples = ( xl_heap_freeze_tuple * ) XLogRecGetBlockData ( record , 0 , NULL ) ;
@ -8058,7 +8044,7 @@ heap_xlog_delete(XLogReaderState *record)
if ( XLogReadBufferForRedo ( record , 0 , & buffer ) = = BLK_NEEDS_REDO )
{
page = BufferGetPage ( buffer , NULL , NULL , BGP_NO_SNAPSHOT_TEST ) ;
page = BufferGetPage ( buffer ) ;
if ( PageGetMaxOffsetNumber ( page ) > = xlrec - > offnum )
lp = PageGetItemId ( page , xlrec - > offnum ) ;
@ -8141,7 +8127,7 @@ heap_xlog_insert(XLogReaderState *record)
if ( XLogRecGetInfo ( record ) & XLOG_HEAP_INIT_PAGE )
{
buffer = XLogInitBufferForRedo ( record , 0 ) ;
page = BufferGetPage ( buffer , NULL , NULL , BGP_NO_SNAPSHOT_TEST ) ;
page = BufferGetPage ( buffer ) ;
PageInit ( page , BufferGetPageSize ( buffer ) , 0 ) ;
action = BLK_NEEDS_REDO ;
}
@ -8152,7 +8138,7 @@ heap_xlog_insert(XLogReaderState *record)
Size datalen ;
char * data ;
page = BufferGetPage ( buffer , NULL , NULL , BGP_NO_SNAPSHOT_TEST ) ;
page = BufferGetPage ( buffer ) ;
if ( PageGetMaxOffsetNumber ( page ) + 1 < xlrec - > offnum )
elog ( PANIC , " invalid max offset number " ) ;
@ -8257,7 +8243,7 @@ heap_xlog_multi_insert(XLogReaderState *record)
if ( isinit )
{
buffer = XLogInitBufferForRedo ( record , 0 ) ;
page = BufferGetPage ( buffer , NULL , NULL , BGP_NO_SNAPSHOT_TEST ) ;
page = BufferGetPage ( buffer ) ;
PageInit ( page , BufferGetPageSize ( buffer ) , 0 ) ;
action = BLK_NEEDS_REDO ;
}
@ -8273,7 +8259,7 @@ heap_xlog_multi_insert(XLogReaderState *record)
tupdata = XLogRecGetBlockData ( record , 0 , & len ) ;
endptr = tupdata + len ;
page = BufferGetPage ( buffer , NULL , NULL , BGP_NO_SNAPSHOT_TEST ) ;
page = ( Page ) BufferGetPage ( buffer ) ;
for ( i = 0 ; i < xlrec - > ntuples ; i + + )
{
@ -8424,7 +8410,7 @@ heap_xlog_update(XLogReaderState *record, bool hot_update)
& obuffer ) ;
if ( oldaction = = BLK_NEEDS_REDO )
{
page = BufferGetPage ( obuffer , NULL , NULL , BGP_NO_SNAPSHOT_TEST ) ;
page = BufferGetPage ( obuffer ) ;
offnum = xlrec - > old_offnum ;
if ( PageGetMaxOffsetNumber ( page ) > = offnum )
lp = PageGetItemId ( page , offnum ) ;
@ -8471,7 +8457,7 @@ heap_xlog_update(XLogReaderState *record, bool hot_update)
else if ( XLogRecGetInfo ( record ) & XLOG_HEAP_INIT_PAGE )
{
nbuffer = XLogInitBufferForRedo ( record , 0 ) ;
page = BufferGetPage ( nbuffer , NULL , NULL , BGP_NO_SNAPSHOT_TEST ) ;
page = ( Page ) BufferGetPage ( nbuffer ) ;
PageInit ( page , BufferGetPageSize ( nbuffer ) , 0 ) ;
newaction = BLK_NEEDS_REDO ;
}
@ -8504,7 +8490,7 @@ heap_xlog_update(XLogReaderState *record, bool hot_update)
recdata = XLogRecGetBlockData ( record , 0 , & datalen ) ;
recdata_end = recdata + datalen ;
page = BufferGetPage ( nbuffer , NULL , NULL , BGP_NO_SNAPSHOT_TEST ) ;
page = BufferGetPage ( nbuffer ) ;
offnum = xlrec - > new_offnum ;
if ( PageGetMaxOffsetNumber ( page ) + 1 < offnum )
@ -8634,7 +8620,7 @@ heap_xlog_confirm(XLogReaderState *record)
if ( XLogReadBufferForRedo ( record , 0 , & buffer ) = = BLK_NEEDS_REDO )
{
page = BufferGetPage ( buffer , NULL , NULL , BGP_NO_SNAPSHOT_TEST ) ;
page = BufferGetPage ( buffer ) ;
offnum = xlrec - > offnum ;
if ( PageGetMaxOffsetNumber ( page ) > = offnum )
@ -8670,7 +8656,7 @@ heap_xlog_lock(XLogReaderState *record)
if ( XLogReadBufferForRedo ( record , 0 , & buffer ) = = BLK_NEEDS_REDO )
{
page = BufferGetPage ( buffer , NULL , NULL , BGP_NO_SNAPSHOT_TEST ) ;
page = ( Page ) BufferGetPage ( buffer ) ;
offnum = xlrec - > offnum ;
if ( PageGetMaxOffsetNumber ( page ) > = offnum )
@ -8720,7 +8706,7 @@ heap_xlog_lock_updated(XLogReaderState *record)
if ( XLogReadBufferForRedo ( record , 0 , & buffer ) = = BLK_NEEDS_REDO )
{
page = BufferGetPage ( buffer , NULL , NULL , BGP_NO_SNAPSHOT_TEST ) ;
page = BufferGetPage ( buffer ) ;
offnum = xlrec - > offnum ;
if ( PageGetMaxOffsetNumber ( page ) > = offnum )
@ -8759,7 +8745,7 @@ heap_xlog_inplace(XLogReaderState *record)
{
char * newtup = XLogRecGetBlockData ( record , 0 , & newlen ) ;
page = BufferGetPage ( buffer , NULL , NULL , BGP_NO_SNAPSHOT_TEST ) ;
page = BufferGetPage ( buffer ) ;
offnum = xlrec - > offnum ;
if ( PageGetMaxOffsetNumber ( page ) > = offnum )