pgsql: Fix droppability of constraints upon partition detach

Поиск
Список
Период
Сортировка
От Alvaro Herrera
Тема pgsql: Fix droppability of constraints upon partition detach
Дата
Msg-id E1gmiWK-0006xF-Tu@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Fix droppability of constraints upon partition detach

We were failing to set conislocal correctly for constraints in
partitions after partition detach, leading to those constraints becoming
undroppable.  Fix by setting the flag correctly.  Existing databases
might contain constraints with the conislocal wrongly set to false, for
partitions that were detached; this situation should be fixable by
applying an UPDATE on pg_constraint to set conislocal true.  This
problem should otherwise be innocuous and should disappear across a
dump/restore or pg_upgrade.

Secondarily, when constraint drop was attempted in a partitioned table,
ATExecDropConstraint would try to recurse to partitions after doing
performDeletion() of the constraint in the partitioned table itself; but
since the constraint in the partitions are dropped by the initial call
of performDeletion() (because of following dependencies), the recursion
step would fail since it would not find the constraint, causing the
whole operation to fail.  Fix by preventing recursion.

Reported-by: Amit Langote
Diagnosed-by: Amit Langote
Author: Amit Langote, Álvaro Herrera
Discussion: https://postgr.es/m/f2b8ead5-4131-d5a8-8016-2ea0a31250af@lab.ntt.co.jp

Branch
------
REL_11_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/1ad5210998e33cccb4ea97b33837f19193d1011d

Modified Files
--------------
src/backend/catalog/pg_constraint.c       | 12 ++++++++++--
src/backend/commands/tablecmds.c          | 24 ++++++++++++++++++++++--
src/test/regress/expected/foreign_key.out | 20 ++++++++++++++++++--
src/test/regress/sql/foreign_key.sql      | 16 +++++++++++++++-
4 files changed, 65 insertions(+), 7 deletions(-)


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

Предыдущее
От: Tom Lane
Дата:
Сообщение: pgsql: Fix portability problem in pgbench.
Следующее
От: Peter Eisentraut
Дата:
Сообщение: pgsql: Fix whitespace