pg.ddx.io  pgsql-committers@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Álvaro Herrera <alvherre@alvh.no-ip.org>
To: pgsql-committers@lists.postgresql.org
Subject: pgsql: Fix detach of a partition that has a toplevel FK to a partitione
Date: Tue, 21 Jan 2025 13:54:54 +0000
Message-ID: <E1taEiU-002kHe-6C@gemulon.postgresql.org> (raw)

Fix detach of a partition that has a toplevel FK to a partitioned table

In common cases, foreign keys are defined on the toplevel partitioned
table; but if instead one is defined on a partition and references a
partitioned table, and the referencing partition is detached, we would
examine the pg_constraint row on the partition being detached, and fail
to realize that the sub-constraints must be left alone.  This causes the
ALTER TABLE DETACH process to fail with

 ERROR:  could not find ON INSERT check triggers of foreign key constraint NNN

This is similar but not quite the same as what was fixed by
53af9491a043.  This bug doesn't affect branches earlier than 15, because
the detach procedure was different there, so we only backpatch down to
15.

Fix by skipping such modifying constraints that are children of other
constraints being detached.

Author: Amul Sul <sulamul@gmail.com>
Diagnosys-by: Sami Imseih <samimseih@gmail.com>
Discussion: https://postgr.es/m/CAAJ_b97GuPh6wQPbxQS-Zpy16Oh+0aMv-w64QcGrLhCOZZ6p+g@mail.gmail.com

Branch
------
REL_15_STABLE

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

Modified Files
--------------
src/backend/commands/tablecmds.c          | 30 ++++++++++++++++++++++++++++--
src/test/regress/expected/foreign_key.out |  7 +++++++
src/test/regress/sql/foreign_key.sql      |  8 ++++++++
3 files changed, 43 insertions(+), 2 deletions(-)



view thread (4+ messages)

Message-ID: <E1taEiU-002kHe-6C@gemulon.postgresql.org>
Permalink:  ../E1taEiU-002kHe-6C@gemulon.postgresql.org/
Also on:    postgresql.org/message-id/E1taEiU-002kHe-6C@gemulon.postgresql.org

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-committers@postgresql.org
  Cc: alvherre@alvh.no-ip.org, pgsql-committers@lists.postgresql.org
  Subject: Re: pgsql: Fix detach of a partition that has a toplevel FK to a partitione
  In-Reply-To: <E1taEiU-002kHe-6C@gemulon.postgresql.org>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox