亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? relation.h

?? PostgreSQL7.4.6 for Linux
?? H
?? 第 1 頁 / 共 2 頁
字號:
/*------------------------------------------------------------------------- * * relation.h *	  Definitions for planner's internal data structures. * * * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * $Id: relation.h,v 1.85 2003/08/08 21:42:48 momjian Exp $ * *------------------------------------------------------------------------- */#ifndef RELATION_H#define RELATION_H#include "access/sdir.h"#include "nodes/bitmapset.h"#include "nodes/parsenodes.h"/* * Relids *		Set of relation identifiers (indexes into the rangetable). */typedef Bitmapset *Relids;/* * When looking for a "cheapest path", this enum specifies whether we want * cheapest startup cost or cheapest total cost. */typedef enum CostSelector{	STARTUP_COST, TOTAL_COST} CostSelector;/* * The cost estimate produced by cost_qual_eval() includes both a one-time * (startup) cost, and a per-tuple cost. */typedef struct QualCost{	Cost		startup;		/* one-time cost */	Cost		per_tuple;		/* per-evaluation cost */} QualCost;/*---------- * RelOptInfo *		Per-relation information for planning/optimization * * For planning purposes, a "base rel" is either a plain relation (a table) * or the output of a sub-SELECT or function that appears in the range table. * In either case it is uniquely identified by an RT index.  A "joinrel" * is the joining of two or more base rels.  A joinrel is identified by * the set of RT indexes for its component baserels.  We create RelOptInfo * nodes for each baserel and joinrel, and store them in the Query's * base_rel_list and join_rel_list respectively. * * Note that there is only one joinrel for any given set of component * baserels, no matter what order we assemble them in; so an unordered * set is the right datatype to identify it with. * * We also have "other rels", which are like base rels in that they refer to * single RT indexes; but they are not part of the join tree, and are stored * in other_rel_list not base_rel_list. * * Currently the only kind of otherrels are those made for child relations * of an inheritance scan (SELECT FROM foo*).  The parent table's RTE and * corresponding baserel represent the whole result of the inheritance scan. * The planner creates separate RTEs and associated RelOptInfos for each child * table (including the parent table, in its capacity as a member of the * inheritance set).  These RelOptInfos are physically identical to baserels, * but are otherrels because they are not in the main join tree.  These added * RTEs and otherrels are used to plan the scans of the individual tables in * the inheritance set; then the parent baserel is given an Append plan * comprising the best plans for the individual child tables. * * At one time we also made otherrels to represent join RTEs, for use in * handling join alias Vars.  Currently this is not needed because all join * alias Vars are expanded to non-aliased form during preprocess_expression. * * Parts of this data structure are specific to various scan and join * mechanisms.	It didn't seem worth creating new node types for them. * *		relids - Set of base-relation identifiers; it is a base relation *				if there is just one, a join relation if more than one *		rows - estimated number of tuples in the relation after restriction *			   clauses have been applied (ie, output rows of a plan for it) *		width - avg. number of bytes per tuple in the relation after the *				appropriate projections have been done (ie, output width) *		reltargetlist - List of Var nodes for the attributes we need to *						output from this relation (in no particular order) *		pathlist - List of Path nodes, one for each potentially useful *				   method of generating the relation *		cheapest_startup_path - the pathlist member with lowest startup cost *								(regardless of its ordering) *		cheapest_total_path - the pathlist member with lowest total cost *							  (regardless of its ordering) *		cheapest_unique_path - for caching cheapest path to produce unique *							   (no duplicates) output from relation *		pruneable - flag to let the planner know whether it can prune the *					pathlist of this RelOptInfo or not. * * If the relation is a base relation it will have these fields set: * *		relid - RTE index (this is redundant with the relids field, but *				is provided for convenience of access) *		rtekind - distinguishes plain relation, subquery, or function RTE *		min_attr, max_attr - range of valid AttrNumbers for rel *		attr_needed - array of bitmapsets indicating the highest joinrel *				in which each attribute is needed; if bit 0 is set then *				the attribute is needed as part of final targetlist *		attr_widths - cache space for per-attribute width estimates; *					  zero means not computed yet *		indexlist - list of IndexOptInfo nodes for relation's indexes *					(always NIL if it's not a table) *		pages - number of disk pages in relation (zero if not a table) *		tuples - number of tuples in relation (not considering restrictions) *		subplan - plan for subquery (NULL if it's not a subquery) * *		Note: for a subquery, tuples and subplan are not set immediately *		upon creation of the RelOptInfo object; they are filled in when *		set_base_rel_pathlist processes the object. * *		For otherrels that are inheritance children, these fields are filled *		in just as for a baserel. * * The presence of the remaining fields depends on the restrictions * and joins that the relation participates in: * *		baserestrictinfo - List of RestrictInfo nodes, containing info about *					each qualification clause in which this relation *					participates (only used for base rels) *		baserestrictcost - Estimated cost of evaluating the baserestrictinfo *					clauses at a single tuple (only used for base rels) *		outerjoinset - For a base rel: if the rel appears within the nullable *					side of an outer join, the set of all relids *					participating in the highest such outer join; else NULL. *					Otherwise, unused. *		joininfo  - List of JoinInfo nodes, containing info about each join *					clause in which this relation participates *		index_outer_relids - only used for base rels; set of outer relids *					that participate in indexable joinclauses for this rel *		index_inner_paths - only used for base rels; list of InnerIndexscanInfo *					nodes showing best indexpaths for various subsets of *					index_outer_relids. * * Note: Keeping a restrictinfo list in the RelOptInfo is useful only for * base rels, because for a join rel the set of clauses that are treated as * restrict clauses varies depending on which sub-relations we choose to join. * (For example, in a 3-base-rel join, a clause relating rels 1 and 2 must be * treated as a restrictclause if we join {1} and {2 3} to make {1 2 3}; but * if we join {1 2} and {3} then that clause will be a restrictclause in {1 2} * and should not be processed again at the level of {1 2 3}.)	Therefore, * the restrictinfo list in the join case appears in individual JoinPaths * (field joinrestrictinfo), not in the parent relation.  But it's OK for * the RelOptInfo to store the joininfo lists, because those are the same * for a given rel no matter how we form it. * * We store baserestrictcost in the RelOptInfo (for base relations) because * we know we will need it at least once (to price the sequential scan) * and may need it multiple times to price index scans. * * outerjoinset is used to ensure correct placement of WHERE clauses that * apply to outer-joined relations; we must not apply such WHERE clauses * until after the outer join is performed. *---------- */typedef enum RelOptKind{	RELOPT_BASEREL,	RELOPT_JOINREL,	RELOPT_OTHER_CHILD_REL} RelOptKind;typedef struct RelOptInfo{	NodeTag		type;	RelOptKind	reloptkind;	/* all relations included in this RelOptInfo */	Relids		relids;			/* set of base relids (rangetable indexes) */	/* size estimates generated by planner */	double		rows;			/* estimated number of result tuples */	int			width;			/* estimated avg width of result tuples */	/* materialization information */	FastList	reltargetlist;	List	   *pathlist;		/* Path structures */	struct Path *cheapest_startup_path;	struct Path *cheapest_total_path;	struct Path *cheapest_unique_path;	bool		pruneable;	/* information about a base rel (not set for join rels!) */	Index		relid;	RTEKind		rtekind;		/* RELATION, SUBQUERY, or FUNCTION */	AttrNumber	min_attr;		/* smallest attrno of rel (often <0) */	AttrNumber	max_attr;		/* largest attrno of rel */	Relids	   *attr_needed;	/* array indexed [min_attr .. max_attr] */	int32	   *attr_widths;	/* array indexed [min_attr .. max_attr] */	List	   *indexlist;	long		pages;	double		tuples;	struct Plan *subplan;		/* if subquery */	/* used by various scans and joins: */	List	   *baserestrictinfo;		/* RestrictInfo structures (if										 * base rel) */	QualCost	baserestrictcost;		/* cost of evaluating the above */	Relids		outerjoinset;	/* set of base relids */	List	   *joininfo;		/* JoinInfo structures */	/* cached info about inner indexscan paths for relation: */	Relids		index_outer_relids;		/* other relids in indexable join										 * clauses */	List	   *index_inner_paths;		/* InnerIndexscanInfo nodes */	/*	 * Inner indexscans are not in the main pathlist because they are not	 * usable except in specific join contexts.  We use the	 * index_inner_paths list just to avoid recomputing the best inner	 * indexscan repeatedly for similar outer relations.  See comments for	 * InnerIndexscanInfo.	 */} RelOptInfo;/* * IndexOptInfo *		Per-index information for planning/optimization * *		Prior to Postgres 7.0, RelOptInfo was used to describe both relations *		and indexes, but that created confusion without actually doing anything *		useful.  So now we have a separate IndexOptInfo struct for indexes. * *		classlist[], indexkeys[], and ordering[] have ncolumns entries. *		Zeroes in the indexkeys[] array indicate index columns that are *		expressions; there is one element in indexprs for each such column. * *		Note: for historical reasons, the classlist and ordering arrays have *		an extra entry that is always zero.  Some code scans until it sees a *		zero entry, rather than looking at ncolumns. * *		The indexprs and indpred expressions have been run through *		eval_const_expressions() for ease of matching to WHERE clauses. */typedef struct IndexOptInfo{	NodeTag		type;	Oid			indexoid;		/* OID of the index relation */	/* statistics from pg_class */	long		pages;			/* number of disk pages in index */	double		tuples;			/* number of index tuples in index */	/* index descriptor information */	int			ncolumns;		/* number of columns in index */	Oid		   *classlist;		/* OIDs of operator classes for columns */	int		   *indexkeys;		/* column numbers of index's keys, or 0 */	Oid		   *ordering;		/* OIDs of sort operators for each column */	Oid			relam;			/* OID of the access method (in pg_am) */	RegProcedure amcostestimate;	/* OID of the access method's cost fcn */	List	   *indexprs;		/* expressions for non-simple index								 * columns */	List	   *indpred;		/* predicate if a partial index, else NIL */	bool		unique;			/* true if a unique index */	/* cached info about inner indexscan paths for index */	Relids		outer_relids;	/* other relids in usable join clauses */	List	   *inner_paths;	/* List of InnerIndexscanInfo nodes */} IndexOptInfo;/* * PathKeys * *	The sort ordering of a path is represented by a list of sublists of *	PathKeyItem nodes.	An empty list implies no known ordering.  Otherwise *	the first sublist represents the primary sort key, the second the *	first secondary sort key, etc.	Each sublist contains one or more *	PathKeyItem nodes, each of which can be taken as the attribute that *	appears at that sort position.	(See the top of optimizer/path/pathkeys.c *	for more information.) */typedef struct PathKeyItem{	NodeTag		type;	Node	   *key;			/* the item that is ordered */	Oid			sortop;			/* the ordering operator ('<' op) */	/*	 * key typically points to a Var node, ie a relation attribute, but it	 * can also point to an arbitrary expression representing the value	 * indexed by an index expression.	 */} PathKeyItem;/* * Type "Path" is used as-is for sequential-scan paths.  For other * path types it is the first component of a larger struct. * * Note: "pathtype" is the NodeTag of the Plan node we could build from this * Path.  It is partially redundant with the Path's NodeTag, but allows us * to use the same Path type for multiple Plan types where there is no need * to distinguish the Plan type during path processing. */typedef struct Path{	NodeTag		type;	RelOptInfo *parent;			/* the relation this path can build */	/* estimated execution costs for path (see costsize.c for more info) */	Cost		startup_cost;	/* cost expended before fetching any								 * tuples */	Cost		total_cost;		/* total cost (assuming all tuples								 * fetched) */	NodeTag		pathtype;		/* tag identifying scan/join method */	List	   *pathkeys;		/* sort ordering of path's output */	/* pathkeys is a List of Lists of PathKeyItem nodes; see above */} Path;/*---------- * IndexPath represents an index scan.	Although an indexscan can only read * a single relation, it can scan it more than once, potentially using a * different index during each scan.  The result is the union (OR) of all the * tuples matched during any scan.	(The executor is smart enough not to return * the same tuple more than once, even if it is matched in multiple scans.) * * 'indexinfo' is a list of IndexOptInfo nodes, one per scan to be performed. * * 'indexqual' is a list of index qualifications, also one per scan. * Each entry in 'indexqual' is a sublist of qualification expressions with * implicit AND semantics across the sublist items.  Only expressions that * are usable as indexquals (as determined by indxpath.c) may appear here. * NOTE that the semantics of the top-level list in 'indexqual' is OR * combination, while the sublists are implicitly AND combinations! * Also note that indexquals lists do not contain RestrictInfo nodes, * just bare clause expressions. * * 'indexjoinclauses' is NIL for an ordinary indexpath (one that does not * use any join clauses in the index conditions).  For an innerjoin indexpath, * it has the same structure as 'indexqual', but references the RestrictInfo * nodes from which the indexqual was built, rather than the bare clause * expressions.  (Note: there isn't necessarily a one-to-one correspondence * between RestrictInfos and expressions, because of expansion of special * indexable operators.)  We need this so that we can eliminate redundant

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
水野朝阳av一区二区三区| 一本到不卡精品视频在线观看| 日韩vs国产vs欧美| 国产精品自在在线| 色综合天天综合网天天看片| 91精品综合久久久久久| 欧美电视剧免费全集观看| 久久精品在线观看| 亚洲精品乱码久久久久久日本蜜臀| 日韩国产在线观看一区| 精品久久一二三区| 五月综合激情婷婷六月色窝| 99热这里都是精品| 精品国产自在久精品国产| 亚洲国产日韩综合久久精品| 国产精品18久久久久久vr| 在线观看不卡视频| 国产欧美精品区一区二区三区| 天天综合网天天综合色| 日本免费在线视频不卡一不卡二 | 亚洲网友自拍偷拍| 911国产精品| 国产乱码精品一品二品| 亚洲美女电影在线| 狠狠色丁香久久婷婷综合_中 | 久久久久久久久久久久电影| 另类综合日韩欧美亚洲| 欧美日韩国产一区二区三区地区| 亚洲视频网在线直播| 成人av在线播放网站| 久久嫩草精品久久久精品一| 色先锋aa成人| 韩国v欧美v日本v亚洲v| 一区二区三区久久| 精品视频999| 美女视频黄 久久| 日韩欧美激情一区| 91小视频免费观看| 亚洲电影在线免费观看| 国产亚洲欧美在线| 91精品国产综合久久精品图片| 国产成人av电影在线播放| 国产精品乱人伦| 9i在线看片成人免费| 美女视频黄频大全不卡视频在线播放| 综合久久久久综合| 久久影院视频免费| av中文字幕不卡| 精品伊人久久久久7777人| 久久青草欧美一区二区三区| 欧美日韩国产经典色站一区二区三区 | 综合在线观看色| 欧美精品一区二区高清在线观看| 欧美亚洲综合色| 亚洲.国产.中文慕字在线| 欧美一区日韩一区| 国产精品一区二区91| 日韩电影在线免费看| 亚洲国产成人精品视频| 中文字幕一区在线| 欧美高清精品3d| 国产精品一区二区黑丝| 久久99精品久久久久| 日本vs亚洲vs韩国一区三区二区| 国产日韩欧美激情| 久久毛片高清国产| 精品噜噜噜噜久久久久久久久试看| 欧美日韩国产中文| 在线免费视频一区二区| 色爱区综合激月婷婷| 狠狠色狠狠色综合系列| 精品一区二区免费| 激情成人午夜视频| 激情久久五月天| 国产精品一区在线观看你懂的| 老司机一区二区| 激情综合五月婷婷| 国产精品自在欧美一区| 国产尤物一区二区| 亚洲成人激情社区| 日韩电影免费一区| 麻豆精品新av中文字幕| 国模套图日韩精品一区二区| 韩国三级中文字幕hd久久精品| 久久se精品一区精品二区| 国产专区综合网| 粉嫩一区二区三区在线看| 成人av片在线观看| 91色在线porny| 欧洲生活片亚洲生活在线观看| 欧美日韩视频不卡| 欧美精品一区二区久久久| 国产日韩欧美激情| 夜夜嗨av一区二区三区四季av| 亚洲影视在线观看| 国产精品成人在线观看| 亚洲精品一区二区三区精华液| 久久久精品黄色| 亚洲私人黄色宅男| 丝袜诱惑亚洲看片| 国产一区二区三区四区在线观看| 国产成人综合视频| 欧美专区在线观看一区| 欧美一级片免费看| 国产精品青草久久| 亚洲动漫第一页| 国产激情偷乱视频一区二区三区 | 亚洲激情五月婷婷| 日韩电影一二三区| 成人涩涩免费视频| 国产成人aaa| 欧美性受xxxx黑人xyx性爽| 日韩精品一区二区三区swag| 国产精品人妖ts系列视频| 亚洲一本大道在线| 国产v日产∨综合v精品视频| 色综合 综合色| 久久这里只精品最新地址| 亚洲精品国产无天堂网2021| 精品一区二区三区久久| 在线免费av一区| 国产亚洲欧美日韩俺去了| 亚洲一区二区黄色| 国产成人精品免费在线| 欧美日韩另类一区| 国产精品久久久99| 国产在线视频一区二区三区| 色94色欧美sute亚洲线路一ni| 精品国产青草久久久久福利| 亚洲综合在线免费观看| 国产成人自拍在线| 欧美一区二区播放| 一区二区三区四区五区视频在线观看| 美女看a上一区| 欧美视频在线一区| 国产精品久久久久婷婷| 精久久久久久久久久久| 8x8x8国产精品| 亚洲一线二线三线久久久| 国产suv一区二区三区88区| 日韩欧美专区在线| 中文乱码免费一区二区| 蜜臂av日日欢夜夜爽一区| 欧美性大战久久久久久久蜜臀| 日本一区二区视频在线| 精品一区二区在线视频| 91精品综合久久久久久| 亚洲第一成人在线| 在线亚洲一区观看| 亚洲欧美色图小说| 99国产精品久久久久久久久久 | 国产精品国产三级国产aⅴ入口| 日本sm残虐另类| 7799精品视频| 五月天网站亚洲| 欧美日韩国产精品自在自线| 亚洲影院久久精品| 在线观看精品一区| 亚洲精品成a人| 91看片淫黄大片一级| 亚洲欧洲日韩一区二区三区| 国产成人午夜精品影院观看视频| 精品国产电影一区二区| 精品亚洲国内自在自线福利| 欧美大片免费久久精品三p| 日韩av一区二区在线影视| 欧美一级日韩一级| 久国产精品韩国三级视频| 欧美www视频| 国产精品乡下勾搭老头1| www欧美成人18+| 福利一区二区在线| 中文字幕日韩精品一区| 972aa.com艺术欧美| 亚洲精品亚洲人成人网在线播放| 色综合久久天天| 性做久久久久久久免费看| 91精品国产色综合久久不卡蜜臀| 青青草原综合久久大伊人精品| 日韩美女在线视频| 国产91高潮流白浆在线麻豆| 国产精品欧美一级免费| 日本乱人伦一区| 午夜精彩视频在线观看不卡| 欧美一区二区精品在线| 国产一区二区看久久| 国产欧美日韩久久| 欧美性一级生活| 久久精品国产一区二区| 国产日韩欧美不卡在线| 色综合天天综合色综合av| 午夜激情一区二区| 国产日韩欧美综合一区| 欧美主播一区二区三区美女| 三级影片在线观看欧美日韩一区二区 | 91色婷婷久久久久合中文| 亚洲国产成人av好男人在线观看| 欧美一区二区三区四区久久| 国产超碰在线一区| 婷婷综合五月天|