PostgreSQL Source Code
git master
|
#include "postgres.h"
#include <math.h>
#include "access/htup_details.h"
#include "catalog/pg_collation.h"
#include "catalog/pg_statistic_ext.h"
#include "catalog/pg_statistic_ext_data.h"
#include "fmgr.h"
#include "funcapi.h"
#include "nodes/nodeFuncs.h"
#include "optimizer/clauses.h"
#include "statistics/extended_stats_internal.h"
#include "statistics/statistics.h"
#include "utils/array.h"
#include "utils/builtins.h"
#include "utils/bytea.h"
#include "utils/fmgroids.h"
#include "utils/fmgrprotos.h"
#include "utils/lsyscache.h"
#include "utils/syscache.h"
#include "utils/typcache.h"
Go to the source code of this file.
Macros | |
#define | ITEM_SIZE(ndims) ((ndims) * (sizeof(uint16) + sizeof(bool)) + 2 * sizeof(double)) |
#define | MinSizeOfMCVList (VARHDRSZ + sizeof(uint32) * 3 + sizeof(AttrNumber)) |
#define | SizeOfMCVList(ndims, nitems) |
#define | RESULT_MERGE(value, is_or, match) ((is_or) ? ((value) || (match)) : ((value) && (match))) |
#define | RESULT_IS_FINAL(value, is_or) ((is_or) ? (value) : (!(value))) |
Definition at line 56 of file mcv.c.
Referenced by statext_mcv_serialize().
#define MinSizeOfMCVList (VARHDRSZ + sizeof(uint32) * 3 + sizeof(AttrNumber)) |
Definition at line 62 of file mcv.c.
Referenced by statext_mcv_deserialize().
Definition at line 103 of file mcv.c.
Referenced by mcv_get_match_bitmap().
#define RESULT_MERGE | ( | value, | |
is_or, | |||
match | |||
) | ((is_or) ? ((value) || (match)) : ((value) && (match))) |
Definition at line 91 of file mcv.c.
Referenced by mcv_get_match_bitmap().
#define SizeOfMCVList | ( | ndims, | |
nitems | |||
) |
Definition at line 71 of file mcv.c.
Referenced by statext_mcv_deserialize().
|
static |
Definition at line 489 of file mcv.c.
References Assert, SortItem::count, i, SortItem::isnull, MAXALIGN, MultiSortSupportData::ndims, palloc(), qsort_arg(), sort_item_compare(), MultiSortSupportData::ssup, and SortItem::values.
Referenced by statext_mcv_build().
|
static |
Definition at line 423 of file mcv.c.
References Assert, compare_sort_item_count(), SortItem::count, count_distinct_groups(), i, multi_sort_compare(), palloc(), and pg_qsort().
Referenced by statext_mcv_build().
|
static |
Definition at line 349 of file mcv.c.
References VacAttrStats::attrcollid, VacAttrStats::attrtypid, elog, ERROR, i, InvalidOid, lookup_type_cache(), TypeCacheEntry::lt_opr, multi_sort_add_dimension(), multi_sort_init(), generate_unaccent_rules::type, and TYPECACHE_LT_OPR.
Referenced by statext_mcv_build().
|
static |
Definition at line 403 of file mcv.c.
References SortItem::count.
Referenced by build_distinct_groups().
|
static |
Definition at line 380 of file mcv.c.
References Assert, i, and multi_sort_compare().
Referenced by build_distinct_groups().
|
static |
Definition at line 151 of file mcv.c.
Referenced by statext_mcv_build().
Selectivity mcv_clauselist_selectivity | ( | PlannerInfo * | root, |
StatisticExtInfo * | stat, | ||
List * | clauses, | ||
int | varRelid, | ||
JoinType | jointype, | ||
SpecialJoinInfo * | sjinfo, | ||
RelOptInfo * | rel, | ||
Selectivity * | basesel, | ||
Selectivity * | totalsel | ||
) |
Definition at line 1794 of file mcv.c.
References MCVItem::base_frequency, MCVItem::frequency, i, MCVList::items, StatisticExtInfo::keys, mcv_get_match_bitmap(), MCVList::nitems, statext_mcv_load(), and StatisticExtInfo::statOid.
Referenced by statext_mcv_clauselist_selectivity().
|
static |
Definition at line 1543 of file mcv.c.
References NullTest::arg, BoolExpr::args, Assert, bms_member_index(), Const::constisnull, Const::constvalue, DatumGetBool, elog, ERROR, examine_opclause_expression(), fmgr_info(), FunctionCall2Coll(), get_opcode(), i, idx(), is_andclause(), IS_NOT_NULL, is_notclause(), IS_NULL, is_opclause(), is_orclause(), IsA, MCVItem::isnull, MCVList::items, lfirst, list_length(), NIL, MCVList::nitems, NullTest::nulltesttype, OpExpr::opno, palloc(), pfree(), RESULT_IS_FINAL, RESULT_MERGE, STATS_MCVLIST_MAX_ITEMS, Node::type, MCVItem::values, Var::varattno, Var::varcollid, and Var::vartype.
Referenced by mcv_clauselist_selectivity().
Datum pg_mcv_list_in | ( | PG_FUNCTION_ARGS | ) |
Datum pg_mcv_list_out | ( | PG_FUNCTION_ARGS | ) |
Datum pg_mcv_list_recv | ( | PG_FUNCTION_ARGS | ) |
Datum pg_mcv_list_send | ( | PG_FUNCTION_ARGS | ) |
Datum pg_stats_ext_mcvlist_items | ( | PG_FUNCTION_ARGS | ) |
Definition at line 1334 of file mcv.c.
References accumArrayResult(), Assert, FuncCallContext::attinmeta, MCVItem::base_frequency, BlessTupleDesc(), BoolGetDatum, FuncCallContext::call_cntr, cstring_to_text(), CurrentMemoryContext, DatumGetPointer, ereport, errcode(), errmsg(), ERROR, Float8GetDatum(), fmgr_info(), MCVItem::frequency, FunctionCall1, get_call_result_type(), getTypeOutputInfo(), heap_form_tuple(), HeapTupleGetDatum, i, Int32GetDatum, MCVItem::isnull, MCVList::items, makeArrayResult(), FuncCallContext::max_calls, MemoryContextSwitchTo(), FuncCallContext::multi_call_memory_ctx, MCVList::ndimensions, MCVList::nitems, PG_GETARG_BYTEA_P, PointerGetDatum, SRF_FIRSTCALL_INIT, SRF_IS_FIRSTCALL, SRF_PERCALL_SETUP, SRF_RETURN_DONE, SRF_RETURN_NEXT, statext_mcv_deserialize(), AttInMetadata::tupdesc, TupleDescGetAttInMetadata(), TYPEFUNC_COMPOSITE, MCVList::types, FuncCallContext::user_fctx, val, MCVItem::values, and values.
|
static |
Definition at line 464 of file mcv.c.
References ApplySortComparator(), SortItem::isnull, and SortItem::values.
Referenced by build_column_frequencies().
MCVList* statext_mcv_build | ( | int | numrows, |
HeapTuple * | rows, | ||
Bitmapset * | attrs, | ||
VacAttrStats ** | stats, | ||
double | totalrows, | ||
int | stattarget | ||
) |
Definition at line 183 of file mcv.c.
References Assert, VacAttrStats::attrtypid, MCVItem::base_frequency, bsearch_arg(), build_attnums_array(), build_column_frequencies(), build_distinct_groups(), build_mss(), build_sorted_items(), SortItem::count, MCVItem::frequency, get_mincount_for_mcv_list(), i, SortItem::isnull, MCVItem::isnull, MCVList::items, sort-test::key, MCVList::magic, multi_sort_compare(), MCVList::ndimensions, MultiSortSupportData::ndims, MCVList::nitems, offsetof, palloc(), palloc0(), pfree(), MultiSortSupportData::ssup, STATS_MCV_MAGIC, STATS_MCV_TYPE_BASIC, MCVList::type, MCVList::types, SortItem::values, and MCVItem::values.
Referenced by BuildRelationExtStatistics().
Definition at line 992 of file mcv.c.
References Assert, MCVItem::base_frequency, elog, ERROR, fetch_att, MCVItem::frequency, i, MCVItem::isnull, MCVList::items, MCVList::magic, MAXALIGN, MinSizeOfMCVList, DimensionInfo::nbytes, DimensionInfo::nbytes_aligned, MCVList::ndimensions, MCVList::nitems, DimensionInfo::nvalues, offsetof, palloc(), palloc0(), pfree(), PG_USED_FOR_ASSERTS_ONLY, PointerGetDatum, repalloc(), SET_VARSIZE, SizeOfMCVList, STATS_MAX_DIMENSIONS, STATS_MCV_MAGIC, STATS_MCV_TYPE_BASIC, STATS_MCVLIST_MAX_ITEMS, MCVList::type, MCVList::types, DimensionInfo::typlen, MCVItem::values, VARDATA, VARDATA_ANY, VARHDRSZ, and VARSIZE_ANY.
Referenced by pg_stats_ext_mcvlist_items(), and statext_mcv_load().
Definition at line 557 of file mcv.c.
References DatumGetByteaP, elog, ERROR, HeapTupleIsValid, ObjectIdGetDatum, ReleaseSysCache(), SearchSysCache1(), statext_mcv_deserialize(), STATEXTDATASTXOID, and SysCacheGetAttr().
Referenced by mcv_clauselist_selectivity().
bytea* statext_mcv_serialize | ( | MCVList * | mcvlist, |
VacAttrStats ** | stats | ||
) |
Definition at line 618 of file mcv.c.
References Assert, VacAttrStats::attrcollid, VacAttrStats::attrtype, MCVItem::base_frequency, bsearch_arg(), compare_datums_simple(), compare_scalars_simple(), CurrentMemoryContext, DatumGetCString, DatumGetPointer, MCVItem::frequency, i, MCVItem::isnull, ITEM_SIZE, MCVList::items, lookup_type_cache(), TypeCacheEntry::lt_opr, MCVList::magic, MAXALIGN, DimensionInfo::nbytes, DimensionInfo::nbytes_aligned, MCVList::ndimensions, MCVList::nitems, DimensionInfo::nvalues, palloc0(), pfree(), PG_DETOAST_DATUM, PG_UINT16_MAX, PG_USED_FOR_ASSERTS_ONLY, PointerGetDatum, PrepareSortSupportFromOrderingOp(), qsort_arg(), SET_VARSIZE, SortSupportData::ssup_collation, SortSupportData::ssup_cxt, SortSupportData::ssup_nulls_first, store_att_byval, DimensionInfo::typbyval, MCVList::type, TYPECACHE_LT_OPR, MCVList::types, DimensionInfo::typlen, value, MCVItem::values, values, VARDATA, VARDATA_ANY, VARHDRSZ, and VARSIZE_ANY_EXHDR.
Referenced by statext_store().