From: Tatsuo Ishii Date: Wed, 25 Aug 1999 12:20:57 +0000 (+0000) Subject: Fix vacuum's memory consumption X-Git-Tag: REL7_0~1571 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=edda70c0def3f4a4b3bb211cd40f7d169062b95f;p=postgresql Fix vacuum's memory consumption --- diff --git a/src/backend/commands/vacuum.c b/src/backend/commands/vacuum.c index b480b44f34..55ec864fca 100644 --- a/src/backend/commands/vacuum.c +++ b/src/backend/commands/vacuum.c @@ -7,7 +7,7 @@ * * * 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 vc_vpinsert(VPageList vpl, VPageDescr vpnew) { +#define PG_NPAGEDESC 1024 /* allocate a VPageDescr entry if needed */ 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 *) repalloc(vpl->vpl_pagedesc, (vpl->vpl_num_pages + 100) * sizeof(VPageDescr)); + { + vpl->vpl_pagedesc = (VPageDescr *) palloc(PG_NPAGEDESC * 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_num_pages)++;