mirror of
https://github.com/postgres/postgres.git
synced 2025-07-26 01:22:12 +03:00
This patch cleans up the access to members of ItemIdData.
It uses existing macros instead of touching directly. ITAGAKI Takahiro
This commit is contained in:
@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/backend/storage/page/bufpage.c,v 1.65 2005/06/06 20:22:58 tgl Exp $
|
* $PostgreSQL: pgsql/src/backend/storage/page/bufpage.c,v 1.66 2005/09/22 16:45:59 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -149,8 +149,7 @@ PageAddItem(Page page,
|
|||||||
if (offsetNumber < limit)
|
if (offsetNumber < limit)
|
||||||
{
|
{
|
||||||
itemId = PageGetItemId(phdr, offsetNumber);
|
itemId = PageGetItemId(phdr, offsetNumber);
|
||||||
if ((itemId->lp_flags & LP_USED) ||
|
if (ItemIdIsUsed(itemId) || ItemIdGetLength(itemId) != 0)
|
||||||
(itemId->lp_len != 0))
|
|
||||||
{
|
{
|
||||||
elog(WARNING, "will not overwrite a used ItemId");
|
elog(WARNING, "will not overwrite a used ItemId");
|
||||||
return InvalidOffsetNumber;
|
return InvalidOffsetNumber;
|
||||||
@ -170,8 +169,7 @@ PageAddItem(Page page,
|
|||||||
for (offsetNumber = 1; offsetNumber < limit; offsetNumber++)
|
for (offsetNumber = 1; offsetNumber < limit; offsetNumber++)
|
||||||
{
|
{
|
||||||
itemId = PageGetItemId(phdr, offsetNumber);
|
itemId = PageGetItemId(phdr, offsetNumber);
|
||||||
if (((itemId->lp_flags & LP_USED) == 0) &&
|
if (!ItemIdIsUsed(itemId) && ItemIdGetLength(itemId) == 0)
|
||||||
(itemId->lp_len == 0))
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
/* if no free slot, we'll put it at limit (1st open slot) */
|
/* if no free slot, we'll put it at limit (1st open slot) */
|
||||||
@ -341,9 +339,9 @@ PageRepairFragmentation(Page page, OffsetNumber *unused)
|
|||||||
for (i = 0; i < nline; i++)
|
for (i = 0; i < nline; i++)
|
||||||
{
|
{
|
||||||
lp = PageGetItemId(page, i + 1);
|
lp = PageGetItemId(page, i + 1);
|
||||||
if (lp->lp_flags & LP_DELETE) /* marked for deletion */
|
if (ItemIdDeleted(lp)) /* marked for deletion */
|
||||||
lp->lp_flags &= ~(LP_USED | LP_DELETE);
|
lp->lp_flags &= ~(LP_USED | LP_DELETE);
|
||||||
if (lp->lp_flags & LP_USED)
|
if (ItemIdIsUsed(lp))
|
||||||
nused++;
|
nused++;
|
||||||
else if (unused)
|
else if (unused)
|
||||||
unused[i - nused] = (OffsetNumber) i;
|
unused[i - nused] = (OffsetNumber) i;
|
||||||
@ -368,17 +366,17 @@ PageRepairFragmentation(Page page, OffsetNumber *unused)
|
|||||||
for (i = 0; i < nline; i++)
|
for (i = 0; i < nline; i++)
|
||||||
{
|
{
|
||||||
lp = PageGetItemId(page, i + 1);
|
lp = PageGetItemId(page, i + 1);
|
||||||
if (lp->lp_flags & LP_USED)
|
if (ItemIdIsUsed(lp))
|
||||||
{
|
{
|
||||||
itemidptr->offsetindex = i;
|
itemidptr->offsetindex = i;
|
||||||
itemidptr->itemoff = lp->lp_off;
|
itemidptr->itemoff = ItemIdGetOffset(lp);
|
||||||
if (itemidptr->itemoff < (int) pd_upper ||
|
if (itemidptr->itemoff < (int) pd_upper ||
|
||||||
itemidptr->itemoff >= (int) pd_special)
|
itemidptr->itemoff >= (int) pd_special)
|
||||||
ereport(ERROR,
|
ereport(ERROR,
|
||||||
(errcode(ERRCODE_DATA_CORRUPTED),
|
(errcode(ERRCODE_DATA_CORRUPTED),
|
||||||
errmsg("corrupted item pointer: %u",
|
errmsg("corrupted item pointer: %u",
|
||||||
itemidptr->itemoff)));
|
itemidptr->itemoff)));
|
||||||
itemidptr->alignedlen = MAXALIGN(lp->lp_len);
|
itemidptr->alignedlen = MAXALIGN(ItemIdGetLength(lp));
|
||||||
totallen += itemidptr->alignedlen;
|
totallen += itemidptr->alignedlen;
|
||||||
itemidptr++;
|
itemidptr++;
|
||||||
}
|
}
|
||||||
@ -540,7 +538,7 @@ PageIndexTupleDelete(Page page, OffsetNumber offnum)
|
|||||||
{
|
{
|
||||||
ItemId ii = PageGetItemId(phdr, i);
|
ItemId ii = PageGetItemId(phdr, i);
|
||||||
|
|
||||||
if (ii->lp_off <= offset)
|
if (ItemIdGetOffset(ii) <= offset)
|
||||||
ii->lp_off += size;
|
ii->lp_off += size;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
|
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
|
||||||
* Portions Copyright (c) 1994, Regents of the University of California
|
* Portions Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* $PostgreSQL: pgsql/src/include/storage/bufpage.h,v 1.65 2005/04/28 21:47:18 tgl Exp $
|
* $PostgreSQL: pgsql/src/include/storage/bufpage.h,v 1.66 2005/09/22 16:46:00 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -258,8 +258,8 @@ typedef PageHeaderData *PageHeader;
|
|||||||
#define PageGetItem(page, itemId) \
|
#define PageGetItem(page, itemId) \
|
||||||
( \
|
( \
|
||||||
AssertMacro(PageIsValid(page)), \
|
AssertMacro(PageIsValid(page)), \
|
||||||
AssertMacro((itemId)->lp_flags & LP_USED), \
|
AssertMacro(ItemIdIsUsed(itemId)), \
|
||||||
(Item)(((char *)(page)) + (itemId)->lp_off) \
|
(Item)(((char *)(page)) + ItemIdGetOffset(itemId)) \
|
||||||
)
|
)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
|
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
|
||||||
* Portions Copyright (c) 1994, Regents of the University of California
|
* Portions Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* $PostgreSQL: pgsql/src/include/storage/itemid.h,v 1.24 2004/12/31 22:03:42 pgsql Exp $
|
* $PostgreSQL: pgsql/src/include/storage/itemid.h,v 1.25 2005/09/22 16:46:00 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -38,7 +38,7 @@ typedef ItemIdData *ItemId;
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* This bit may be passed to PageAddItem together with
|
* This bit may be passed to PageAddItem together with
|
||||||
* LP_USED & LP_DELETED bits to specify overwrite mode
|
* LP_USED & LP_DELETE bits to specify overwrite mode
|
||||||
*/
|
*/
|
||||||
#define OverwritePageMode 0x10
|
#define OverwritePageMode 0x10
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user