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 по дате отправления: