postgresql/src/backend/utils/adt
Tomas Vondra 7300a69950 Add support for multivariate MCV lists
Introduce a third extended statistic type, supported by the CREATE
STATISTICS command - MCV lists, a generalization of the statistic
already built and used for individual columns.

Compared to the already supported types (n-distinct coefficients and
functional dependencies), MCV lists are more complex, include column
values and allow estimation of much wider range of common clauses
(equality and inequality conditions, IS NULL, IS NOT NULL etc.).
Similarly to the other types, a new pseudo-type (pg_mcv_list) is used.

Author: Tomas Vondra
Reviewed-by: Dean Rasheed, David Rowley, Mark Dilger, Alvaro Herrera
Discussion: https://postgr.es/m/dfdac334-9cf2-2597-fb27-f0fb3753f435@2ndquadrant.com
2019-03-27 18:32:18 +01:00
..
.gitignore Revert "Add gitignore entries for jsonpath_gram.h" 2019-03-23 00:19:34 +01:00
acl.c Move hash_any prototype from access/hash.h to utils/hashutils.h 2019-03-11 13:17:50 -03:00
amutils.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
array_expanded.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
array_selfuncs.c Refactor planner's header files. 2019-01-29 15:48:51 -05:00
array_typanalyze.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
array_userfuncs.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
arrayfuncs.c Collations with nondeterministic comparison 2019-03-22 12:12:43 +01:00
arrayutils.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
ascii.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
bool.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
cash.c Correct constness of a few variables. 2018-10-15 21:01:14 -07:00
char.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
cryptohashes.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
date.c Move hash_any prototype from access/hash.h to utils/hashutils.h 2019-03-11 13:17:50 -03:00
datetime.c Create the infrastructure for planner support functions. 2019-02-09 18:08:48 -05:00
datum.c Fix optimization of foreign-key on update actions 2019-03-18 17:19:21 +01:00
dbsize.c Replace heapam.h includes with {table, relation}.h where applicable. 2019-01-21 10:51:37 -08:00
domains.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
encode.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
enum.c Replace uses of heap_open et al with the corresponding table_* function. 2019-01-21 10:51:37 -08:00
expandeddatum.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
expandedrecord.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
float.c Numeric error suppression in jsonpath 2019-03-16 12:21:19 +03:00
format_type.c Remove unused macro 2019-02-11 10:07:25 +01:00
formatting.c More unconstify use 2019-02-13 11:50:16 +01:00
genfile.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
geo_ops.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
geo_selfuncs.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
geo_spgist.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
inet_cidr_ntop.c Suppress -Wshift-negative-value warnings. 2018-06-17 16:15:11 -04:00
inet_net_pton.c Remove unnecessary parentheses in return statements 2017-09-05 14:52:55 -04:00
int.c Build out the planner support function infrastructure. 2019-02-09 18:32:23 -05:00
int8.c Build out the planner support function infrastructure. 2019-02-09 18:32:23 -05:00
json.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
jsonb.c Partial implementation of SQL/JSON path language 2019-03-16 12:16:48 +03:00
jsonb_gin.c Move hash_any prototype from access/hash.h to utils/hashutils.h 2019-03-11 13:17:50 -03:00
jsonb_op.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
jsonb_util.c Partial implementation of SQL/JSON path language 2019-03-16 12:16:48 +03:00
jsonfuncs.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
jsonpath.c Suppress -Wimplicit-fallthrough warnings in new jsonpath code. 2019-03-16 12:34:46 -04:00
jsonpath_exec.c Revert 4178d8b91c 2019-03-18 09:54:29 +03:00
jsonpath_gram.y Cosmetic changes for jsonpath_gram.y and jsonpath_scan.l 2019-03-25 15:42:51 +03:00
jsonpath_scan.l Get rid of backtracking in jsonpath_scan.l 2019-03-25 15:43:56 +03:00
levenshtein.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
like.c Collations with nondeterministic comparison 2019-03-22 12:12:43 +01:00
like_match.c Add some const decorations 2019-02-08 10:13:24 +01:00
like_support.c Collations with nondeterministic comparison 2019-03-22 12:12:43 +01:00
lockfuncs.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
mac.c Move hash_any prototype from access/hash.h to utils/hashutils.h 2019-03-11 13:17:50 -03:00
mac8.c Move hash_any prototype from access/hash.h to utils/hashutils.h 2019-03-11 13:17:50 -03:00
Makefile Get rid of backtracking in jsonpath_scan.l 2019-03-25 15:43:56 +03:00
misc.c Replace uses of heap_open et al with the corresponding table_* function. 2019-01-21 10:51:37 -08:00
name.c Collations with nondeterministic comparison 2019-03-22 12:12:43 +01:00
network.c Move hash_any prototype from access/hash.h to utils/hashutils.h 2019-03-11 13:17:50 -03:00
network_gist.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
network_selfuncs.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
network_spgist.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
numeric.c Numeric error suppression in jsonpath 2019-03-16 12:21:19 +03:00
numutils.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
oid.c Change function call information to be variable length. 2019-01-26 14:17:52 -08:00
oracle_compat.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
orderedsetaggs.c Collations with nondeterministic comparison 2019-03-22 12:12:43 +01:00
partitionfuncs.c Fix crash with pg_partition_root 2019-03-22 17:27:38 +09:00
pg_locale.c Collations with nondeterministic comparison 2019-03-22 12:12:43 +01:00
pg_lsn.c Move hash_any prototype from access/hash.h to utils/hashutils.h 2019-03-11 13:17:50 -03:00
pg_upgrade_support.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
pgstatfuncs.c Add progress reporting for CLUSTER and VACUUM FULL. 2019-03-25 10:59:04 -04:00
pseudotypes.c tableam: introduce table AM infrastructure. 2019-03-06 09:54:38 -08:00
quote.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
rangetypes.c Move hash_any prototype from access/hash.h to utils/hashutils.h 2019-03-11 13:17:50 -03:00
rangetypes_gist.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
rangetypes_selfuncs.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
rangetypes_spgist.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
rangetypes_typanalyze.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
regexp.c Partial implementation of SQL/JSON path language 2019-03-16 12:16:48 +03:00
regproc.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
ri_triggers.c Collations with nondeterministic comparison 2019-03-22 12:12:43 +01:00
rowtypes.c Fix optimization of foreign-key on update actions 2019-03-18 17:19:21 +01:00
ruleutils.c Add support for multivariate MCV lists 2019-03-27 18:32:18 +01:00
selfuncs.c Improve planner's selectivity estimates for inequalities on CTID. 2019-03-25 18:42:52 -04:00
tid.c tableam: Add table_get_latest_tid, to wrap heap_get_latest_tid. 2019-03-25 17:14:48 -07:00
timestamp.c Move hash_any prototype from access/hash.h to utils/hashutils.h 2019-03-11 13:17:50 -03:00
trigfuncs.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
tsginidx.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
tsgistidx.c Make use of compiler builtins and/or assembly for CLZ, CTZ, POPCNT. 2019-02-15 23:22:33 -05:00
tsquery.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
tsquery_cleanup.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
tsquery_gist.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
tsquery_op.c Fix misplaced const 2019-03-26 09:23:08 +01:00
tsquery_rewrite.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
tsquery_util.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
tsrank.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
tsvector.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
tsvector_op.c Remove unused macro 2019-03-11 09:29:50 +01:00
tsvector_parser.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
txid.c Fix off-by-one error in txid_status(). 2019-03-27 21:30:04 +13:00
uuid.c Move hash_any prototype from access/hash.h to utils/hashutils.h 2019-03-11 13:17:50 -03:00
varbit.c Create the infrastructure for planner support functions. 2019-02-09 18:08:48 -05:00
varchar.c Collations with nondeterministic comparison 2019-03-22 12:12:43 +01:00
varlena.c Collations with nondeterministic comparison 2019-03-22 12:12:43 +01:00
version.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
windowfuncs.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
xid.c Update copyright for 2019 2019-01-02 12:44:25 -05:00
xml.c Remove inadequate check for duplicate "xml" PI. 2019-03-23 17:40:19 -04:00