Re: BUG #18541: Reattaching a partition referenced by a foreign key fails with an error

Tender Wang <tndrwang@gmail.com>

From: Tender Wang <tndrwang@gmail.com>
To: exclusion@gmail.com, pgsql-bugs@lists.postgresql.org
Date: 2024-07-15T13:18:34Z
Lists: pgsql-bugs
PG Bug reporting form <noreply@postgresql.org> 于2024年7月15日周一 21:02写道:

> The following bug has been logged on the website:
>
> Bug reference:      18541
> Logged by:          Alexander Lakhin
> Email address:      exclusion@gmail.com
> PostgreSQL version: 17beta2
> Operating system:   Ubuntu 22.04
> Description:
>
> 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
>
> Reproduced on REL_15_STABLE (starting from f4566345c) .. master.
>
> Hi   Alexander,
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.


[1] https://www.postgresql.org/message-id/20230705233028.2f554f73%40karst

-- 
Tender Wang

Commits

  1. Restructure foreign key handling code for ATTACH/DETACH

  2. Refuse ATTACH of a table referenced by a foreign key