Thread: pgsql: Add toast tables to most system catalogs

pgsql: Add toast tables to most system catalogs

From
Michael Paquier
Date:
Add toast tables to most system catalogs

It has been project policy to create toast tables only for those catalogs
that might reasonably need one.  Since this judgment call can change over
time, just create one for every catalog, as this can be useful when
creating rather-long entries in catalogs, with recent examples being in
the shape of policy expressions or customly-formatted SCRAM verifiers.

To prevent circular dependencies and to avoid adding complexity to VACUUM
FULL logic, exclude pg_class, pg_attribute, and pg_index.  Also, to
prevent pg_upgrade from seeing a non-empty new cluster, exclude
pg_largeobject and pg_largeobject_metadata from the set as large object
data is handled as user data.  Those relations have no reason to use a
toast table anyway.

Author: Joe Conway, John Naylor
Reviewed-by: Michael Paquier, Tom Lane
Discussion: https://postgr.es/m/84ddff04-f122-784b-b6c5-3536804495f8@joeconway.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/96cdeae07f93556df73112456b795d6d35998a0e

Modified Files
--------------
src/backend/catalog/catalog.c             | 18 +++++--
src/include/catalog/toasting.h            | 40 ++++++++++++++--
src/test/regress/expected/misc_sanity.out | 80 +++++++++----------------------
src/test/regress/sql/misc_sanity.sql      | 12 +++--
4 files changed, 82 insertions(+), 68 deletions(-)