Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 3938150

Browse files
committed
Fix longstanding error in VACUUM: sometimes would examine a buffer page
after writing/unpinning it. An actual failure is unlikely, unless the system is tremendously short of buffers ... but a bug is a bug.
1 parent 1d4ee0c commit 3938150

File tree

1 file changed

+9
-12
lines changed

1 file changed

+9
-12
lines changed

src/backend/commands/vacuum.c

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.198 2001/06/27 23:31:38 tgl Exp $
11+
* $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.199 2001/06/29 16:34:30 tgl Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -631,7 +631,6 @@ scan_heap(VRelStats *vacrelstats, Relation onerel,
631631
maxoff;
632632
bool pgchanged,
633633
tupgone,
634-
dobufrel,
635634
notup;
636635
char *relname;
637636
VacPage vacpage,
@@ -931,15 +930,6 @@ scan_heap(VRelStats *vacrelstats, Relation onerel,
931930
}
932931
}
933932

934-
if (pgchanged)
935-
{
936-
WriteBuffer(buf);
937-
dobufrel = false;
938-
changed_pages++;
939-
}
940-
else
941-
dobufrel = true;
942-
943933
if (tempPage != (Page) NULL)
944934
{ /* Some tuples are gone */
945935
PageRepairFragmentation(tempPage, NULL);
@@ -955,8 +945,15 @@ scan_heap(VRelStats *vacrelstats, Relation onerel,
955945
free_size += vacpage->free;
956946
reap_page(vacuum_pages, vacpage);
957947
}
958-
if (dobufrel)
948+
949+
if (pgchanged)
950+
{
951+
WriteBuffer(buf);
952+
changed_pages++;
953+
}
954+
else
959955
ReleaseBuffer(buf);
956+
960957
if (notup)
961958
empty_end_pages++;
962959
else

0 commit comments

Comments
 (0)