The
statement that names of schema objects are unique isn't strictly true,
just mostly true. Take the case of a unique constraints.
Concerning CONSTRAINTS you are right. Constraints seems to be an
exception:
- Their name belongs to a schema, but are not necessarily unique
within this context:
https://www.postgresql.org/docs/current/catalog-pg-constraint.html.
- There is a UNIQUE index within the system catalog
pg_constraints: "pg_constraint_conrelid_contypid_conname_index"
UNIQUE, btree (conrelid, contypid, conname), which
expresses that names are unique within the context of a
table/constraint-type. Nevertheless tests have shown that some
stronger restrictions exists across table-boarders (,which seems
to be implemented in CREATE statements - or as a consequence of
your mentioned correlation between constraint and index ?).
I hope that there are no more such exception to the global rule
'object names in a schema are unique':
https://www.postgresql.org/docs/current/sql-createschema.html
This facts must be mentioned as a short note in glossary and in
more detail in the later patch about the architecture.
J. Purtz