Re: BUG #15425: DETACH/ATTACH PARTITION bug
Alvaro Herrera <alvherre@2ndquadrant.com>
From: Alvaro Herrera <alvherre@2ndquadrant.com>
To: mikemjv@gmail.com, pgsql-bugs@lists.postgresql.org, Pg Hackers <pgsql-hackers@postgresql.org>
Date: 2018-10-11T22:09:02Z
Lists: pgsql-bugs, pgsql-hackers
Attachments
- detach-fks.patch (text/x-diff) patch
Another version. I realized that attaching a partitioned partition had further trouble, because the recursion at each step would consider all FKs instead of only the FKs that had been cloned. So I had to split out the recursive step of the cloning. Now that works fine. In order to make this work, I made two little change to struct ForeignKeyCacheInfo: first, the constraint OID was added. Second, I made RelationGetFKeyList() return a nonempty list for partitioned tables, which it didn't before (because of the optimization that presupposes no triggers means no FKs, which is not true for partitioned tables). As far as I can see, this has no effect on how the planner uses this function. (This stuff could be done with repeated scans of pg_constraint, but it seems much simpler this way.) Michael sent me his test case offlist, and I verified that it works correctly with this patch. Unless there are objections, I intend to get this pushed tomorrow. -- Álvaro Herrera https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Commits
-
Correct attach/detach logic for FKs in partitions
- 355684ee3fa3 11.0 landed
- c7d43c4d8a5b 12.0 landed