@ -8,7 +8,7 @@
*
*
*
*
* IDENTIFICATION
* IDENTIFICATION
* $ PostgreSQL : pgsql / src / backend / access / heap / heapam . c , v 1.260 2008 / 06 / 19 00 : 46 : 03 alvherre Exp $
* $ PostgreSQL : pgsql / src / backend / access / heap / heapam . c , v 1.261 2008 / 07 / 13 20 : 45 : 47 tgl Exp $
*
*
*
*
* INTERFACE ROUTINES
* INTERFACE ROUTINES
@ -1343,7 +1343,7 @@ heap_fetch(Relation relation,
ItemPointer tid = & ( tuple - > t_self ) ;
ItemPointer tid = & ( tuple - > t_self ) ;
ItemId lp ;
ItemId lp ;
Buffer buffer ;
Buffer buffer ;
PageHeader d p;
Page page ;
OffsetNumber offnum ;
OffsetNumber offnum ;
bool valid ;
bool valid ;
@ -1356,14 +1356,14 @@ heap_fetch(Relation relation,
* Need share lock on buffer to examine tuple commit status .
* Need share lock on buffer to examine tuple commit status .
*/
*/
LockBuffer ( buffer , BUFFER_LOCK_SHARE ) ;
LockBuffer ( buffer , BUFFER_LOCK_SHARE ) ;
dp = ( PageHeader ) BufferGetPage ( buffer ) ;
page = BufferGetPage ( buffer ) ;
/*
/*
* We ' d better check for out - of - range offnum in case of VACUUM since the
* We ' d better check for out - of - range offnum in case of VACUUM since the
* TID was obtained .
* TID was obtained .
*/
*/
offnum = ItemPointerGetOffsetNumber ( tid ) ;
offnum = ItemPointerGetOffsetNumber ( tid ) ;
if ( offnum < FirstOffsetNumber | | offnum > PageGetMaxOffsetNumber ( d p) )
if ( offnum < FirstOffsetNumber | | offnum > PageGetMaxOffsetNumber ( page ) )
{
{
LockBuffer ( buffer , BUFFER_LOCK_UNLOCK ) ;
LockBuffer ( buffer , BUFFER_LOCK_UNLOCK ) ;
if ( keep_buf )
if ( keep_buf )
@ -1380,7 +1380,7 @@ heap_fetch(Relation relation,
/*
/*
* get the item line pointer corresponding to the requested tid
* get the item line pointer corresponding to the requested tid
*/
*/
lp = PageGetItemId ( d p, offnum ) ;
lp = PageGetItemId ( page , offnum ) ;
/*
/*
* Must check for deleted tuple .
* Must check for deleted tuple .
@ -1402,7 +1402,7 @@ heap_fetch(Relation relation,
/*
/*
* fill in * tuple fields
* fill in * tuple fields
*/
*/
tuple - > t_data = ( HeapTupleHeader ) PageGetItem ( ( Page ) dp , lp ) ;
tuple - > t_data = ( HeapTupleHeader ) PageGetItem ( page , lp ) ;
tuple - > t_len = ItemIdGetLength ( lp ) ;
tuple - > t_len = ItemIdGetLength ( lp ) ;
tuple - > t_tableOid = RelationGetRelid ( relation ) ;
tuple - > t_tableOid = RelationGetRelid ( relation ) ;
@ -1627,7 +1627,7 @@ heap_get_latest_tid(Relation relation,
for ( ; ; )
for ( ; ; )
{
{
Buffer buffer ;
Buffer buffer ;
PageHeader d p;
Page page ;
OffsetNumber offnum ;
OffsetNumber offnum ;
ItemId lp ;
ItemId lp ;
HeapTupleData tp ;
HeapTupleData tp ;
@ -1638,7 +1638,7 @@ heap_get_latest_tid(Relation relation,
*/
*/
buffer = ReadBuffer ( relation , ItemPointerGetBlockNumber ( & ctid ) ) ;
buffer = ReadBuffer ( relation , ItemPointerGetBlockNumber ( & ctid ) ) ;
LockBuffer ( buffer , BUFFER_LOCK_SHARE ) ;
LockBuffer ( buffer , BUFFER_LOCK_SHARE ) ;
dp = ( PageHeader ) BufferGetPage ( buffer ) ;
page = BufferGetPage ( buffer ) ;
/*
/*
* Check for bogus item number . This is not treated as an error
* Check for bogus item number . This is not treated as an error
@ -1646,12 +1646,12 @@ heap_get_latest_tid(Relation relation,
* just assume that the prior tid is OK and return it unchanged .
* just assume that the prior tid is OK and return it unchanged .
*/
*/
offnum = ItemPointerGetOffsetNumber ( & ctid ) ;
offnum = ItemPointerGetOffsetNumber ( & ctid ) ;
if ( offnum < FirstOffsetNumber | | offnum > PageGetMaxOffsetNumber ( d p) )
if ( offnum < FirstOffsetNumber | | offnum > PageGetMaxOffsetNumber ( page ) )
{
{
UnlockReleaseBuffer ( buffer ) ;
UnlockReleaseBuffer ( buffer ) ;
break ;
break ;
}
}
lp = PageGetItemId ( d p, offnum ) ;
lp = PageGetItemId ( page , offnum ) ;
if ( ! ItemIdIsNormal ( lp ) )
if ( ! ItemIdIsNormal ( lp ) )
{
{
UnlockReleaseBuffer ( buffer ) ;
UnlockReleaseBuffer ( buffer ) ;
@ -1660,7 +1660,7 @@ heap_get_latest_tid(Relation relation,
/* OK to access the tuple */
/* OK to access the tuple */
tp . t_self = ctid ;
tp . t_self = ctid ;
tp . t_data = ( HeapTupleHeader ) PageGetItem ( d p, lp ) ;
tp . t_data = ( HeapTupleHeader ) PageGetItem ( page , lp ) ;
tp . t_len = ItemIdGetLength ( lp ) ;
tp . t_len = ItemIdGetLength ( lp ) ;
/*
/*
@ -1964,7 +1964,7 @@ heap_delete(Relation relation, ItemPointer tid,
TransactionId xid = GetCurrentTransactionId ( ) ;
TransactionId xid = GetCurrentTransactionId ( ) ;
ItemId lp ;
ItemId lp ;
HeapTupleData tp ;
HeapTupleData tp ;
PageHeader d p;
Page page ;
Buffer buffer ;
Buffer buffer ;
bool have_tuple_lock = false ;
bool have_tuple_lock = false ;
bool iscombo ;
bool iscombo ;
@ -1974,11 +1974,11 @@ heap_delete(Relation relation, ItemPointer tid,
buffer = ReadBuffer ( relation , ItemPointerGetBlockNumber ( tid ) ) ;
buffer = ReadBuffer ( relation , ItemPointerGetBlockNumber ( tid ) ) ;
LockBuffer ( buffer , BUFFER_LOCK_EXCLUSIVE ) ;
LockBuffer ( buffer , BUFFER_LOCK_EXCLUSIVE ) ;
dp = ( PageHeader ) BufferGetPage ( buffer ) ;
page = BufferGetPage ( buffer ) ;
lp = PageGetItemId ( d p, ItemPointerGetOffsetNumber ( tid ) ) ;
lp = PageGetItemId ( page , ItemPointerGetOffsetNumber ( tid ) ) ;
Assert ( ItemIdIsNormal ( lp ) ) ;
Assert ( ItemIdIsNormal ( lp ) ) ;
tp . t_data = ( HeapTupleHeader ) PageGetItem ( d p, lp ) ;
tp . t_data = ( HeapTupleHeader ) PageGetItem ( page , lp ) ;
tp . t_len = ItemIdGetLength ( lp ) ;
tp . t_len = ItemIdGetLength ( lp ) ;
tp . t_self = * tid ;
tp . t_self = * tid ;
@ -2112,7 +2112,7 @@ l1:
* the subsequent page pruning will be a no - op and the hint will be
* the subsequent page pruning will be a no - op and the hint will be
* cleared .
* cleared .
*/
*/
PageSetPrunable ( d p, xid ) ;
PageSetPrunable ( page , xid ) ;
/* store transaction information of xact deleting the tuple */
/* store transaction information of xact deleting the tuple */
tp . t_data - > t_infomask & = ~ ( HEAP_XMAX_COMMITTED |
tp . t_data - > t_infomask & = ~ ( HEAP_XMAX_COMMITTED |
@ -2150,8 +2150,8 @@ l1:
recptr = XLogInsert ( RM_HEAP_ID , XLOG_HEAP_DELETE , rdata ) ;
recptr = XLogInsert ( RM_HEAP_ID , XLOG_HEAP_DELETE , rdata ) ;
PageSetLSN ( d p, recptr ) ;
PageSetLSN ( page , recptr ) ;
PageSetTLI ( d p, ThisTimeLineID ) ;
PageSetTLI ( page , ThisTimeLineID ) ;
}
}
END_CRIT_SECTION ( ) ;
END_CRIT_SECTION ( ) ;
@ -2276,7 +2276,7 @@ heap_update(Relation relation, ItemPointer otid, HeapTuple newtup,
ItemId lp ;
ItemId lp ;
HeapTupleData oldtup ;
HeapTupleData oldtup ;
HeapTuple heaptup ;
HeapTuple heaptup ;
PageHeader d p;
Page page ;
Buffer buffer ,
Buffer buffer ,
newbuf ;
newbuf ;
bool need_toast ,
bool need_toast ,
@ -2306,11 +2306,11 @@ heap_update(Relation relation, ItemPointer otid, HeapTuple newtup,
buffer = ReadBuffer ( relation , ItemPointerGetBlockNumber ( otid ) ) ;
buffer = ReadBuffer ( relation , ItemPointerGetBlockNumber ( otid ) ) ;
LockBuffer ( buffer , BUFFER_LOCK_EXCLUSIVE ) ;
LockBuffer ( buffer , BUFFER_LOCK_EXCLUSIVE ) ;
dp = ( PageHeader ) BufferGetPage ( buffer ) ;
page = BufferGetPage ( buffer ) ;
lp = PageGetItemId ( d p, ItemPointerGetOffsetNumber ( otid ) ) ;
lp = PageGetItemId ( page , ItemPointerGetOffsetNumber ( otid ) ) ;
Assert ( ItemIdIsNormal ( lp ) ) ;
Assert ( ItemIdIsNormal ( lp ) ) ;
oldtup . t_data = ( HeapTupleHeader ) PageGetItem ( d p, lp ) ;
oldtup . t_data = ( HeapTupleHeader ) PageGetItem ( page , lp ) ;
oldtup . t_len = ItemIdGetLength ( lp ) ;
oldtup . t_len = ItemIdGetLength ( lp ) ;
oldtup . t_self = * otid ;
oldtup . t_self = * otid ;
@ -2491,7 +2491,7 @@ l2:
HeapTupleHasExternal ( newtup ) | |
HeapTupleHasExternal ( newtup ) | |
newtup - > t_len > TOAST_TUPLE_THRESHOLD ) ;
newtup - > t_len > TOAST_TUPLE_THRESHOLD ) ;
pagefree = PageGetHeapFreeSpace ( ( Page ) dp ) ;
pagefree = PageGetHeapFreeSpace ( page ) ;
newtupsize = MAXALIGN ( newtup - > t_len ) ;
newtupsize = MAXALIGN ( newtup - > t_len ) ;
@ -2557,7 +2557,7 @@ l2:
/* Re-acquire the lock on the old tuple's page. */
/* Re-acquire the lock on the old tuple's page. */
LockBuffer ( buffer , BUFFER_LOCK_EXCLUSIVE ) ;
LockBuffer ( buffer , BUFFER_LOCK_EXCLUSIVE ) ;
/* Re-check using the up-to-date free space */
/* Re-check using the up-to-date free space */
pagefree = PageGetHeapFreeSpace ( ( Page ) dp ) ;
pagefree = PageGetHeapFreeSpace ( page ) ;
if ( newtupsize > pagefree )
if ( newtupsize > pagefree )
{
{
/*
/*
@ -2603,7 +2603,7 @@ l2:
else
else
{
{
/* Set a hint that the old page could use prune/defrag */
/* Set a hint that the old page could use prune/defrag */
PageSetFull ( d p) ;
PageSetFull ( page ) ;
}
}
/* NO EREPORT(ERROR) from here till changes are logged */
/* NO EREPORT(ERROR) from here till changes are logged */
@ -2621,7 +2621,7 @@ l2:
* not to optimize for aborts . Note that heap_xlog_update must be kept in
* not to optimize for aborts . Note that heap_xlog_update must be kept in
* sync if this decision changes .
* sync if this decision changes .
*/
*/
PageSetPrunable ( d p, xid ) ;
PageSetPrunable ( page , xid ) ;
if ( use_hot_update )
if ( use_hot_update )
{
{
@ -2946,7 +2946,7 @@ heap_lock_tuple(Relation relation, HeapTuple tuple, Buffer *buffer,
HTSU_Result result ;
HTSU_Result result ;
ItemPointer tid = & ( tuple - > t_self ) ;
ItemPointer tid = & ( tuple - > t_self ) ;
ItemId lp ;
ItemId lp ;
PageHeader d p;
Page page ;
TransactionId xid ;
TransactionId xid ;
TransactionId xmax ;
TransactionId xmax ;
uint16 old_infomask ;
uint16 old_infomask ;
@ -2959,11 +2959,11 @@ heap_lock_tuple(Relation relation, HeapTuple tuple, Buffer *buffer,
* buffer = ReadBuffer ( relation , ItemPointerGetBlockNumber ( tid ) ) ;
* buffer = ReadBuffer ( relation , ItemPointerGetBlockNumber ( tid ) ) ;
LockBuffer ( * buffer , BUFFER_LOCK_EXCLUSIVE ) ;
LockBuffer ( * buffer , BUFFER_LOCK_EXCLUSIVE ) ;
dp = ( PageHeader ) BufferGetPage ( * buffer ) ;
page = BufferGetPage ( * buffer ) ;
lp = PageGetItemId ( d p, ItemPointerGetOffsetNumber ( tid ) ) ;
lp = PageGetItemId ( page , ItemPointerGetOffsetNumber ( tid ) ) ;
Assert ( ItemIdIsNormal ( lp ) ) ;
Assert ( ItemIdIsNormal ( lp ) ) ;
tuple - > t_data = ( HeapTupleHeader ) PageGetItem ( ( Page ) dp , lp ) ;
tuple - > t_data = ( HeapTupleHeader ) PageGetItem ( page , lp ) ;
tuple - > t_len = ItemIdGetLength ( lp ) ;
tuple - > t_len = ItemIdGetLength ( lp ) ;
tuple - > t_tableOid = RelationGetRelid ( relation ) ;
tuple - > t_tableOid = RelationGetRelid ( relation ) ;
@ -3302,8 +3302,8 @@ l3:
recptr = XLogInsert ( RM_HEAP_ID , XLOG_HEAP_LOCK , rdata ) ;
recptr = XLogInsert ( RM_HEAP_ID , XLOG_HEAP_LOCK , rdata ) ;
PageSetLSN ( d p, recptr ) ;
PageSetLSN ( page , recptr ) ;
PageSetTLI ( d p, ThisTimeLineID ) ;
PageSetTLI ( page , ThisTimeLineID ) ;
}
}
END_CRIT_SECTION ( ) ;
END_CRIT_SECTION ( ) ;