pgsql: Add support for multivariate MCV lists
От | Tomas Vondra |
---|---|
Тема | pgsql: Add support for multivariate MCV lists |
Дата | |
Msg-id | E1h9DoH-0004Bn-4N@gemulon.postgresql.org обсуждение исходный текст |
Ответы |
Re: pgsql: Add support for multivariate MCV lists
(Andres Freund <andres@anarazel.de>)
Re: pgsql: Add support for multivariate MCV lists (David Fetter <david@fetter.org>) |
Список | pgsql-committers |
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 Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/7300a699502fe5432b05fbc75baca534b080bebb Modified Files -------------- doc/src/sgml/catalogs.sgml | 13 +- doc/src/sgml/func.sgml | 82 ++ doc/src/sgml/perform.sgml | 66 + doc/src/sgml/planstats.sgml | 116 +- doc/src/sgml/ref/create_statistics.sgml | 35 +- src/backend/commands/statscmds.c | 82 +- src/backend/nodes/bitmapset.c | 44 + src/backend/optimizer/path/clausesel.c | 109 +- src/backend/optimizer/util/plancat.c | 12 + src/backend/parser/parse_utilcmd.c | 2 + src/backend/statistics/Makefile | 2 +- src/backend/statistics/README | 4 + src/backend/statistics/README.mcv | 100 ++ src/backend/statistics/dependencies.c | 100 +- src/backend/statistics/extended_stats.c | 627 +++++++- src/backend/statistics/mcv.c | 1695 ++++++++++++++++++++++ src/backend/utils/adt/ruleutils.c | 24 +- src/bin/psql/describe.c | 9 +- src/bin/psql/tab-complete.c | 2 +- src/include/catalog/pg_cast.dat | 6 + src/include/catalog/pg_proc.dat | 24 + src/include/catalog/pg_statistic_ext.h | 2 + src/include/catalog/pg_type.dat | 7 + src/include/nodes/bitmapset.h | 1 + src/include/optimizer/optimizer.h | 6 + src/include/statistics/extended_stats_internal.h | 40 + src/include/statistics/statistics.h | 40 + src/test/regress/expected/create_table_like.out | 2 +- src/test/regress/expected/opr_sanity.out | 3 +- src/test/regress/expected/stats_ext.out | 287 +++- src/test/regress/expected/type_sanity.out | 3 +- src/test/regress/sql/stats_ext.sql | 186 +++ 32 files changed, 3597 insertions(+), 134 deletions(-)
В списке pgsql-committers по дате отправления:
Предыдущее
От: Tom LaneДата:
Сообщение: pgsql: Avoid passing query tlist around separately fromroot->processed