Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
statistics.h131 linesDownload Raw Back to statistics
1/*-------------------------------------------------------------------------2 *3 * statistics.h4 *	  Extended statistics and selectivity estimation functions.5 *6 * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group7 * Portions Copyright (c) 1994, Regents of the University of California8 *9 * src/include/statistics/statistics.h10 *11 *-------------------------------------------------------------------------12 */13#ifndef STATISTICS_H14#define STATISTICS_H15 16#include "commands/vacuum.h"17#include "nodes/pathnodes.h"18 19#define STATS_MAX_DIMENSIONS	8	/* max number of attributes */20 21/* Multivariate distinct coefficients */22#define STATS_NDISTINCT_MAGIC		0xA352BFA4	/* struct identifier */23#define STATS_NDISTINCT_TYPE_BASIC	1	/* struct version */24 25/* MVNDistinctItem represents a single combination of columns */26typedef struct MVNDistinctItem27{28	double		ndistinct;		/* ndistinct value for this combination */29	int			nattributes;	/* number of attributes */30	AttrNumber *attributes;		/* attribute numbers */31} MVNDistinctItem;32 33/* A MVNDistinct object, comprising all possible combinations of columns */34typedef struct MVNDistinct35{36	uint32		magic;			/* magic constant marker */37	uint32		type;			/* type of ndistinct (BASIC) */38	uint32		nitems;			/* number of items in the statistic */39	MVNDistinctItem items[FLEXIBLE_ARRAY_MEMBER];40} MVNDistinct;41 42/* Multivariate functional dependencies */43#define STATS_DEPS_MAGIC		0xB4549A2C	/* marks serialized bytea */44#define STATS_DEPS_TYPE_BASIC	1	/* basic dependencies type */45 46/*47 * Functional dependencies, tracking column-level relationships (values48 * in one column determine values in another one).49 */50typedef struct MVDependency51{52	double		degree;			/* degree of validity (0-1) */53	AttrNumber	nattributes;	/* number of attributes */54	AttrNumber	attributes[FLEXIBLE_ARRAY_MEMBER];	/* attribute numbers */55} MVDependency;56 57typedef struct MVDependencies58{59	uint32		magic;			/* magic constant marker */60	uint32		type;			/* type of MV Dependencies (BASIC) */61	uint32		ndeps;			/* number of dependencies */62	MVDependency *deps[FLEXIBLE_ARRAY_MEMBER];	/* dependencies */63} MVDependencies;64 65/* used to flag stats serialized to bytea */66#define STATS_MCV_MAGIC			0xE1A651C2	/* marks serialized bytea */67#define STATS_MCV_TYPE_BASIC	1	/* basic MCV list type */68 69/* max items in MCV list (should be equal to max default_statistics_target) */70#define STATS_MCVLIST_MAX_ITEMS        1000071 72/*73 * Multivariate MCV (most-common value) lists74 *75 * A straightforward extension of MCV items - i.e. a list (array) of76 * combinations of attribute values, together with a frequency and null flags.77 */78typedef struct MCVItem79{80	double		frequency;		/* frequency of this combination */81	double		base_frequency; /* frequency if independent */82	bool	   *isnull;			/* NULL flags */83	Datum	   *values;			/* item values */84} MCVItem;85 86/* multivariate MCV list - essentially an array of MCV items */87typedef struct MCVList88{89	uint32		magic;			/* magic constant marker */90	uint32		type;			/* type of MCV list (BASIC) */91	uint32		nitems;			/* number of MCV items in the array */92	AttrNumber	ndimensions;	/* number of dimensions */93	Oid			types[STATS_MAX_DIMENSIONS];	/* OIDs of data types */94	MCVItem		items[FLEXIBLE_ARRAY_MEMBER];	/* array of MCV items */95} MCVList;96 97extern MVNDistinct *statext_ndistinct_load(Oid mvoid, bool inh);98extern MVDependencies *statext_dependencies_load(Oid mvoid, bool inh);99extern MCVList *statext_mcv_load(Oid mvoid, bool inh);100 101extern void BuildRelationExtStatistics(Relation onerel, bool inh, double totalrows,102									   int numrows, HeapTuple *rows,103									   int natts, VacAttrStats **vacattrstats);104extern int	ComputeExtStatisticsRows(Relation onerel,105									 int natts, VacAttrStats **vacattrstats);106extern bool statext_is_kind_built(HeapTuple htup, char type);107extern Selectivity dependencies_clauselist_selectivity(PlannerInfo *root,108													   List *clauses,109													   int varRelid,110													   JoinType jointype,111													   SpecialJoinInfo *sjinfo,112													   RelOptInfo *rel,113													   Bitmapset **estimatedclauses);114extern Selectivity statext_clauselist_selectivity(PlannerInfo *root,115												  List *clauses,116												  int varRelid,117												  JoinType jointype,118												  SpecialJoinInfo *sjinfo,119												  RelOptInfo *rel,120												  Bitmapset **estimatedclauses,121												  bool is_or);122extern bool has_stats_of_kind(List *stats, char requiredkind);123extern StatisticExtInfo *choose_best_statistics(List *stats, char requiredkind,124												bool inh,125												Bitmapset **clause_attnums,126												List **clause_exprs,127												int nclauses);128extern HeapTuple statext_expressions_load(Oid stxoid, bool inh, int idx);129 130#endif							/* STATISTICS_H */131 
codekingpro/portable-devtools · Team Ai