pgsql: Add exclusion constraints, which generalize the concept of

Lists: pgsql-committers
From: tgl(at)postgresql(dot)org (Tom Lane)
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Add exclusion constraints, which generalize the concept of
Date: 2009-12-07 05:22:23
Message-ID: 20091207052223.D838D753FB7@cvs.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-committers

Log Message:
-----------
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

Modified Files:
--------------
pgsql/doc/src/sgml:
catalogs.sgml (r2.211 -> r2.212)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/catalogs.sgml?r1=2.211&r2=2.212)
errcodes.sgml (r1.27 -> r1.28)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/errcodes.sgml?r1=1.27&r2=1.28)
pgsql/doc/src/sgml/ref:
create_table.sgml (r1.119 -> r1.120)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/ref/create_table.sgml?r1=1.119&r2=1.120)
pgsql/src/backend/access/index:
genam.c (r1.76 -> r1.77)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/index/genam.c?r1=1.76&r2=1.77)
pgsql/src/backend/bootstrap:
bootparse.y (r1.100 -> r1.101)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/bootstrap/bootparse.y?r1=1.100&r2=1.101)
bootstrap.c (r1.253 -> r1.254)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/bootstrap/bootstrap.c?r1=1.253&r2=1.254)
pgsql/src/backend/catalog:
heap.c (r1.360 -> r1.361)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/catalog/heap.c?r1=1.360&r2=1.361)
index.c (r1.324 -> r1.325)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/catalog/index.c?r1=1.324&r2=1.325)
indexing.c (r1.118 -> r1.119)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/catalog/indexing.c?r1=1.118&r2=1.119)
information_schema.sql (r1.59 -> r1.60)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/catalog/information_schema.sql?r1=1.59&r2=1.60)
pg_constraint.c (r1.49 -> r1.50)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/catalog/pg_constraint.c?r1=1.49&r2=1.50)
toasting.c (r1.20 -> r1.21)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/catalog/toasting.c?r1=1.20&r2=1.21)
pgsql/src/backend/commands:
constraint.c (r1.1 -> r1.2)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/constraint.c?r1=1.1&r2=1.2)
indexcmds.c (r1.187 -> r1.188)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/indexcmds.c?r1=1.187&r2=1.188)
tablecmds.c (r1.306 -> r1.307)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/tablecmds.c?r1=1.306&r2=1.307)
typecmds.c (r1.138 -> r1.139)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/typecmds.c?r1=1.138&r2=1.139)
vacuum.c (r1.396 -> r1.397)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/vacuum.c?r1=1.396&r2=1.397)
pgsql/src/backend/executor:
execUtils.c (r1.166 -> r1.167)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/execUtils.c?r1=1.166&r2=1.167)
pgsql/src/backend/nodes:
copyfuncs.c (r1.452 -> r1.453)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/copyfuncs.c?r1=1.452&r2=1.453)
equalfuncs.c (r1.374 -> r1.375)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/equalfuncs.c?r1=1.374&r2=1.375)
outfuncs.c (r1.373 -> r1.374)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/outfuncs.c?r1=1.373&r2=1.374)
pgsql/src/backend/parser:
gram.y (r2.694 -> r2.695)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/parser/gram.y?r1=2.694&r2=2.695)
parse_utilcmd.c (r2.30 -> r2.31)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/parser/parse_utilcmd.c?r1=2.30&r2=2.31)
pgsql/src/backend/tcop:
utility.c (r1.320 -> r1.321)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/tcop/utility.c?r1=1.320&r2=1.321)
pgsql/src/backend/utils/adt:
ruleutils.c (r1.315 -> r1.316)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/adt/ruleutils.c?r1=1.315&r2=1.316)
pgsql/src/backend/utils/cache:
relcache.c (r1.292 -> r1.293)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/cache/relcache.c?r1=1.292&r2=1.293)
pgsql/src/bin/pg_dump:
pg_dump.c (r1.553 -> r1.554)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/bin/pg_dump/pg_dump.c?r1=1.553&r2=1.554)
pgsql/src/bin/psql:
describe.c (r1.231 -> r1.232)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/bin/psql/describe.c?r1=1.231&r2=1.232)
pgsql/src/include/catalog:
catversion.h (r1.555 -> r1.556)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/catversion.h?r1=1.555&r2=1.556)
pg_attribute.h (r1.154 -> r1.155)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/pg_attribute.h?r1=1.154&r2=1.155)
pg_class.h (r1.116 -> r1.117)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/pg_class.h?r1=1.116&r2=1.117)
pg_constraint.h (r1.33 -> r1.34)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/pg_constraint.h?r1=1.33&r2=1.34)
pgsql/src/include/commands:
defrem.h (r1.97 -> r1.98)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/commands/defrem.h?r1=1.97&r2=1.98)
pgsql/src/include/executor:
executor.h (r1.163 -> r1.164)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/executor.h?r1=1.163&r2=1.164)
pgsql/src/include/nodes:
execnodes.h (r1.212 -> r1.213)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/nodes/execnodes.h?r1=1.212&r2=1.213)
parsenodes.h (r1.416 -> r1.417)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/nodes/parsenodes.h?r1=1.416&r2=1.417)
pgsql/src/include/parser:
kwlist.h (r1.6 -> r1.7)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/parser/kwlist.h?r1=1.6&r2=1.7)
pgsql/src/include/utils:
errcodes.h (r1.29 -> r1.30)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/utils/errcodes.h?r1=1.29&r2=1.30)
rel.h (r1.116 -> r1.117)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/utils/rel.h?r1=1.116&r2=1.117)
relcache.h (r1.64 -> r1.65)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/utils/relcache.h?r1=1.64&r2=1.65)
pgsql/src/pl/plpgsql/src:
plerrcodes.h (r1.18 -> r1.19)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/pl/plpgsql/src/plerrcodes.h?r1=1.18&r2=1.19)
pgsql/src/test/regress/input:
constraints.source (r1.13 -> r1.14)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/input/constraints.source?r1=1.13&r2=1.14)
pgsql/src/test/regress/output:
constraints.source (r1.45 -> r1.46)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/output/constraints.source?r1=1.45&r2=1.46)