Re: simplifying grammar for ALTER CONSTRAINT .. SET [NO] INHERIT

Suraj Kharage <suraj.kharage@enterprisedb.com>

From: Suraj Kharage <suraj.kharage@enterprisedb.com>
To: Álvaro Herrera <alvherre@alvh.no-ip.org>
Cc: Pg Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2025-03-26T14:23:36Z
Lists: pgsql-hackers
On Tue, Mar 25, 2025 at 9:32 PM Álvaro Herrera <alvherre@alvh.no-ip.org>
wrote:

> With commit f4e53e10b6ce we introduced a way to flip the NO INHERIT bit
> on not-null constraints.  However, because of the way the grammar
> dealt with ALTER CONSTRAINT, we were too blind to see a way to implement
> it using the existing production.  It turns out that we can remove it,
> so the commands would be
>
> ALTER TABLE tab ALTER CONSTRAINT constr INHERIT
> ALTER TABLE tab ALTER CONSTRAINT constr NO INHERIT
>
> i.e. the word SET is no longer needed.
>
> Do people find this better?
>

 Yes, I agree. As Peter said, it is now inline with other commands.

I have reviewed the patch and it looks good to me.

Since we are removing the SET keyword, how about removing that from the
below comment as well.

/*
* Propagate the change to children.  For SET NO INHERIT, we don't
* recursively affect children, just the immediate level.
*/

This is the comment from ATExecAlterConstrInheritability().

Commits

  1. Simplify syntax for ALTER TABLE ALTER CONSTRAINT NO INHERIT

  2. Add ALTER TABLE ... ALTER CONSTRAINT ... SET [NO] INHERIT