Patch applied.  Thanks.

---------------------------------------------------------------------------


Manfred Koizar wrote:
> Basically replaces (*a).b with a->b as it is everywhere else in
> Postgres.
> 
> Servus
>  Manfred

> diff -Ncr ../base/src/backend/storage/page/bufpage.c 
> src/backend/storage/page/bufpage.c
> *** ../base/src/backend/storage/page/bufpage.c        Sat Nov 29 20:51:57 2003
> --- src/backend/storage/page/bufpage.c        Wed Jun  2 22:26:12 2004
> ***************
> *** 151,158 ****
>                       if (offsetNumber < limit)
>                       {
>                               itemId = PageGetItemId(phdr, offsetNumber);
> !                             if (((*itemId).lp_flags & LP_USED) ||
> !                                     ((*itemId).lp_len != 0))
>                               {
>                                       elog(WARNING, "will not overwrite a used 
> ItemId");
>                                       return InvalidOffsetNumber;
> --- 151,158 ----
>                       if (offsetNumber < limit)
>                       {
>                               itemId = PageGetItemId(phdr, offsetNumber);
> !                             if ((itemId->lp_flags & LP_USED) ||
> !                                     (itemId->lp_len != 0))
>                               {
>                                       elog(WARNING, "will not overwrite a used 
> ItemId");
>                                       return InvalidOffsetNumber;
> ***************
> *** 172,179 ****
>               for (offsetNumber = 1; offsetNumber < limit; offsetNumber++)
>               {
>                       itemId = PageGetItemId(phdr, offsetNumber);
> !                     if ((((*itemId).lp_flags & LP_USED) == 0) &&
> !                             ((*itemId).lp_len == 0))
>                               break;
>               }
>               /* if no free slot, we'll put it at limit (1st open slot) */
> --- 172,179 ----
>               for (offsetNumber = 1; offsetNumber < limit; offsetNumber++)
>               {
>                       itemId = PageGetItemId(phdr, offsetNumber);
> !                     if (((itemId->lp_flags & LP_USED) == 0) &&
> !                             (itemId->lp_len == 0))
>                               break;
>               }
>               /* if no free slot, we'll put it at limit (1st open slot) */
> ***************
> *** 214,222 ****
>                               (limit - offsetNumber) * sizeof(ItemIdData));
>   
>       /* set the item pointer */
> !     (*itemId).lp_off = upper;
> !     (*itemId).lp_len = size;
> !     (*itemId).lp_flags = flags;
>   
>       /* copy the item's data onto the page */
>       memcpy((char *) page + upper, item, size);
> --- 214,222 ----
>                               (limit - offsetNumber) * sizeof(ItemIdData));
>   
>       /* set the item pointer */
> !     itemId->lp_off = upper;
> !     itemId->lp_len = size;
> !     itemId->lp_flags = flags;
>   
>       /* copy the item's data onto the page */
>       memcpy((char *) page + upper, item, size);
> ***************
> *** 278,296 ****
>   /*
>    * sorting support for PageRepairFragmentation
>    */
> ! struct itemIdSortData
>   {
>       int                     offsetindex;    /* linp array index */
>       int                     itemoff;                /* page offset of item data */
>       Size            alignedlen;             /* MAXALIGN(item data len) */
> ! };
>   
>   static int
>   itemoffcompare(const void *itemidp1, const void *itemidp2)
>   {
>       /* Sort in decreasing itemoff order */
> !     return ((struct itemIdSortData *) itemidp2)->itemoff -
> !             ((struct itemIdSortData *) itemidp1)->itemoff;
>   }
>   
>   /*
> --- 278,297 ----
>   /*
>    * sorting support for PageRepairFragmentation
>    */
> ! typedef struct itemIdSortData
>   {
>       int                     offsetindex;    /* linp array index */
>       int                     itemoff;                /* page offset of item data */
>       Size            alignedlen;             /* MAXALIGN(item data len) */
> ! } itemIdSortData;
> ! typedef itemIdSortData *itemIdSort;
>   
>   static int
>   itemoffcompare(const void *itemidp1, const void *itemidp2)
>   {
>       /* Sort in decreasing itemoff order */
> !     return ((itemIdSort) itemidp2)->itemoff -
> !                ((itemIdSort) itemidp1)->itemoff;
>   }
>   
>   /*
> ***************
> *** 309,316 ****
>       Offset          pd_lower = ((PageHeader) page)->pd_lower;
>       Offset          pd_upper = ((PageHeader) page)->pd_upper;
>       Offset          pd_special = ((PageHeader) page)->pd_special;
> !     struct itemIdSortData *itemidbase,
> !                        *itemidptr;
>       ItemId          lp;
>       int                     nline,
>                               nused;
> --- 310,317 ----
>       Offset          pd_lower = ((PageHeader) page)->pd_lower;
>       Offset          pd_upper = ((PageHeader) page)->pd_upper;
>       Offset          pd_special = ((PageHeader) page)->pd_special;
> !     itemIdSort      itemidbase,
> !                             itemidptr;
>       ItemId          lp;
>       int                     nline,
>                               nused;
> ***************
> *** 340,348 ****
>       for (i = 0; i < nline; i++)
>       {
>               lp = PageGetItemId(page, i + 1);
> !             if ((*lp).lp_flags & LP_DELETE) /* marked for deletion */
> !                     (*lp).lp_flags &= ~(LP_USED | LP_DELETE);
> !             if ((*lp).lp_flags & LP_USED)
>                       nused++;
>               else if (unused)
>                       unused[i - nused] = (OffsetNumber) i;
> --- 341,349 ----
>       for (i = 0; i < nline; i++)
>       {
>               lp = PageGetItemId(page, i + 1);
> !             if (lp->lp_flags & LP_DELETE) /* marked for deletion */
> !                     lp->lp_flags &= ~(LP_USED | LP_DELETE);
> !             if (lp->lp_flags & LP_USED)
>                       nused++;
>               else if (unused)
>                       unused[i - nused] = (OffsetNumber) i;
> ***************
> *** 354,390 ****
>               for (i = 0; i < nline; i++)
>               {
>                       lp = PageGetItemId(page, i + 1);
> !                     (*lp).lp_len = 0;       /* indicate unused & deallocated */
>               }
>               ((PageHeader) page)->pd_upper = pd_special;
>       }
>       else
>       {                                                       /* nused != 0 */
>               /* Need to compact the page the hard way */
> !             itemidbase = (struct itemIdSortData *)
> !                     palloc(sizeof(struct itemIdSortData) * nused);
>               itemidptr = itemidbase;
>               totallen = 0;
>               for (i = 0; i < nline; i++)
>               {
>                       lp = PageGetItemId(page, i + 1);
> !                     if ((*lp).lp_flags & LP_USED)
>                       {
>                               itemidptr->offsetindex = i;
> !                             itemidptr->itemoff = (*lp).lp_off;
>                               if (itemidptr->itemoff < (int) pd_upper ||
>                                       itemidptr->itemoff >= (int) pd_special)
>                                       ereport(ERROR,
>                                                       
> (errcode(ERRCODE_DATA_CORRUPTED),
>                                                        errmsg("corrupted item 
> pointer: %u",
>                                                                       
> itemidptr->itemoff)));
> !                             itemidptr->alignedlen = MAXALIGN((*lp).lp_len);
>                               totallen += itemidptr->alignedlen;
>                               itemidptr++;
>                       }
>                       else
>                       {
> !                             (*lp).lp_len = 0;               /* indicate unused & 
> deallocated */
>                       }
>               }
>   
> --- 355,390 ----
>               for (i = 0; i < nline; i++)
>               {
>                       lp = PageGetItemId(page, i + 1);
> !                     lp->lp_len = 0; /* indicate unused & deallocated */
>               }
>               ((PageHeader) page)->pd_upper = pd_special;
>       }
>       else
>       {                                                       /* nused != 0 */
>               /* Need to compact the page the hard way */
> !             itemidbase = (itemIdSort) palloc(sizeof(itemIdSortData) * nused);
>               itemidptr = itemidbase;
>               totallen = 0;
>               for (i = 0; i < nline; i++)
>               {
>                       lp = PageGetItemId(page, i + 1);
> !                     if (lp->lp_flags & LP_USED)
>                       {
>                               itemidptr->offsetindex = i;
> !                             itemidptr->itemoff = lp->lp_off;
>                               if (itemidptr->itemoff < (int) pd_upper ||
>                                       itemidptr->itemoff >= (int) pd_special)
>                                       ereport(ERROR,
>                                                       
> (errcode(ERRCODE_DATA_CORRUPTED),
>                                                        errmsg("corrupted item 
> pointer: %u",
>                                                                       
> itemidptr->itemoff)));
> !                             itemidptr->alignedlen = MAXALIGN(lp->lp_len);
>                               totallen += itemidptr->alignedlen;
>                               itemidptr++;
>                       }
>                       else
>                       {
> !                             lp->lp_len = 0;         /* indicate unused & 
> deallocated */
>                       }
>               }
>   
> ***************
> *** 395,401 ****
>                                  (unsigned int) totallen, pd_special - pd_lower)));
>   
>               /* sort itemIdSortData array into decreasing itemoff order */
> !             qsort((char *) itemidbase, nused, sizeof(struct itemIdSortData),
>                         itemoffcompare);
>   
>               /* compactify page */
> --- 395,401 ----
>                                  (unsigned int) totallen, pd_special - pd_lower)));
>   
>               /* sort itemIdSortData array into decreasing itemoff order */
> !             qsort((char *) itemidbase, nused, sizeof(itemIdSortData),
>                         itemoffcompare);
>   
>               /* compactify page */
> ***************
> *** 408,414 ****
>                       memmove((char *) page + upper,
>                                       (char *) page + itemidptr->itemoff,
>                                       itemidptr->alignedlen);
> !                     (*lp).lp_off = upper;
>               }
>   
>               ((PageHeader) page)->pd_upper = upper;
> --- 408,414 ----
>                       memmove((char *) page + upper,
>                                       (char *) page + itemidptr->itemoff,
>                                       itemidptr->alignedlen);
> !                     lp->lp_off = upper;
>               }
>   
>               ((PageHeader) page)->pd_upper = upper;
> ***************
> *** 538,545 ****
>               nline--;                                /* there's one less than when 
> we started */
>               for (i = 1; i <= nline; i++)
>               {
> !                     if (PageGetItemId(phdr, i)->lp_off <= offset)
> !                             PageGetItemId(phdr, i)->lp_off += size;
>               }
>       }
>   }
> --- 538,546 ----
>               nline--;                                /* there's one less than when 
> we started */
>               for (i = 1; i <= nline; i++)
>               {
> !                     ItemId ii = PageGetItemId(phdr, i);
> !                     if (ii->lp_off <= offset)
> !                             ii->lp_off += size;
>               }
>       }
>   }

> 
> ---------------------------(end of broadcast)---------------------------
> TIP 4: Don't 'kill -9' the postmaster

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  [EMAIL PROTECTED]               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

---------------------------(end of broadcast)---------------------------
TIP 7: don't forget to increase your free space map settings

Reply via email to