mirror of
https://github.com/postgres/postgres.git
synced 2025-07-26 01:22:12 +03:00
Fix vacuum's memory consumption
This commit is contained in:
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.118 1999/08/09 03:16:47 tgl Exp $
|
* $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.119 1999/08/25 12:20:57 ishii Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -2549,12 +2549,19 @@ vc_reappage(VPageList vpl, VPageDescr vpc)
|
|||||||
static void
|
static void
|
||||||
vc_vpinsert(VPageList vpl, VPageDescr vpnew)
|
vc_vpinsert(VPageList vpl, VPageDescr vpnew)
|
||||||
{
|
{
|
||||||
|
#define PG_NPAGEDESC 1024
|
||||||
|
|
||||||
/* allocate a VPageDescr entry if needed */
|
/* allocate a VPageDescr entry if needed */
|
||||||
if (vpl->vpl_num_pages == 0)
|
if (vpl->vpl_num_pages == 0)
|
||||||
vpl->vpl_pagedesc = (VPageDescr *) palloc(100 * sizeof(VPageDescr));
|
{
|
||||||
else if (vpl->vpl_num_pages % 100 == 0)
|
vpl->vpl_pagedesc = (VPageDescr *) palloc(PG_NPAGEDESC * sizeof(VPageDescr));
|
||||||
vpl->vpl_pagedesc = (VPageDescr *) repalloc(vpl->vpl_pagedesc, (vpl->vpl_num_pages + 100) * sizeof(VPageDescr));
|
vpl->vpl_num_allocated_pages = PG_NPAGEDESC;
|
||||||
|
}
|
||||||
|
else if (vpl->vpl_num_pages >= vpl->vpl_num_allocated_pages)
|
||||||
|
{
|
||||||
|
vpl->vpl_num_allocated_pages *= 2;
|
||||||
|
vpl->vpl_pagedesc = (VPageDescr *) repalloc(vpl->vpl_pagedesc, vpl->vpl_num_allocated_pages * sizeof(VPageDescr));
|
||||||
|
}
|
||||||
vpl->vpl_pagedesc[vpl->vpl_num_pages] = vpnew;
|
vpl->vpl_pagedesc[vpl->vpl_num_pages] = vpnew;
|
||||||
(vpl->vpl_num_pages)++;
|
(vpl->vpl_num_pages)++;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user