Re: NOT ENFORCED constraint feature
amul sul <sulamul@gmail.com>
From: Amul Sul <sulamul@gmail.com>
To: Álvaro Herrera <alvherre@alvh.no-ip.org>
Cc: Peter Eisentraut <peter@eisentraut.org>,
Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>, jian he <jian.universality@gmail.com>, PostgreSQL-development <pgsql-hackers@postgresql.org>,
Joel Jacobson <joel@compiler.org>, Alexandra Wang <alexandra.wang.oss@gmail.com>, Suraj Kharage <suraj.kharage@enterprisedb.com>
Date: 2025-03-21T05:58:44Z
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 →
-
Add support for NOT ENFORCED in foreign key constraints
- eec0040c4bcd 18.0 landed
-
Expand test a bit
- 5d5f415816a6 18.0 landed
-
refactor: Pass relation OID instead of Relation to createForeignKeyCheckTriggers()
- ef7a5af77d44 18.0 landed
-
refactor: Split ATExecAlterConstraintInternal()
- 639238b978fe 18.0 landed
-
refactor: Move some code that updates pg_constraint to a separate function
- a3280e2a494f 18.0 landed
-
Move RemoveInheritedConstraint() call slightly earlier
- dabccf45139a 18.0 landed
-
refactor: Split tryAttachPartitionForeignKey()
- 1d26c2d2c4b8 18.0 landed
-
refactor: re-add ATExecAlterChildConstr()
- 64224a834ce4 18.0 landed
-
Add ATAlterConstraint struct for ALTER .. CONSTRAINT
- 80d7f990496b 18.0 landed
-
refactor: split ATExecAlterConstrRecurse()
- 7a947ed25b54 18.0 landed
-
Add support for NOT ENFORCED in CHECK constraints
- ca87c415e2fc 18.0 landed
Attachments
- v18-0001-refactor-move-code-updates-pg_constraint-entry-i.patch (application/octet-stream) patch v18-0001
- v18-0002-refactor-Split-ATExecAlterConstraintInternal.patch (application/octet-stream) patch v18-0002
- v18-0003-refactor-Pass-Relid-instead-of-Relation-to-creat.patch (application/octet-stream) patch v18-0003
- v18-0004-Remove-hastriggers-flag-check-before-fetching-FK.patch (application/octet-stream) patch v18-0004
- v18-0005-Add-support-for-NOT-ENFORCED-in-foreign-key-cons.patch (application/octet-stream) patch v18-0005
- v18-0006-Merge-the-parent-and-child-constraints-with-diff.patch (application/octet-stream) patch v18-0006
On Wed, Mar 19, 2025 at 12:33 AM Álvaro Herrera <alvherre@alvh.no-ip.org> wrote: > > On 2025-Mar-12, Amul Sul wrote: > > > On Tue, Mar 11, 2025 at 11:13 PM Peter Eisentraut <peter@eisentraut.org> wrote: > > > > I think the next step here is that you work to fix Álvaro's concerns > > > about the recursion structure. > > > > Yes, I worked on that in the attached version. I refactored > > ATExecAlterConstraintInternal() and moved the code that updates the > > pg_constraint entry into a separate function (see 0001), so it can be > > called from the places where the entry needs to be updated, rather > > than revisiting ATExecAlterConstraintInternal(). In 0002, > > ATExecAlterConstraintInternal() is split into two functions: > > ATExecAlterConstrDeferrability() and > > ATExecAlterConstrInheritability(), which handle altering deferrability > > and inheritability, respectively. These functions are expected to > > recurse on themselves, rather than revisiting > > ATExecAlterConstraintInternal() as before. This approach simplifies > > things. Similarly can add ATExecAlterConstrEnforceability() which > > recurses itself. > > Yeah, I gave this a look and I think this code layout is good. There > are more functions now, but the code flow is simpler. > Thank you ! Attached is the updated version, where the commit messages for patch 0005 and 0006 have been slightly corrected. Additionally, a few code comments have been updated to consistently use the ENFORCED/NOT ENFORCED keywords. The rest of the patches and all the code are unchanged. Regards, Amul