Re: Foreign key validation failure in 18beta1
amul sul <sulamul@gmail.com>
From: Amul Sul <sulamul@gmail.com>
To: jian he <jian.universality@gmail.com>
Cc: Tender Wang <tndrwang@gmail.com>,
Alvaro Herrera <alvherre@alvh.no-ip.org>, pgsql-hackers@lists.postgresql.org, Antonin Houska <ah@cybertec.at>
Date: 2025-05-29T12:12:10Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Avoid bogus scans of partitions when marking FKs enforced
- e6f98d8848f1 18.0 landed
-
Avoid bogus scans of partitions when validating FKs to partitioned tables
- cc733ed164c5 18.0 landed
-
Allow NOT VALID foreign key constraints on partitioned tables
- b663b9436e75 18.0 cited
Attachments
- v3-0001-foreign_key_validation-WIP.patch (application/x-patch) patch v3-0001
On Thu, May 29, 2025 at 12:38 PM jian he <jian.universality@gmail.com> wrote: > > On Wed, May 28, 2025 at 8:38 PM Tender Wang <tndrwang@gmail.com> wrote: > > > > > > > > Alvaro Herrera <alvherre@alvh.no-ip.org> 于2025年5月28日周三 20:26写道: > >> > >> On 2025-May-28, Tender Wang wrote: > >> > >> > [...] > The attached *draft* patch is based on your idea. > > The idea is that we only need to conditionally do > ``tab->constraints = lappend(tab->constraints, newcon);`` within > QueueFKConstraintValidation. > but the catalog update needs to be done recursively. I like this approach, but I don’t think the flag name "recursing" is appropriate, as the flag is meant to indicate whether we want to enqueue constraints for validation or not. Additionally, I noticed that we can skip opening child partitions inside QueueFKConstraintValidation() when the referencing table is not partitioned -- that is, when it is the same as the input rel. Based on that, we can decide whether to queue the validation. However, I am not sure this optimization is worth the added complexity in the code. I have tried this in the attached patch (not the final version), with a brief explanation in the code comments. If we choose to move forward with this patch, I am happy to refine it and add proper tests. Regards, Amul