mirror of https://github.com/postgres/postgres
14e87ffa5c
We now create contype='n' pg_constraint rows for not-null constraints on user tables. Only one such constraint is allowed for a column. We propagate these constraints to other tables during operations such as adding inheritance relationships, creating and attaching partitions and creating tables LIKE other tables. These related constraints mostly follow the well-known rules of conislocal and coninhcount that we have for CHECK constraints, with some adaptations: for example, as opposed to CHECK constraints, we don't match not-null ones by name when descending a hierarchy to alter or remove it, instead matching by the name of the column that they apply to. This means we don't require the constraint names to be identical across a hierarchy. The inheritance status of these constraints can be controlled: now we can be sure that if a parent table has one, then all children will have it as well. They can optionally be marked NO INHERIT, and then children are free not to have one. (There's currently no support for altering a NO INHERIT constraint into inheriting down the hierarchy, but that's a desirable future feature.) This also opens the door for having these constraints be marked NOT VALID, as well as allowing UNIQUE+NOT NULL to be used for functional dependency determination, as envisioned by commit |
||
---|---|---|
.. | ||
binary.out | ||
catalog_change_snapshot.out | ||
concurrent_ddl_dml.out | ||
concurrent_stream.out | ||
ddl.out | ||
decoding_in_xact.out | ||
decoding_into_rel.out | ||
delayed_startup.out | ||
messages.out | ||
mxact.out | ||
oldest_xmin.out | ||
ondisk_startup.out | ||
permissions.out | ||
prepared.out | ||
replorigin.out | ||
rewrite.out | ||
skip_snapshot_restore.out | ||
slot.out | ||
slot_creation_error.out | ||
snapshot_transfer.out | ||
spill.out | ||
stats.out | ||
stream.out | ||
subxact_without_top.out | ||
time.out | ||
toast.out | ||
truncate.out | ||
twophase.out | ||
twophase_snapshot.out | ||
twophase_stream.out | ||
xact.out |