pgsql: pg_dump: fix dependencies on FKs to partitioned tables - Mailing list pgsql-committers

From Alvaro Herrera
Subject pgsql: pg_dump: fix dependencies on FKs to partitioned tables
Date
Msg-id E1k6hLO-00017Z-99@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
pg_dump: fix dependencies on FKs to partitioned tables

Parallel-restoring a foreign key that references a partitioned table
with several levels of partitions can fail:

pg_restore: while PROCESSING TOC:
pg_restore: from TOC entry 6684; 2606 29166 FK CONSTRAINT fk fk_a_fkey postgres
pg_restore: error: could not execute query: ERROR:  there is no unique constraint matching given keys for referenced
table"pk" 
Command was: ALTER TABLE fkpart3.fk
    ADD CONSTRAINT fk_a_fkey FOREIGN KEY (a) REFERENCES fkpart3.pk(a);

This happens in parallel restore mode because some index partitions
aren't yet attached to the topmost partitioned index that the FK uses,
and so the index is still invalid.  The current code marks the FK as
dependent on the first level of index-attach dump objects; the bug is
fixed by recursively marking the FK on their children.

Backpatch to 12, where FKs to partitioned tables were introduced.

Reported-by: Tom Lane <tgl@sss.pgh.pa.us>
Author: Álvaro Herrera <alvherre@alvh.no-ip.org>
Discussion: https://postgr.es/m/3170626.1594842723@sss.pgh.pa.us
Backpatch: 12-master

Branch
------
REL_12_STABLE

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

Modified Files
--------------
src/bin/pg_dump/pg_dump.c | 41 ++++++++++++++++++++++++++++++++++-------
1 file changed, 34 insertions(+), 7 deletions(-)


pgsql-committers by date:

Previous
From: Peter Geoghegan
Date:
Subject: pgsql: Fix obsolete comment in xlogutils.c.
Next
From: Andres Freund
Date:
Subject: pgsql: snapshot scalability: Move subxact info to ProcGlobal, remove PG