Thread: pgsql: Cope with inplace update making catcache stale during TOAST fetc

Cope with inplace update making catcache stale during TOAST fetch.

This extends ad98fb14226ae6456fbaed7990ee7591cbe5efd2 to invals of
inplace updates.  Trouble requires an inplace update of a catalog having
a TOAST table, so only pg_database was at risk.  (The other catalog on
which core code performs inplace updates, pg_class, has no TOAST table.)
Trouble would require something like the inplace-inval.spec test.
Consider GRANT ... ON DATABASE fetching a stale row from cache and
discarding a datfrozenxid update that vac_truncate_clog() has already
relied upon.  Back-patch to v12 (all supported versions).

Reviewed (in an earlier version) by Robert Haas.

Discussion: https://postgr.es/m/20240114201411.d0@rfd.leadboat.com
Discussion: https://postgr.es/m/20240512232923.aa.nmisch@google.com

Branch
------
REL_12_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/11f3815d6af840dc9d557cc680ec477931a6825b

Modified Files
--------------
src/backend/catalog/catalog.c      | 21 ++++++++++++++++++
src/backend/utils/cache/catcache.c | 44 +++++++++++++++++++++++++++++++++++---
src/include/catalog/catalog.h      |  2 ++
3 files changed, 64 insertions(+), 3 deletions(-)