Support deferrable uniqueness constraints.
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 29 Jul 2009 20:56:21 +0000 (20:56 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 29 Jul 2009 20:56:21 +0000 (20:56 +0000)
commit25d9bf2e3e66ee2e546c5c523d148ecab6ee1dcc
treeb0dee0f1d6111fd6658d432ec30e5ddb88adc02f
parent850490579318ff52097eec92ce535357dd0c7a3a
Support deferrable uniqueness constraints.

The current implementation fires an AFTER ROW trigger for each tuple that
looks like it might be non-unique according to the index contents at the
time of insertion.  This works well as long as there aren't many conflicts,
but won't scale to massive unique-key reassignments.  Improving that case
is a TODO item.

Dean Rasheed
51 files changed:
doc/src/sgml/catalogs.sgml
doc/src/sgml/indexam.sgml
doc/src/sgml/ref/create_table.sgml
doc/src/sgml/ref/set_constraints.sgml
src/backend/access/gin/gininsert.c
src/backend/access/gist/gist.c
src/backend/access/hash/hash.c
src/backend/access/heap/tuptoaster.c
src/backend/access/index/indexam.c
src/backend/access/nbtree/nbtinsert.c
src/backend/access/nbtree/nbtree.c
src/backend/bootstrap/bootparse.y
src/backend/catalog/index.c
src/backend/catalog/indexing.c
src/backend/catalog/sql_features.txt
src/backend/catalog/toasting.c
src/backend/commands/Makefile
src/backend/commands/constraint.c [new file with mode: 0644]
src/backend/commands/copy.c
src/backend/commands/indexcmds.c
src/backend/commands/tablecmds.c
src/backend/commands/trigger.c
src/backend/executor/execMain.c
src/backend/executor/execUtils.c
src/backend/nodes/copyfuncs.c
src/backend/nodes/equalfuncs.c
src/backend/nodes/outfuncs.c
src/backend/parser/gram.y
src/backend/parser/parse_utilcmd.c
src/backend/tcop/utility.c
src/backend/utils/adt/ruleutils.c
src/backend/utils/cache/relcache.c
src/bin/pg_dump/pg_dump.c
src/bin/pg_dump/pg_dump.h
src/bin/psql/describe.c
src/include/access/genam.h
src/include/access/nbtree.h
src/include/catalog/catversion.h
src/include/catalog/index.h
src/include/catalog/pg_attribute.h
src/include/catalog/pg_index.h
src/include/catalog/pg_proc.h
src/include/commands/defrem.h
src/include/commands/trigger.h
src/include/executor/executor.h
src/include/nodes/parsenodes.h
src/include/utils/builtins.h
src/test/regress/expected/sanity_check.out
src/test/regress/input/constraints.source
src/test/regress/output/constraints.source
src/test/regress/sql/sanity_check.sql