use-memcpy-not-memmove.patch
text/x-diff
Filename: use-memcpy-not-memmove.patch
Type: text/x-diff
Part: 1
Patch
Format: unified
| File | + | − |
|---|---|---|
| src/backend/storage/page/bufpage.c | 0 | 0 |
diff --git a/src/backend/storage/page/bufpage.c b/src/backend/storage/page/bufpage.c
index 41642eb..e485398 100644
*** a/src/backend/storage/page/bufpage.c
--- b/src/backend/storage/page/bufpage.c
*************** static void
*** 441,446 ****
--- 441,450 ----
compactify_tuples(itemIdSort itemidbase, int nitems, Page page)
{
PageHeader phdr = (PageHeader) page;
+ union {
+ char page[BLCKSZ];
+ double align;
+ } pagecopy;
Offset upper;
int i;
*************** compactify_tuples(itemIdSort itemidbase,
*** 448,464 ****
qsort((char *) itemidbase, nitems, sizeof(itemIdSortData),
itemoffcompare);
upper = phdr->pd_special;
for (i = 0; i < nitems; i++)
{
itemIdSort itemidptr = &itemidbase[i];
ItemId lp;
- lp = PageGetItemId(page, itemidptr->offsetindex + 1);
upper -= itemidptr->alignedlen;
! memmove((char *) page + upper,
! (char *) page + itemidptr->itemoff,
! itemidptr->alignedlen);
lp->lp_off = upper;
}
--- 452,470 ----
qsort((char *) itemidbase, nitems, sizeof(itemIdSortData),
itemoffcompare);
+ memcpy(pagecopy.page, page, BLCKSZ);
+
upper = phdr->pd_special;
for (i = 0; i < nitems; i++)
{
itemIdSort itemidptr = &itemidbase[i];
ItemId lp;
upper -= itemidptr->alignedlen;
! memcpy((char *) page + upper,
! pagecopy.page + itemidptr->itemoff,
! itemidptr->alignedlen);
! lp = PageGetItemId(page, itemidptr->offsetindex + 1);
lp->lp_off = upper;
}