]> granicus.if.org Git - postgresql/commitdiff
Avoid memory leakage during VACUUM FULL when an index expression or
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 23 Dec 2004 22:42:32 +0000 (22:42 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 23 Dec 2004 22:42:32 +0000 (22:42 +0000)
index predicate uses temporary memory for evaluation.  Per example
from Jean-Gerard Pailloncy.

src/backend/commands/vacuum.c

index 8011567f66a3e04d228b5818b6f8f62c2b47cbfe..84ee7e8e4b0472e61b5041d00c2dbe788154c36e 100644 (file)
@@ -13,7 +13,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.263 2003/10/02 23:19:44 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.263.2.1 2004/12/23 22:42:32 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -2041,6 +2041,7 @@ repair_frag(VRelStats *vacrelstats, Relation onerel,
                                                ExecStoreTuple(&newtup, slot, InvalidBuffer, false);
                                                ExecInsertIndexTuples(slot, &(newtup.t_self),
                                                                                          estate, true);
+                                               ResetPerTupleExprContext(estate);
                                        }
 
                                        WriteBuffer(cur_buffer);
@@ -2174,6 +2175,7 @@ repair_frag(VRelStats *vacrelstats, Relation onerel,
                        {
                                ExecStoreTuple(&newtup, slot, InvalidBuffer, false);
                                ExecInsertIndexTuples(slot, &(newtup.t_self), estate, true);
+                               ResetPerTupleExprContext(estate);
                        }
                }                                               /* walk along page */