Fix COPY FREEZE with CLOBBER_CACHE_ALWAYS
authorTomas Vondra <tomas.vondra@postgresql.org>
Sat, 23 Jan 2021 23:24:50 +0000 (00:24 +0100)
committerTomas Vondra <tomas.vondra@postgresql.org>
Sun, 24 Jan 2021 00:08:11 +0000 (01:08 +0100)
commit39b66a91bdebb00af71a2c6218412ecfc89a0e13
tree07b52f0db151aee5d2a322212f0c1ab7dd4b56b3
parent183bbd1b6d4376f1b04c02b7a20b55019f6d84f4
Fix COPY FREEZE with CLOBBER_CACHE_ALWAYS

This adds code omitted from commit 7db0cd2145 by accident, which had
two consequences. Firstly, only rows inserted by heap_multi_insert were
frozen as expected when running COPY FREEZE, while heap_insert left
rows unfrozen. That however includes rows in TOAST tables, so a lot of
data might have been left unfrozen. Secondly, page might have been left
partially empty after relcache invalidation.

This addresses both of those issues.

Discussion: https://postgr.es/m/CABOikdN-ptGv0mZntrK2Q8OtfUuAjqaYMGmkdU1dCKFtUxVLrg@mail.gmail.com
src/backend/access/heap/heapam.c
src/backend/access/heap/hio.c