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)
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