aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTatsuo Ishii <ishii@postgresql.org>1999-08-25 12:20:57 +0000
committerTatsuo Ishii <ishii@postgresql.org>1999-08-25 12:20:57 +0000
commitedda70c0def3f4a4b3bb211cd40f7d169062b95f (patch)
treed03110fe3e955bd7d9adfceb0a7ff536940de3fd /src
parent770d0786c2421ad77fcf8fb59bb64ee264a5fedd (diff)
downloadpostgresql-edda70c0def3f4a4b3bb211cd40f7d169062b95f.tar.gz
postgresql-edda70c0def3f4a4b3bb211cd40f7d169062b95f.zip
Fix vacuum's memory consumption
Diffstat (limited to 'src')
-rw-r--r--src/backend/commands/vacuum.c15
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)++;