⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vacuum.h

📁 PostgreSQL 8.1.4的源码 适用于Linux下的开源数据库系统
💻 H
字号:
/*------------------------------------------------------------------------- * * vacuum.h *	  header file for postgres vacuum cleaner and statistics analyzer * * * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * $PostgreSQL: pgsql/src/include/commands/vacuum.h,v 1.62 2005/10/15 02:49:44 momjian Exp $ * *------------------------------------------------------------------------- */#ifndef VACUUM_H#define VACUUM_H#include "access/htup.h"#include "catalog/pg_attribute.h"#include "catalog/pg_statistic.h"#include "catalog/pg_type.h"#include "nodes/parsenodes.h"#include "utils/rel.h"/*---------- * ANALYZE builds one of these structs for each attribute (column) that is * to be analyzed.	The struct and subsidiary data are in anl_context, * so they live until the end of the ANALYZE operation. * * The type-specific typanalyze function is passed a pointer to this struct * and must return TRUE to continue analysis, FALSE to skip analysis of this * column.	In the TRUE case it must set the compute_stats and minrows fields, * and can optionally set extra_data to pass additional info to compute_stats. * minrows is its request for the minimum number of sample rows to be gathered * (but note this request might not be honored, eg if there are fewer rows * than that in the table). * * The compute_stats routine will be called after sample rows have been * gathered.  Aside from this struct, it is passed: *		fetchfunc: a function for accessing the column values from the *				   sample rows *		samplerows: the number of sample tuples *		totalrows: estimated total number of rows in relation * The fetchfunc may be called with rownum running from 0 to samplerows-1. * It returns a Datum and an isNull flag. * * compute_stats should set stats_valid TRUE if it is able to compute * any useful statistics.  If it does, the remainder of the struct holds * the information to be stored in a pg_statistic row for the column.  Be * careful to allocate any pointed-to data in anl_context, which will NOT * be CurrentMemoryContext when compute_stats is called. *---------- */typedef struct VacAttrStats *VacAttrStatsP;typedef Datum (*AnalyzeAttrFetchFunc) (VacAttrStatsP stats, int rownum,												   bool *isNull);typedef struct VacAttrStats{	/*	 * These fields are set up by the main ANALYZE code before invoking the	 * type-specific typanalyze function.	 */	Form_pg_attribute attr;		/* copy of pg_attribute row for column */	Form_pg_type attrtype;		/* copy of pg_type row for column */	MemoryContext anl_context;	/* where to save long-lived data */	/*	 * These fields must be filled in by the typanalyze routine, unless it	 * returns FALSE.	 */	void		(*compute_stats) (VacAttrStatsP stats,											  AnalyzeAttrFetchFunc fetchfunc,											  int samplerows,											  double totalrows);	int			minrows;		/* Minimum # of rows wanted for stats */	void	   *extra_data;		/* for extra type-specific data */	/*	 * These fields are to be filled in by the compute_stats routine. (They	 * are initialized to zero when the struct is created.)	 */	bool		stats_valid;	float4		stanullfrac;	/* fraction of entries that are NULL */	int4		stawidth;		/* average width of column values */	float4		stadistinct;	/* # distinct values */	int2		stakind[STATISTIC_NUM_SLOTS];	Oid			staop[STATISTIC_NUM_SLOTS];	int			numnumbers[STATISTIC_NUM_SLOTS];	float4	   *stanumbers[STATISTIC_NUM_SLOTS];	int			numvalues[STATISTIC_NUM_SLOTS];	Datum	   *stavalues[STATISTIC_NUM_SLOTS];	/*	 * These fields are private to the main ANALYZE code and should not be	 * looked at by type-specific functions.	 */	int			tupattnum;		/* attribute number within tuples */	HeapTuple  *rows;			/* access info for std fetch function */	TupleDesc	tupDesc;	Datum	   *exprvals;		/* access info for index fetch function */	bool	   *exprnulls;	int			rowstride;} VacAttrStats;/* Default statistics target (GUC parameter) */extern DLLIMPORT int default_statistics_target; /* DLLIMPORT for PostGIS *//* in commands/vacuum.c */extern void vacuum(VacuumStmt *vacstmt, List *relids);extern void vac_open_indexes(Relation relation, LOCKMODE lockmode,				 int *nindexes, Relation **Irel);extern void vac_close_indexes(int nindexes, Relation *Irel, LOCKMODE lockmode);extern void vac_update_relstats(Oid relid,					BlockNumber num_pages,					double num_tuples,					bool hasindex);extern void vacuum_set_xid_limits(VacuumStmt *vacstmt, bool sharedRel,					  TransactionId *oldestXmin,					  TransactionId *freezeLimit);extern bool vac_is_partial_index(Relation indrel);extern void vacuum_delay_point(void);/* in commands/vacuumlazy.c */extern void lazy_vacuum_rel(Relation onerel, VacuumStmt *vacstmt);/* in commands/analyze.c */extern void analyze_rel(Oid relid, VacuumStmt *vacstmt);#endif   /* VACUUM_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -