]> git.ipfire.org Git - thirdparty/postgresql.git/commit
Fix possible recovery trouble if TRUNCATE overlaps a checkpoint.
authorRobert Haas <rhaas@postgresql.org>
Thu, 24 Mar 2022 18:36:06 +0000 (14:36 -0400)
committerRobert Haas <rhaas@postgresql.org>
Thu, 24 Mar 2022 18:36:06 +0000 (14:36 -0400)
commit1ce14b6b2fe4af9ac7d7f90eb46c77b2e6deb2de
treeee1c6741a5ccfdf14c781b541d022ca08984a920
parentc0f99bb520da577f34cf7c10e1ea4aab727f08c7
Fix possible recovery trouble if TRUNCATE overlaps a checkpoint.

If TRUNCATE causes some buffers to be invalidated and thus the
checkpoint does not flush them, TRUNCATE must also ensure that the
corresponding files are truncated on disk. Otherwise, a replay
from the checkpoint might find that the buffers exist but have
the wrong contents, which may cause replay to fail.

Report by Teja Mupparti. Patch by Kyotaro Horiguchi, per a design
suggestion from Heikki Linnakangas, with some changes to the
comments by me. Review of this and a prior patch that approached
the issue differently by Heikki Linnakangas, Andres Freund, Álvaro
Herrera, Masahiko Sawada, and Tom Lane.

Discussion: http://postgr.es/m/BYAPR06MB6373BF50B469CA393C614257ABF00@BYAPR06MB6373.namprd06.prod.outlook.com
src/backend/access/transam/multixact.c
src/backend/access/transam/twophase.c
src/backend/access/transam/xact.c
src/backend/access/transam/xlog.c
src/backend/access/transam/xloginsert.c
src/backend/catalog/storage.c
src/backend/storage/buffer/bufmgr.c
src/backend/storage/ipc/procarray.c
src/backend/storage/lmgr/proc.c
src/include/storage/proc.h
src/include/storage/procarray.h