1
0
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:
Bruce Momjian
2005-09-22 16:46:00 +00:00
parent 62da04f8e3
commit 4f915cd377
3 changed files with 14 additions and 16 deletions

View File

@ -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;
} }
} }

View File

@ -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)) \
) )
/* /*

View File

@ -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