Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit a25d308

Browse files
author
Sokolov Yura
committed
cfs: memset_hole in a page
clear hole between pd_lower and pd_upper of a page, so compression can efficiently eliminate this wasted space.
1 parent 21654b5 commit a25d308

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

src/backend/storage/page/bufpage.c

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -485,6 +485,17 @@ compactify_tuples(itemIdSort itemidbase, int nitems, Page page)
485485
phdr->pd_upper = upper;
486486
}
487487

488+
/*
489+
* Clean up space between pd_lower and pd_upper for better page compression.
490+
*/
491+
static void
492+
memset_hole(Page page)
493+
{
494+
PageHeader phdr = (PageHeader) page;
495+
if (phdr->pd_upper > phdr->pd_lower)
496+
memset((char *)page + phdr->pd_lower, 0, phdr->pd_upper-phdr->pd_lower);
497+
}
498+
488499
/*
489500
* PageRepairFragmentation
490501
*
@@ -582,6 +593,7 @@ PageRepairFragmentation(Page page)
582593

583594
compactify_tuples(itemidbase, nstorage, page);
584595
}
596+
memset_hole(page);
585597

586598
/* Set hint bit for PageAddItem */
587599
if (nunused > 0)
@@ -931,6 +943,7 @@ PageIndexMultiDelete(Page page, OffsetNumber *itemnos, int nitems)
931943

932944
/* and compactify the tuple data */
933945
compactify_tuples(itemidbase, nused, page);
946+
memset_hole(page);
934947
}
935948

936949
/*
@@ -1083,6 +1096,7 @@ PageIndexDeleteNoCompact(Page page, OffsetNumber *itemnos, int nitems)
10831096
*/
10841097
compactify_tuples(itemidbase, nline, page);
10851098
}
1099+
memset_hole(page);
10861100
}
10871101

10881102
/*

0 commit comments

Comments
 (0)