|
PostgreSQL Source Code git master
|
#include "postgres.h"#include <math.h>#include "catalog/pg_statistic_ext.h"#include "catalog/pg_statistic_ext_data.h"#include "statistics/extended_stats_internal.h"#include "utils/syscache.h"#include "utils/typcache.h"#include "varatt.h"
Go to the source code of this file.
Data Structures | |
| struct | CombinationGenerator |
Macros | |
| #define | SizeOfHeader (3 * sizeof(uint32)) |
| #define | SizeOfItem(natts) (sizeof(double) + sizeof(int) + (natts) * sizeof(AttrNumber)) |
| #define | MinSizeOfItem SizeOfItem(2) |
| #define | MinSizeOfItems(nitems) (SizeOfHeader + (nitems) * MinSizeOfItem) |
Typedefs | |
| typedef struct CombinationGenerator | CombinationGenerator |
| #define MinSizeOfItem SizeOfItem(2) |
Definition at line 49 of file mvdistinct.c.
| #define MinSizeOfItems | ( | nitems | ) | (SizeOfHeader + (nitems) * MinSizeOfItem) |
Definition at line 52 of file mvdistinct.c.
Definition at line 42 of file mvdistinct.c.
Definition at line 45 of file mvdistinct.c.
Definition at line 510 of file mvdistinct.c.
Referenced by ndistinct_for_combination().
|
static |
Definition at line 681 of file mvdistinct.c.
References generate_combinations_recurse(), palloc0_array, and pfree().
Referenced by generator_init().
|
static |
Definition at line 646 of file mvdistinct.c.
References fb(), generate_combinations_recurse(), i, memcpy(), and start.
Referenced by generate_combinations(), and generate_combinations_recurse().
|
static |
Definition at line 631 of file mvdistinct.c.
References pfree().
Referenced by statext_ndistinct_build().
|
static |
Definition at line 578 of file mvdistinct.c.
References Assert, generate_combinations(), n_choose_k(), palloc_array, and palloc_object.
Referenced by statext_ndistinct_build().
|
static |
Definition at line 616 of file mvdistinct.c.
References fb().
Referenced by statext_ndistinct_build().
Definition at line 539 of file mvdistinct.c.
Referenced by generator_init().
|
static |
Definition at line 414 of file mvdistinct.c.
References VacAttrStats::attrtypid, collid, data, elog, ERROR, estimate_ndistinct(), f1, fb(), i, InvalidOid, items, j, lookup_type_cache(), multi_sort_add_dimension(), multi_sort_compare(), multi_sort_init(), palloc0_array, palloc_array, qsort_interruptible(), type, TYPECACHE_LT_OPR, and values.
Referenced by statext_ndistinct_build().
Definition at line 564 of file mvdistinct.c.
Referenced by statext_ndistinct_build().
| MVNDistinct * statext_ndistinct_build | ( | double | totalrows, |
| StatsBuildData * | data | ||
| ) |
Definition at line 85 of file mvdistinct.c.
References Assert, AttributeNumberIsValid, MVNDistinctItem::attributes, data, fb(), generator_free(), generator_init(), generator_next(), items, j, MVNDistinctItem::nattributes, MVNDistinctItem::ndistinct, ndistinct_for_combination(), nitems, num_combinations(), palloc(), palloc_array, result, STATS_NDISTINCT_MAGIC, and STATS_NDISTINCT_TYPE_BASIC.
Referenced by BuildRelationExtStatistics().
| MVNDistinct * statext_ndistinct_deserialize | ( | bytea * | data | ) |
Definition at line 246 of file mvdistinct.c.
References Assert, MVNDistinctItem::attributes, data, elog, ERROR, fb(), i, MVNDistinct::items, items, MVNDistinct::magic, MAXALIGN, memcpy(), MinSizeOfItems, MVNDistinctItem::nattributes, MVNDistinctItem::ndistinct, MVNDistinct::nitems, palloc(), palloc0(), SizeOfHeader, STATS_MAX_DIMENSIONS, STATS_NDISTINCT_MAGIC, STATS_NDISTINCT_TYPE_BASIC, MVNDistinct::type, VARDATA_ANY(), VARSIZE_ANY(), and VARSIZE_ANY_EXHDR().
Referenced by extended_statistics_update(), pg_ndistinct_out(), and statext_ndistinct_load().
| void statext_ndistinct_free | ( | MVNDistinct * | ndistinct | ) |
Definition at line 330 of file mvdistinct.c.
References MVNDistinctItem::attributes, i, MVNDistinct::items, MVNDistinct::nitems, and pfree().
Referenced by extended_statistics_update().
| MVNDistinct * statext_ndistinct_load | ( | Oid | mvoid, |
| bool | inh | ||
| ) |
Definition at line 145 of file mvdistinct.c.
References BoolGetDatum(), DatumGetByteaPP, elog, ERROR, fb(), HeapTupleIsValid, ObjectIdGetDatum(), ReleaseSysCache(), result, SearchSysCache2(), statext_ndistinct_deserialize(), and SysCacheGetAttr().
Referenced by estimate_multivariate_ndistinct().
| bytea * statext_ndistinct_serialize | ( | MVNDistinct * | ndistinct | ) |
Definition at line 176 of file mvdistinct.c.
References Assert, MVNDistinctItem::attributes, fb(), i, MVNDistinct::items, len, MVNDistinct::magic, memcpy(), MVNDistinctItem::nattributes, MVNDistinctItem::ndistinct, MVNDistinct::nitems, output, palloc(), SET_VARSIZE(), SizeOfHeader, SizeOfItem, STATS_NDISTINCT_MAGIC, STATS_NDISTINCT_TYPE_BASIC, MVNDistinct::type, VARDATA(), and VARHDRSZ.
Referenced by build_mvndistinct(), and statext_store().
| bool statext_ndistinct_validate | ( | const MVNDistinct * | ndistinct, |
| const int2vector * | stxkeys, | ||
| int | numexprs, | ||
| int | elevel | ||
| ) |
Definition at line 350 of file mvdistinct.c.
References attnum, MVNDistinctItem::attributes, ereport, errcode(), errmsg, fb(), i, MVNDistinct::items, j, MVNDistinctItem::nattributes, and MVNDistinct::nitems.
Referenced by extended_statistics_update().