pgsql: Ignore attempts to add TOAST table to shared or catalog tables - Mailing list pgsql-committers

From Peter Eisentraut
Subject pgsql: Ignore attempts to add TOAST table to shared or catalog tables
Date
Msg-id E1h6BpY-0006Uc-R8@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Ignore attempts to add TOAST table to shared or catalog tables

Running ALTER TABLE on any table will check if a TOAST table needs to be
added.  On shared tables, this would previously fail, thus effectively
disabling ALTER TABLE for those tables.  On (non-shared) system
catalogs, on the other hand, it would add a TOAST table, even though we
don't really want TOAST tables on some system catalogs.  In some cases,
it would also fail with an error "AccessExclusiveLock required to add
toast table.", depending on what locks the ALTER TABLE actions had
already taken.

So instead, just ignore attempts to add TOAST tables to such tables,
outside of bootstrap mode, pretending they don't need one.

This allows running ALTER TABLE on such tables without messing up the
TOAST situation.  Legitimate uses for ALTER TABLE on system catalogs
include setting reloptions (say, fillfactor or autovacuum settings).

(All this still requires allow_system_table_mods, which is independent
of this.)

Discussion: https://www.postgresql.org/message-id/flat/e49f825b-fb25-0bc8-8afc-d5ad895c7975@2ndquadrant.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/590a87025b0aa9ebca53c7b71ddf036e5acd8f08

Modified Files
--------------
src/backend/catalog/toasting.c | 42 ++++++++++++++++++++++++++----------------
1 file changed, 26 insertions(+), 16 deletions(-)


pgsql-committers by date:

Previous
From: Peter Eisentraut
Date:
Subject: pgsql: Fix whitespace
Next
From: Alexander Korotkov
Date:
Subject: pgsql: Rename typedef in jsonpath_scan.l from "keyword" to"JsonPathKey