postgresql/src
Peter Geoghegan 3c3b8a4b26 Truncate line pointer array during VACUUM.
Teach VACUUM to truncate the line pointer array of each heap page when a
contiguous group of LP_UNUSED line pointers appear at the end of the
array -- these unused and unreferenced items are excluded.  This process
occurs during VACUUM's second pass over the heap, right after LP_DEAD
line pointers on the page (those encountered/pruned during the first
pass) are marked LP_UNUSED.

Truncation avoids line pointer bloat with certain workloads,
particularly those involving continual range DELETEs and bulk INSERTs
against the same table.

Also harden heapam code to check for an out-of-range page offset number
in places where we weren't already doing so.

Author: Matthias van de Meent <boekewurm+postgres@gmail.com>
Author: Peter Geoghegan <pg@bowt.ie>
Reviewed-By: Masahiko Sawada <sawada.mshk@gmail.com>
Reviewed-By: Peter Geoghegan <pg@bowt.ie>
Discussion: https://postgr.es/m/CAEze2WjgaQc55Y5f5CQd3L=eS5CZcff2Obxp=O6pto8-f0hC4w@mail.gmail.com
Discussion: https://postgr.es/m/CAH2-Wzn6a64PJM1Ggzm=uvx2otsopJMhFQj_g1rAj4GWr3ZSzw@mail.gmail.com
2021-04-07 08:47:15 -07:00
..
backend Truncate line pointer array during VACUUM. 2021-04-07 08:47:15 -07:00
bin Fix use of cursor sensitivity terminology 2021-04-07 08:05:55 +02:00
common Refactor HMAC implementations 2021-04-03 17:30:49 +09:00
fe_utils
include Truncate line pointer array during VACUUM. 2021-04-07 08:47:15 -07:00
interfaces libpq: Set Server Name Indication (SNI) for SSL connections 2021-04-07 15:11:41 +02:00
makefiles
pl
port
template
test Tighten up allowed names for custom GUC parameters. 2021-04-07 11:22:22 -04:00
timezone
tools Remove tupgone special case from vacuumlazy.c. 2021-04-06 08:49:22 -07:00
tutorial
.gitignore
DEVELOPERS
Makefile
Makefile.global.in
Makefile.shlib
nls-global.mk