Add ALTER TABLE ... ALTER CONSTRAINT ... SET [NO] INHERIT
authorÁlvaro Herrera <alvherre@alvh.no-ip.org>
Wed, 5 Mar 2025 12:50:22 +0000 (13:50 +0100)
committerÁlvaro Herrera <alvherre@alvh.no-ip.org>
Wed, 5 Mar 2025 12:50:22 +0000 (13:50 +0100)
commitf4e53e10b6ce0eedeb98caa4356facb47c7bb9cb
tree9c45e19d7e8635cdb44a4279c3fa0164082c2c02
parentf4694e0f35b218238cbc87bcf8f8f5c6639bb1d4
Add ALTER TABLE ... ALTER CONSTRAINT ... SET [NO] INHERIT

This allows to redefine an existing non-inheritable constraint to be
inheritable, which allows to straighten up situations with NO INHERIT
constraints so that thay can become normal constraints without having to
re-verify existing data.  For existing inheritance children this may
require creating additional constraints, if they don't exist already.

It also allows to do the opposite, if only for symmetry.

Author: Suraj Kharage <suraj.kharage@enterprisedb.com>
Reviewed-by: jian he <jian.universality@gmail.com>
Discussion: https://postgr.es/m/CAF1DzPVfOW6Kk=7SSh7LbneQDJWh=PbJrEC_Wkzc24tHOyQWGg@mail.gmail.com
doc/src/sgml/ref/alter_table.sgml
src/backend/commands/tablecmds.c
src/backend/parser/gram.y
src/include/nodes/parsenodes.h
src/test/regress/expected/inherit.out
src/test/regress/sql/inherit.sql