|
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 512 of file mvdistinct.c.
Referenced by ndistinct_for_combination().
|
static |
Definition at line 683 of file mvdistinct.c.
References generate_combinations_recurse(), palloc0_array, and pfree().
Referenced by generator_init().
|
static |
Definition at line 648 of file mvdistinct.c.
References fb(), generate_combinations_recurse(), i, and start.
Referenced by generate_combinations(), and generate_combinations_recurse().
|
static |
Definition at line 633 of file mvdistinct.c.
References pfree().
Referenced by statext_ndistinct_build().
|
static |
Definition at line 580 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 618 of file mvdistinct.c.
References fb().
Referenced by statext_ndistinct_build().
Definition at line 541 of file mvdistinct.c.
Referenced by generator_init().
|
static |
Definition at line 416 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 566 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(), MVNDistinct::items, items, j, MVNDistinct::magic, MVNDistinctItem::nattributes, MVNDistinctItem::ndistinct, ndistinct_for_combination(), MVNDistinct::nitems, nitems, num_combinations(), palloc(), palloc_array, STATS_NDISTINCT_MAGIC, STATS_NDISTINCT_TYPE_BASIC, and MVNDistinct::type.
Referenced by BuildRelationExtStatistics().
| MVNDistinct * statext_ndistinct_deserialize | ( | bytea * | data | ) |
Definition at line 247 of file mvdistinct.c.
References Assert, MVNDistinctItem::attributes, data, elog, ERROR, fb(), i, MVNDistinct::items, items, MVNDistinct::magic, MAXALIGN, 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 332 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(), 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, 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 352 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().