postgresql/src/bin
Alexander Korotkov 6df7a9698b Multirange datatypes
Multiranges are basically sorted arrays of non-overlapping ranges with
set-theoretic operations defined over them.

Since v14, each range type automatically gets a corresponding multirange
datatype.  There are both manual and automatic mechanisms for naming multirange
types.  Once can specify multirange type name using multirange_type_name
attribute in CREATE TYPE.  Otherwise, a multirange type name is generated
automatically.  If the range type name contains "range" then we change that to
"multirange".  Otherwise, we add "_multirange" to the end.

Implementation of multiranges comes with a space-efficient internal
representation format, which evades extra paddings and duplicated storage of
oids.  Altogether this format allows fetching a particular range by its index
in O(n).

Statistic gathering and selectivity estimation are implemented for multiranges.
For this purpose, stored multirange is approximated as union range without gaps.
This field will likely need improvements in the future.

Catversion is bumped.

Discussion: https://postgr.es/m/CALNJ-vSUpQ_Y%3DjXvTxt1VYFztaBSsWVXeF1y6gTYQ4bOiWDLgQ%40mail.gmail.com
Discussion: https://postgr.es/m/a0b8026459d1e6167933be2104a6174e7d40d0ab.camel%40j-davis.com#fe7218c83b08068bfffb0c5293eceda0
Author: Paul Jungwirth, revised by me
Reviewed-by: David Fetter, Corey Huinker, Jeff Davis, Pavel Stehule
Reviewed-by: Alvaro Herrera, Tom Lane, Isaac Morland, David G. Johnston
Reviewed-by: Zhihong Yu, Alexander Korotkov
2020-12-20 07:20:33 +03:00
..
initdb initdb: complete getopt_long alphabetization 2020-12-12 12:59:09 -05:00
pg_archivecleanup Improve common/logging.c's support for multiple verbosity levels. 2020-09-17 12:52:18 -04:00
pg_basebackup Fix redundant error messages in client tools 2020-11-07 23:03:54 +01:00
pg_checksums pg_checksums: data_checksum_version is unsigned so use %u not %d 2020-12-01 20:27:06 -05:00
pg_config Translation updates 2020-05-18 12:49:30 +02:00
pg_controldata Rename VariableCacheData.nextFullXid to nextXid. 2020-08-11 12:07:14 -07:00
pg_ctl Retry initial slurp_file("current_logfiles"), in test 004_logrotate.pl. 2020-11-28 21:52:27 -08:00
pg_dump Multirange datatypes 2020-12-20 07:20:33 +03:00
pg_resetwal Rename VariableCacheData.nextFullXid to nextXid. 2020-08-11 12:07:14 -07:00
pg_rewind Fix more race conditions in the newly-added pg_rewind test. 2020-12-07 14:50:20 +02:00
pg_test_fsync Clean up after newly-added tests for pg_test_fsync and pg_test_timing. 2020-10-07 13:27:33 -04:00
pg_test_timing Clean up after newly-added tests for pg_test_fsync and pg_test_timing. 2020-10-07 13:27:33 -04:00
pg_upgrade Remove vacuumdb --analyze-in-stages from pg_upgrade tests 2020-11-11 16:47:13 +01:00
pg_verifybackup Fix fd leak in pg_verifybackup 2020-12-07 09:30:36 +09:00
pg_waldump Correct several behavior descriptions in comments. 2020-08-15 20:21:52 -07:00
pgbench Fix some grammar and typos in comments and docs 2020-11-02 15:14:41 +09:00
pgevent Remove libpq.rc, use win32ver.rc for libpq 2020-01-15 15:06:12 +01:00
psql Refactor CLUSTER and REINDEX grammar to use DefElem for option lists 2020-12-03 10:13:21 +09:00
scripts Fix connection string handling in src/bin/scripts/ programs. 2020-10-19 19:03:46 -04:00
Makefile Rename pg_validatebackup to pg_verifybackup. 2020-04-12 11:26:05 -04:00