pgsql: Support deferrable uniqueness constraints. - Mailing list pgsql-committers
From | tgl@postgresql.org (Tom Lane) |
---|---|
Subject | pgsql: Support deferrable uniqueness constraints. |
Date | |
Msg-id | 20090729205621.78BB475331E@cvs.postgresql.org Whole thread Raw |
List | pgsql-committers |
Log Message: ----------- 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 Modified Files: -------------- pgsql/doc/src/sgml: catalogs.sgml (r2.202 -> r2.203) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/catalogs.sgml?r1=2.202&r2=2.203) indexam.sgml (r2.30 -> r2.31) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/indexam.sgml?r1=2.30&r2=2.31) pgsql/doc/src/sgml/ref: create_table.sgml (r1.114 -> r1.115) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/ref/create_table.sgml?r1=1.114&r2=1.115) set_constraints.sgml (r1.16 -> r1.17) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/ref/set_constraints.sgml?r1=1.16&r2=1.17) pgsql/src/backend/access/gin: gininsert.c (r1.22 -> r1.23) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/gin/gininsert.c?r1=1.22&r2=1.23) pgsql/src/backend/access/gist: gist.c (r1.156 -> r1.157) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/gist/gist.c?r1=1.156&r2=1.157) pgsql/src/backend/access/hash: hash.c (r1.112 -> r1.113) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/hash/hash.c?r1=1.112&r2=1.113) pgsql/src/backend/access/heap: tuptoaster.c (r1.94 -> r1.95) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/heap/tuptoaster.c?r1=1.94&r2=1.95) pgsql/src/backend/access/index: indexam.c (r1.114 -> r1.115) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/index/indexam.c?r1=1.114&r2=1.115) pgsql/src/backend/access/nbtree: nbtinsert.c (r1.170 -> r1.171) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/nbtree/nbtinsert.c?r1=1.170&r2=1.171) nbtree.c (r1.171 -> r1.172) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/nbtree/nbtree.c?r1=1.171&r2=1.172) pgsql/src/backend/bootstrap: bootparse.y (r1.96 -> r1.97) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/bootstrap/bootparse.y?r1=1.96&r2=1.97) pgsql/src/backend/catalog: index.c (r1.319 -> r1.320) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/catalog/index.c?r1=1.319&r2=1.320) indexing.c (r1.117 -> r1.118) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/catalog/indexing.c?r1=1.117&r2=1.118) sql_features.txt (r1.39 -> r1.40) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/catalog/sql_features.txt?r1=1.39&r2=1.40) toasting.c (r1.17 -> r1.18) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/catalog/toasting.c?r1=1.17&r2=1.18) pgsql/src/backend/commands: Makefile (r1.39 -> r1.40) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/Makefile?r1=1.39&r2=1.40) copy.c (r1.315 -> r1.316) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/copy.c?r1=1.315&r2=1.316) indexcmds.c (r1.186 -> r1.187) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/indexcmds.c?r1=1.186&r2=1.187) tablecmds.c (r1.292 -> r1.293) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/tablecmds.c?r1=1.292&r2=1.293) trigger.c (r1.249 -> r1.250) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/trigger.c?r1=1.249&r2=1.250) pgsql/src/backend/executor: execMain.c (r1.326 -> r1.327) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/execMain.c?r1=1.326&r2=1.327) execUtils.c (r1.160 -> r1.161) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/execUtils.c?r1=1.160&r2=1.161) pgsql/src/backend/nodes: copyfuncs.c (r1.435 -> r1.436) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/copyfuncs.c?r1=1.435&r2=1.436) equalfuncs.c (r1.358 -> r1.359) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/equalfuncs.c?r1=1.358&r2=1.359) outfuncs.c (r1.361 -> r1.362) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/outfuncs.c?r1=1.361&r2=1.362) pgsql/src/backend/parser: gram.y (r2.673 -> r2.674) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/parser/gram.y?r1=2.673&r2=2.674) parse_utilcmd.c (r2.23 -> r2.24) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/parser/parse_utilcmd.c?r1=2.23&r2=2.24) pgsql/src/backend/tcop: utility.c (r1.312 -> r1.313) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/tcop/utility.c?r1=1.312&r2=1.313) pgsql/src/backend/utils/adt: ruleutils.c (r1.304 -> r1.305) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/adt/ruleutils.c?r1=1.304&r2=1.305) pgsql/src/backend/utils/cache: relcache.c (r1.287 -> r1.288) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/cache/relcache.c?r1=1.287&r2=1.288) pgsql/src/bin/pg_dump: pg_dump.c (r1.542 -> r1.543) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/bin/pg_dump/pg_dump.c?r1=1.542&r2=1.543) pg_dump.h (r1.154 -> r1.155) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/bin/pg_dump/pg_dump.h?r1=1.154&r2=1.155) pgsql/src/bin/psql: describe.c (r1.225 -> r1.226) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/bin/psql/describe.c?r1=1.225&r2=1.226) pgsql/src/include/access: genam.h (r1.78 -> r1.79) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/access/genam.h?r1=1.78&r2=1.79) nbtree.h (r1.124 -> r1.125) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/access/nbtree.h?r1=1.124&r2=1.125) pgsql/src/include/catalog: catversion.h (r1.533 -> r1.534) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/catversion.h?r1=1.533&r2=1.534) index.h (r1.77 -> r1.78) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/index.h?r1=1.77&r2=1.78) pg_attribute.h (r1.148 -> r1.149) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/pg_attribute.h?r1=1.148&r2=1.149) pg_index.h (r1.47 -> r1.48) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/pg_index.h?r1=1.47&r2=1.48) pg_proc.h (r1.546 -> r1.547) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/pg_proc.h?r1=1.546&r2=1.547) pgsql/src/include/commands: defrem.h (r1.95 -> r1.96) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/commands/defrem.h?r1=1.95&r2=1.96) trigger.h (r1.74 -> r1.75) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/commands/trigger.h?r1=1.74&r2=1.75) pgsql/src/include/executor: executor.h (r1.157 -> r1.158) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/executor.h?r1=1.157&r2=1.158) pgsql/src/include/nodes: parsenodes.h (r1.398 -> r1.399) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/nodes/parsenodes.h?r1=1.398&r2=1.399) pgsql/src/include/utils: builtins.h (r1.334 -> r1.335) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/utils/builtins.h?r1=1.334&r2=1.335) pgsql/src/test/regress/expected: sanity_check.out (r1.39 -> r1.40) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/expected/sanity_check.out?r1=1.39&r2=1.40) pgsql/src/test/regress/input: constraints.source (r1.12 -> r1.13) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/input/constraints.source?r1=1.12&r2=1.13) pgsql/src/test/regress/output: constraints.source (r1.43 -> r1.44) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/output/constraints.source?r1=1.43&r2=1.44) pgsql/src/test/regress/sql: sanity_check.sql (r1.6 -> r1.7) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/sql/sanity_check.sql?r1=1.6&r2=1.7) Added Files: ----------- pgsql/src/backend/commands: constraint.c (r1.1) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/constraint.c?rev=1.1&content-type=text/x-cvsweb-markup)
pgsql-committers by date: