pgsql: Add temporal PRIMARY KEY and UNIQUE constraints
Add temporal PRIMARY KEY and UNIQUE constraints
Add WITHOUT OVERLAPS clause to PRIMARY KEY and UNIQUE constraints.
These are backed by GiST indexes instead of B-tree indexes, since they
are essentially exclusion constraints with = for the scalar parts of
the key and && for the temporal part.
Author: Paul A. Jungwirth <pj@illuminatedcomputing.com>
Reviewed-by: Peter Eisentraut <peter@eisentraut.org>
Reviewed-by: jian he <jian.universality@gmail.com>
Discussion: /messages/by-id/CA+renyUApHgSZF9-nd-a0+OPGharLQLO=mDHcY4_qQ0+noCUVg@mail.gmail.com
Branch
------
master
Details
-------
https://git.postgresql.org/pg/commitdiff/46a0cd4cefb4d9b462d8cc4df5e7ecdd190bea92
Modified Files
--------------
contrib/btree_gist/Makefile | 2 +-
contrib/btree_gist/expected/without_overlaps.out | 44 +++
contrib/btree_gist/meson.build | 1 +
contrib/btree_gist/sql/without_overlaps.sql | 25 ++
doc/src/sgml/catalogs.sgml | 10 +
doc/src/sgml/gist.sgml | 14 +-
doc/src/sgml/ref/create_table.sgml | 45 ++-
src/backend/access/gist/gistutil.c | 29 ++
src/backend/catalog/heap.c | 2 +
src/backend/catalog/index.c | 4 +
src/backend/catalog/pg_constraint.c | 2 +
src/backend/commands/indexcmds.c | 143 +++++++-
src/backend/commands/tablecmds.c | 6 +-
src/backend/commands/trigger.c | 1 +
src/backend/commands/typecmds.c | 1 +
src/backend/nodes/outfuncs.c | 2 +
src/backend/nodes/readfuncs.c | 2 +
src/backend/parser/gram.y | 29 +-
src/backend/parser/parse_utilcmd.c | 28 +-
src/backend/utils/adt/ruleutils.c | 2 +
src/backend/utils/cache/relcache.c | 18 +-
src/bin/pg_dump/pg_dump.c | 16 +-
src/bin/pg_dump/pg_dump.h | 2 +
src/bin/pg_dump/t/002_pg_dump.pl | 36 +++
src/bin/psql/describe.c | 12 +-
src/include/access/gist.h | 3 +
src/include/catalog/catversion.h | 2 +-
src/include/catalog/index.h | 1 +
src/include/catalog/pg_constraint.h | 10 +-
src/include/commands/defrem.h | 6 +-
src/include/nodes/parsenodes.h | 2 +
src/test/regress/expected/without_overlaps.out | 395 +++++++++++++++++++++++
src/test/regress/parallel_schedule | 2 +-
src/test/regress/sql/without_overlaps.sql | 290 +++++++++++++++++
34 files changed, 1135 insertions(+), 52 deletions(-)