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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy