Add exclusion constraints, which generalize the concept of uniqueness to

Tom Lane <tgl@sss.pgh.pa.us>

Commit: 0cb65564e5f855b1e9aa145fd645352130f74646
Author: Tom Lane <tgl@sss.pgh.pa.us>
Date: 2009-12-07T05:22:23Z
Releases: 9.0.0
Add exclusion constraints, which generalize the concept of uniqueness to
support any indexable commutative operator, not just equality.  Two rows
violate the exclusion constraint if "row1.col OP row2.col" is TRUE for
each of the columns in the constraint.

Jeff Davis, reviewed by Robert Haas

Files

PathChange+/−
doc/src/sgml/catalogs.sgml modified +55 −16
doc/src/sgml/errcodes.sgml modified +7 −1
doc/src/sgml/ref/create_table.sgml modified +106 −26
src/backend/access/index/genam.c modified +19 −12
src/backend/bootstrap/bootparse.y modified +3 −3
src/backend/bootstrap/bootstrap.c modified +5 −1
src/backend/catalog/heap.c modified +6 −4
src/backend/catalog/index.c modified +172 −16
src/backend/catalog/indexing.c modified +6 −3
src/backend/catalog/information_schema.sql modified +2 −1
src/backend/catalog/pg_constraint.c modified +29 −1
src/backend/catalog/toasting.c modified +4 −1
src/backend/commands/constraint.c modified +34 −11
src/backend/commands/indexcmds.c modified +131 −7
src/backend/commands/tablecmds.c modified +3 −1
src/backend/commands/typecmds.c modified +17 −4
src/backend/commands/vacuum.c modified +8 −2
src/backend/executor/execUtils.c modified +255 −9
src/backend/nodes/copyfuncs.c modified +5 −1
src/backend/nodes/equalfuncs.c modified +5 −1
src/backend/nodes/outfuncs.c modified +13 −1
src/backend/parser/gram.y modified +53 −4
src/backend/parser/parse_utilcmd.c modified +116 −22
src/backend/tcop/utility.c modified +2 −1
src/backend/utils/adt/ruleutils.c modified +78 −9
src/backend/utils/cache/relcache.c modified +135 −3
src/bin/pg_dump/pg_dump.c modified +77 −28
src/bin/psql/describe.c modified +53 −3
src/include/catalog/catversion.h modified +2 −2
src/include/catalog/pg_attribute.h modified +15 −13
src/include/catalog/pg_class.h modified +14 −12
src/include/catalog/pg_constraint.h modified +13 −4
src/include/commands/defrem.h modified +2 −1
src/include/executor/executor.h modified +7 −1
src/include/nodes/execnodes.h modified +7 −1
src/include/nodes/parsenodes.h modified +12 −2
src/include/parser/kwlist.h modified +2 −1
src/include/utils/errcodes.h modified +2 −1
src/include/utils/relcache.h modified +5 −1
src/include/utils/rel.h modified +4 −1
src/pl/plpgsql/src/plerrcodes.h modified +5 −1
src/test/regress/input/constraints.source modified +59 −0
src/test/regress/output/constraints.source modified +62 −0