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

Peter Eisentraut <peter@eisentraut.org>

From: Peter Eisentraut <peter@eisentraut.org>
To: Álvaro Herrera <alvherre@alvh.no-ip.org>, Pg Hackers <pgsql-hackers@lists.postgresql.org>
Cc: Suraj Kharage <suraj.kharage@enterprisedb.com>
Date: 2025-03-26T11:55:47Z
Lists: pgsql-hackers
On 25.03.25 17:02, Álvaro Herrera 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?

This seems better, considering that the SQL-standard syntax for ENFORCED is:

ALTER TABLE tab ALTER CONSTRAINT constr ENFORCED
ALTER TABLE tab ALTER CONSTRAINT constr NOT ENFORCED

also without "SET".




Commits

  1. Simplify syntax for ALTER TABLE ALTER CONSTRAINT NO INHERIT

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