From edda70c0def3f4a4b3bb211cd40f7d169062b95f Mon Sep 17 00:00:00 2001 From: Tatsuo Ishii Date: Wed, 25 Aug 1999 12:20:57 +0000 Subject: [PATCH] Fix vacuum's memory consumption --- src/backend/commands/vacuum.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) 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)++;