diff options
author | Tatsuo Ishii <ishii@postgresql.org> | 1999-08-25 12:20:57 +0000 |
---|---|---|
committer | Tatsuo Ishii <ishii@postgresql.org> | 1999-08-25 12:20:57 +0000 |
commit | edda70c0def3f4a4b3bb211cd40f7d169062b95f (patch) | |
tree | d03110fe3e955bd7d9adfceb0a7ff536940de3fd /src | |
parent | 770d0786c2421ad77fcf8fb59bb64ee264a5fedd (diff) | |
download | postgresql-edda70c0def3f4a4b3bb211cd40f7d169062b95f.tar.gz postgresql-edda70c0def3f4a4b3bb211cd40f7d169062b95f.zip |
Fix vacuum's memory consumption
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/commands/vacuum.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/backend/commands/vacuum.c b/src/backend/commands/vacuum.c index b480b44f347..55ec864fca5 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)++; |