Re: BUG #18541: Reattaching a partition referenced by a foreign key fails with an error
Alvaro Herrera <alvherre@alvh.no-ip.org>
From: Alvaro Herrera <alvherre@alvh.no-ip.org>
To: Tender Wang <tndrwang@gmail.com>
Cc: exclusion@gmail.com, pgsql-bugs@lists.postgresql.org
Date: 2024-08-07T18:44:55Z
Lists: pgsql-bugs
On 2024-Jul-15, Tender Wang wrote: > PG Bug reporting form <noreply@postgresql.org> 于2024年7月15日周一 21:02写道: > > > The following script: > > CREATE TABLE t1 (a int, PRIMARY KEY (a)); > > CREATE TABLE t (a int, PRIMARY KEY (a), FOREIGN KEY (a) REFERENCES t1) > > PARTITION BY LIST (a); > > ALTER TABLE t ATTACH PARTITION t1 FOR VALUES IN (1); > > ALTER TABLE t DETACH PARTITION t1; > > ALTER TABLE t ATTACH PARTITION t1 FOR VALUES IN (1); > > > > ends up with the error complaining about check triggers: > > ERROR: XX000: could not find ON INSERT check triggers of foreign key > > constraint 16400 > > LOCATION: GetForeignKeyCheckTriggers, tablecmds.c:11260 > I saw the same error in [1]. I guess it is same issue. > I send a patch in [1], but it may need a more work. I think this schema is nuts. Do you have a practical use for something like this? I am tempted to fix this by dictating that you can't join a table as a partition if the partitioned table contains an FK that references that table. FWIW the patch I have fixes all the other reported problems with FKs and partitioned tables, but not this one. -- Álvaro Herrera PostgreSQL Developer — https://www.EnterpriseDB.com/
Commits
-
Restructure foreign key handling code for ATTACH/DETACH
- d20194cead75 13.17 landed
- 5d83bad6b87d 15.9 landed
- 5914a22f6ea5 17.1 landed
- 53af9491a043 18.0 landed
- 46a8c27a7226 14.14 landed
- 2aaf2a28b87e 16.5 landed
-
Refuse ATTACH of a table referenced by a foreign key
- e97121d90e91 14.14 landed
- ada34d7146c3 16.5 landed
- a90bdd7a44d0 18.0 landed
- 8c0944ac878d 15.9 landed
- 344f9f5e2b18 17.0 landed
- 2ee02c98dd17 13.17 landed
- 17ed92e1ff60 12.21 landed