diff options
Diffstat (limited to 'src/backend/commands/vacuumlazy.c')
-rw-r--r-- | src/backend/commands/vacuumlazy.c | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/src/backend/commands/vacuumlazy.c b/src/backend/commands/vacuumlazy.c index 1cf1ae3e593..6e807e3b479 100644 --- a/src/backend/commands/vacuumlazy.c +++ b/src/backend/commands/vacuumlazy.c @@ -29,7 +29,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/vacuumlazy.c,v 1.132 2010/02/26 02:00:40 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/commands/vacuumlazy.c,v 1.133 2010/04/21 17:20:56 sriggs Exp $ * *------------------------------------------------------------------------- */ @@ -274,6 +274,8 @@ vacuum_log_cleanup_info(Relation rel, LVRelStats *vacrelstats) if (rel->rd_istemp || !XLogIsNeeded()) return; + Assert(TransactionIdIsValid(vacrelstats->latestRemovedXid)); + (void) log_heap_cleanup_info(rel->rd_node, vacrelstats->latestRemovedXid); } @@ -395,9 +397,11 @@ lazy_scan_heap(Relation onerel, LVRelStats *vacrelstats, vacrelstats); /* Remove tuples from heap */ lazy_vacuum_heap(onerel, vacrelstats); - /* Forget the now-vacuumed tuples, and press on */ + /* + * Forget the now-vacuumed tuples, and press on, but be careful + * not to reset latestRemovedXid since we want that value to be valid. + */ vacrelstats->num_dead_tuples = 0; - vacrelstats->latestRemovedXid = InvalidTransactionId; vacrelstats->num_index_scans++; } @@ -484,8 +488,8 @@ lazy_scan_heap(Relation onerel, LVRelStats *vacrelstats, * * We count tuples removed by the pruning step as removed by VACUUM. */ - tups_vacuumed += heap_page_prune(onerel, buf, OldestXmin, false); - + tups_vacuumed += heap_page_prune(onerel, buf, OldestXmin, false, + &vacrelstats->latestRemovedXid); /* * Now scan the page to collect vacuumable items and check for tuples * requiring freezing. @@ -676,9 +680,12 @@ lazy_scan_heap(Relation onerel, LVRelStats *vacrelstats, { /* Remove tuples from heap */ lazy_vacuum_page(onerel, blkno, buf, 0, vacrelstats); - /* Forget the now-vacuumed tuples, and press on */ + /* + * Forget the now-vacuumed tuples, and press on, but be careful + * not to reset latestRemovedXid since we want that value to be valid. + */ + Assert(TransactionIdIsValid(vacrelstats->latestRemovedXid)); vacrelstats->num_dead_tuples = 0; - vacrelstats->latestRemovedXid = InvalidTransactionId; vacuumed_pages++; } |