8000 Fix longstanding error in VACUUM: sometimes would examine a buffer page · jaylevitt/postgres@1d15afd · GitHub
[go: up one dir, main page]

Skip to content

Commit 1d15afd

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 807a262 commit 1d15afd

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.189 2001/03/25 23:23:58 tgl Exp $
11+
* $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.189.2.1 2001/06/29 16:34:49 tgl Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -577,7 +577,6 @@ scan_heap(VRelStats *vacrelstats, Relation onerel,
577577
maxoff;
578578
bool pgchanged,
579579
tupgone,
580-
dobufrel,
581580
notup;
582581
char *relname;
583582
VacPage vacpage,
@@ -876,15 +875,6 @@ scan_heap(VRelStats *vacrelstats, Relation onerel,
876875
}
877876
}
878877

879-
if (pgchanged)
880-
{
881-
WriteBuffer(buf);
882-
dobufrel = false;
883-
changed_pages++;
884-
}
885-
else
886-
dobufrel = true;
887-
888878
if (tempPage != (Page) NULL)
889879
{ /* Some tuples are gone */
890880
PageRepairFragmentation(tempPage, NULL);
@@ -900,8 +890,15 @@ scan_heap(VRelStats *vacrelstats, Relation onerel,
900890
free_size += vacpage->free;
901891
reap_page(vacuum_pages, vacpage);
902892
}
903-
if (dobufrel)
893+
894+
if (pgchanged)
895+
{
896+
WriteBuffer(buf);
897+
changed_pages++;
898+
}
899+
else
904900
ReleaseBuffer(buf);
901+
905902
if (notup)
906903
empty_end_pages++;
907904
else

0 commit comments

Comments
 (0)
0