Thread
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
-
BUG #18541: Reattaching a partition referenced by a foreign key fails with an error
The Post Office <noreply@postgresql.org> — 2024-07-15T10:00:01Z
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.
-
Re: BUG #18541: Reattaching a partition referenced by a foreign key fails with an error
Tender Wang <tndrwang@gmail.com> — 2024-07-15T13:18:34Z
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
-
Re: BUG #18541: Reattaching a partition referenced by a foreign key fails with an error
Alvaro Herrera <alvherre@alvh.no-ip.org> — 2024-08-07T18:44:55Z
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/
-
Re: BUG #18541: Reattaching a partition referenced by a foreign key fails with an error
Alvaro Herrera <alvherre@alvh.no-ip.org> — 2024-08-07T18:50:50Z
On 2024-Aug-07, Alvaro Herrera wrote: > I think this schema is nuts. Do you have a practical use for something > like this? FWIW if you try to set this up the other way around, you get a different error: create table t (a int primary key) partition by list (a); create table t1 partition of t for values in (1); alter table t add foreign key (a) references t1; ERROR: cannot ALTER TABLE "t1" because it is being used by active queries in this session so I'm not bothered by the restriction in functionality. -- Álvaro Herrera Breisgau, Deutschland — https://www.EnterpriseDB.com/
-
Re: BUG #18541: Reattaching a partition referenced by a foreign key fails with an error
Alvaro Herrera <alvherre@alvh.no-ip.org> — 2024-08-07T22:22:39Z
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); I propose to reject this with the attached patch, which I intend to backpatch all the way down to 12. FWIW, it's not the same problem that Jehan-Guillaume described in [1], even though the error message being thrown is the same. [1] https://postgr.es/m/20230705233028.2f554f73@karst -- Álvaro Herrera 48°01'N 7°57'E — https://www.EnterpriseDB.com/
-
Re: BUG #18541: Reattaching a partition referenced by a foreign key fails with an error
Tender Wang <tndrwang@gmail.com> — 2024-08-08T14:27:49Z
Alvaro Herrera <alvherre@alvh.no-ip.org> 于2024年8月8日周四 06:22写道: > 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); > > I propose to reject this with the attached patch, which I intend to > backpatch all the way down to 12. > > FWIW, it's not the same problem that Jehan-Guillaume described in [1], > even though the error message being thrown is the same. > Thanks for explanation. The attached patch looks good to me. > [1] https://postgr.es/m/20230705233028.2f554f73@karst > > -- Tender Wang
-
Re: BUG #18541: Reattaching a partition referenced by a foreign key fails with an error
Alvaro Herrera <alvherre@alvh.no-ip.org> — 2024-08-08T23:37:10Z
On 2024-Aug-08, Tender Wang wrote: > Thanks for explanation. The attached patch looks good to me. Thanks for looking! I have pushed this now. -- Álvaro Herrera PostgreSQL Developer — https://www.EnterpriseDB.com/