postgres/contrib/btree_gist/sql
Peter Eisentraut fc0438b4e8 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.

(previously committed as 46a0cd4cef, reverted by 46a0cd4cefb; the new
part is this:)

Because 'empty' && 'empty' is false, the temporal PK/UQ constraint
allowed duplicates, which is confusing to users and breaks internal
expectations.  For instance, when GROUP BY checks functional
dependencies on the PK, it allows selecting other columns from the
table, but in the presence of duplicate keys you could get the value
from any of their rows.  So we need to forbid empties.

This all means that at the moment we can only support ranges and
multiranges for temporal PK/UQs, unlike the original patch (above).
Documentation and tests for this are added.  But this could
conceivably be extended by introducing some more general support for
the notion of "empty" for other types.

Author: Paul A. Jungwirth <pj@illuminatedcomputing.com>
Reviewed-by: Peter Eisentraut <peter@eisentraut.org>
Reviewed-by: jian he <jian.universality@gmail.com>
Discussion: https://www.postgresql.org/message-id/flat/CA+renyUApHgSZF9-nd-a0+OPGharLQLO=mDHcY4_qQ0+noCUVg@mail.gmail.com
2024-09-17 11:29:30 +02:00
..
bit.sql Revert "Add sortsupport for gist_btree opclasses, for faster index builds." 2021-04-07 14:33:21 +03:00
bool.sql Add bool GiST opclass to btree_gist 2021-11-06 17:00:43 +01:00
bytea.sql Revert "Add sortsupport for gist_btree opclasses, for faster index builds." 2021-04-07 14:33:21 +03:00
cash.sql Revert "Add sortsupport for gist_btree opclasses, for faster index builds." 2021-04-07 14:33:21 +03:00
char.sql Revert "Add sortsupport for gist_btree opclasses, for faster index builds." 2021-04-07 14:33:21 +03:00
cidr.sql Revert "Add sortsupport for gist_btree opclasses, for faster index builds." 2021-04-07 14:33:21 +03:00
date.sql Revert "Add sortsupport for gist_btree opclasses, for faster index builds." 2021-04-07 14:33:21 +03:00
enum.sql Revert "Add sortsupport for gist_btree opclasses, for faster index builds." 2021-04-07 14:33:21 +03:00
float4.sql Revert "Add sortsupport for gist_btree opclasses, for faster index builds." 2021-04-07 14:33:21 +03:00
float8.sql Revert "Add sortsupport for gist_btree opclasses, for faster index builds." 2021-04-07 14:33:21 +03:00
inet.sql Handle mixed returnable and non-returnable columns better in IOS. 2022-01-03 16:12:11 -05:00
init.sql Test all contrib-created operator classes with amvalidate. 2016-11-29 15:05:22 -05:00
int2.sql Revert "Add sortsupport for gist_btree opclasses, for faster index builds." 2021-04-07 14:33:21 +03:00
int4.sql Revert "Add sortsupport for gist_btree opclasses, for faster index builds." 2021-04-07 14:33:21 +03:00
int8.sql Revert "Add sortsupport for gist_btree opclasses, for faster index builds." 2021-04-07 14:33:21 +03:00
interval.sql Revert "Add sortsupport for gist_btree opclasses, for faster index builds." 2021-04-07 14:33:21 +03:00
macaddr.sql Revert "Add sortsupport for gist_btree opclasses, for faster index builds." 2021-04-07 14:33:21 +03:00
macaddr8.sql Revert "Add sortsupport for gist_btree opclasses, for faster index builds." 2021-04-07 14:33:21 +03:00
not_equal.sql Ensure plan stability in contrib/btree_gist regression test. 2016-05-12 20:04:38 -04:00
numeric.sql Revert "Add sortsupport for gist_btree opclasses, for faster index builds." 2021-04-07 14:33:21 +03:00
oid.sql Revert "Add sortsupport for gist_btree opclasses, for faster index builds." 2021-04-07 14:33:21 +03:00
partitions.sql Allow some exclusion constraints on partitions 2023-07-12 09:25:17 +02:00
stratnum.sql Add stratnum GiST support function 2024-09-17 11:29:29 +02:00
text.sql Revert "Add sortsupport for gist_btree opclasses, for faster index builds." 2021-04-07 14:33:21 +03:00
time.sql Revert "Add sortsupport for gist_btree opclasses, for faster index builds." 2021-04-07 14:33:21 +03:00
timestamp.sql Revert "Add sortsupport for gist_btree opclasses, for faster index builds." 2021-04-07 14:33:21 +03:00
timestamptz.sql Revert "Add sortsupport for gist_btree opclasses, for faster index builds." 2021-04-07 14:33:21 +03:00
timetz.sql Revert "Add sortsupport for gist_btree opclasses, for faster index builds." 2021-04-07 14:33:21 +03:00
uuid.sql Revert "Add sortsupport for gist_btree opclasses, for faster index builds." 2021-04-07 14:33:21 +03:00
varbit.sql Revert "Add sortsupport for gist_btree opclasses, for faster index builds." 2021-04-07 14:33:21 +03:00
varchar.sql Revert "Add sortsupport for gist_btree opclasses, for faster index builds." 2021-04-07 14:33:21 +03:00
without_overlaps.sql Add temporal PRIMARY KEY and UNIQUE constraints 2024-09-17 11:29:30 +02:00