Alvaro Herrera <alvhe...@alvh.no-ip.org> 于2024年8月22日周四 06:00写道:
> On 2024-Aug-19, Alvaro Herrera wrote: > > > 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. -- Tender Wang