pgsql: Check that partitions are not in use when dropping constraints

Поиск
Список
Период
Сортировка
От Alvaro Herrera
Тема pgsql: Check that partitions are not in use when dropping constraints
Дата
Msg-id E1hq2HX-0000xf-9E@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Check that partitions are not in use when dropping constraints

If the user creates a deferred constraint in a partition, and in a
transaction they cause the constraint's trigger execution to be deferred
until commit time *and* drop the constraint, then when commit time comes
the queued trigger will fail to run because the trigger object will have
been dropped.

This is explained because when a constraint gets dropped in a
partitioned table, the recursion to drop the ones in partitions is done
by the dependency mechanism, not by ALTER TABLE traversing the recursion
tree as in all other cases.  In the non-partitioned case, this problem
is avoided by checking that the table is not "in use" by alter-table;
other alter-table subcommands that recurse to partitions do that check
for each partition.  But the dependency mechanism doesn't have a way to
do that.  Fix the problem by applying the same check to all partitions
during ALTER TABLE's "prep" phase, which correctly raises the necessary
error.

Reported-by: Rajkumar Raghuwanshi <rajkumar.raghuwanshi@enterprisedb.com>
Discussion: https://postgr.es/m/CAKcux6nZiO9-eEpr1ZD84bT1mBoVmeZkfont8iSpcmYrjhGWgA@mail.gmail.com

Branch
------
REL_12_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/3ffe655c0af03cb4d5aab18da2aaa7022d207bf3

Modified Files
--------------
src/backend/commands/tablecmds.c          | 56 +++++++++++++++++++++++++------
src/test/regress/expected/foreign_key.out | 15 +++++++++
src/test/regress/sql/foreign_key.sql      | 12 +++++++
3 files changed, 72 insertions(+), 11 deletions(-)


В списке pgsql-committers по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: pgsql: Improve psql's \d output for TOAST tables.
Следующее
От: Michael Paquier
Дата:
Сообщение: pgsql: Improve stability of TAP test for synchronous replication