> I haven't pushed it yet, mostly because of being unsure about not doing > anything for the oldest branches (14 and back).
Last night, after much mulling on this, it occurred to me that one easy way out of this problem for the old branches, without having to write more code, is to simply remove the constraint from the partition when it's detached (but only if they reference a partitioned relation). It's not a great solution, but at least we're no longer leaving bogus catalog entries around. That would be like the attached patch, which was cut from 14 and applies cleanly to 12 and 13. I'd throw in a couple of tests and call it a day.
I apply the v14 patch on branch REL_14_STABLE. I run this thread issue and I
find below error.
postgres=# CREATE TABLE p ( id bigint PRIMARY KEY ) PARTITION BY list (id); CREATE TABLE p_1 PARTITION OF p FOR VALUES IN (1); CREATE TABLE r_1 ( id bigint PRIMARY KEY, p_id bigint NOT NULL, FOREIGN KEY (p_id) REFERENCES p (id) ); CREATE TABLE r ( id bigint PRIMARY KEY, p_id bigint NOT NULL, FOREIGN KEY (p_id) REFERENCES p (id) ) PARTITION BY list (id); ALTER TABLE r ATTACH PARTITION r_1 FOR VALUES IN (1); ALTER TABLE r DETACH PARTITION r_1; CREATE TABLE CREATE TABLE CREATE TABLE CREATE TABLE ALTER TABLE
ERROR: cache lookup failed for constraint 16400
I haven't look into details to find out where cause above error.