Set PD_ALL_VISIBLE and visibility map bits in COPY FREEZE
Tomas Vondra <tomas.vondra@postgresql.org>
Set PD_ALL_VISIBLE and visibility map bits in COPY FREEZE
Make sure COPY FREEZE marks the pages as PD_ALL_VISIBLE and updates the
visibility map. Until now we only marked individual tuples as frozen,
but page-level flags were not updated, so the first VACUUM after the
COPY FREEZE had to rewrite the whole table.
This is a fairly old patch, and multiple people worked on it. The first
version was written by Jeff Janes, and then reworked by Pavan Deolasee
and Anastasia Lubennikova.
Author: Anastasia Lubennikova, Pavan Deolasee, Jeff Janes
Reviewed-by: Kuntal Ghosh, Jeff Janes, Tomas Vondra, Masahiko Sawada,
Andres Freund, Ibrar Ahmed, Robert Haas, Tatsuro Ishii,
Darafei Praliaskouski
Discussion: https://postgr.es/m/CABOikdN-ptGv0mZntrK2Q8OtfUuAjqaYMGmkdU1dCKFtUxVLrg@mail.gmail.com
Discussion: https://postgr.es/m/CAMkU%3D1w3osJJ2FneELhhNRLxfZitDgp9FPHee08NT2FQFmz_pQ%40mail.gmail.com
Files
| Path | Change | +/− |
|---|---|---|
| contrib/pg_visibility/expected/pg_visibility.out | modified | +64 −0 |
| contrib/pg_visibility/sql/pg_visibility.sql | modified | +77 −0 |
| src/backend/access/heap/heapam.c | modified | +69 −8 |
| src/backend/access/heap/hio.c | modified | +17 −0 |
| src/include/access/heapam_xlog.h | modified | +3 −0 |
Discussion
- COPY FREEZE and PD_ALL_VISIBLE 15 messages · 2015-10-18 → 2019-02-21
- COPY FREEZE and setting PD_ALL_VISIBLE/visibility map bits 71 messages · 2019-02-21 → 2021-01-24