pgsql: Fix droppability of constraints upon partition detach - Mailing list pgsql-committers

From Alvaro Herrera
Subject pgsql: Fix droppability of constraints upon partition detach
Date
Msg-id E1gmiWK-0006xF-Tu@gemulon.postgresql.org
Whole thread Raw
List 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 by date:

Previous
From: Tom Lane
Date:
Subject: pgsql: Fix portability problem in pgbench.
Next
From: Peter Eisentraut
Date:
Subject: pgsql: Fix whitespace