genam.h

来自「PostgreSQL 8.2中增加了很多企业用户所需要的功能和性能上的提高,其开」· C头文件 代码 · 共 145 行

H
145
字号
/*------------------------------------------------------------------------- * * genam.h *	  POSTGRES generalized index access method definitions. * * * Portions Copyright (c) 1996-2006, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * $PostgreSQL: pgsql/src/include/access/genam.h,v 1.65 2006/07/31 20:09:05 tgl Exp $ * *------------------------------------------------------------------------- */#ifndef GENAM_H#define GENAM_H#include "access/relscan.h"#include "access/sdir.h"#include "nodes/primnodes.h"#include "storage/lock.h"/* * Struct for statistics returned by ambuild */typedef struct IndexBuildResult{	double		heap_tuples;	/* # of tuples seen in parent table */	double		index_tuples;	/* # of tuples inserted into index */} IndexBuildResult;/* * Struct for input arguments passed to ambulkdelete and amvacuumcleanup * * Note that num_heap_tuples will not be valid during ambulkdelete, * only amvacuumcleanup. */typedef struct IndexVacuumInfo{	Relation	index;			/* the index being vacuumed */	bool		vacuum_full;	/* VACUUM FULL (we have exclusive lock) */	int			message_level;	/* ereport level for progress messages */	double		num_heap_tuples;	/* tuples remaining in heap */} IndexVacuumInfo;/* * Struct for statistics returned by ambulkdelete and amvacuumcleanup * * This struct is normally allocated by the first ambulkdelete call and then * passed along through subsequent ones until amvacuumcleanup; however, * amvacuumcleanup must be prepared to allocate it in the case where no * ambulkdelete calls were made (because no tuples needed deletion). * Note that an index AM could choose to return a larger struct * of which this is just the first field; this provides a way for ambulkdelete * to communicate additional private data to amvacuumcleanup. * * Note: pages_removed is the amount by which the index physically shrank, * if any (ie the change in its total size on disk).  pages_deleted and * pages_free refer to free space within the index file. */typedef struct IndexBulkDeleteResult{	BlockNumber num_pages;		/* pages remaining in index */	BlockNumber pages_removed;	/* # removed during vacuum operation */	double		num_index_tuples;		/* tuples remaining */	double		tuples_removed; /* # removed during vacuum operation */	BlockNumber pages_deleted;	/* # unused pages in index */	BlockNumber pages_free;		/* # pages available for reuse */} IndexBulkDeleteResult;/* Typedef for callback function to determine if a tuple is bulk-deletable */typedef bool (*IndexBulkDeleteCallback) (ItemPointer itemptr, void *state);/* Struct for heap-or-index scans of system tables */typedef struct SysScanDescData{	Relation	heap_rel;		/* catalog being scanned */	Relation	irel;			/* NULL if doing heap scan */	HeapScanDesc scan;			/* only valid in heap-scan case */	IndexScanDesc iscan;		/* only valid in index-scan case */} SysScanDescData;typedef SysScanDescData *SysScanDesc;/* * generalized index_ interface routines (in indexam.c) */extern Relation index_open(Oid relationId, LOCKMODE lockmode);extern void index_close(Relation relation, LOCKMODE lockmode);extern bool index_insert(Relation indexRelation,			 Datum *values, bool *isnull,			 ItemPointer heap_t_ctid,			 Relation heapRelation,			 bool check_uniqueness);extern IndexScanDesc index_beginscan(Relation heapRelation,				Relation indexRelation,				Snapshot snapshot,				int nkeys, ScanKey key);extern IndexScanDesc index_beginscan_multi(Relation indexRelation,					  Snapshot snapshot,					  int nkeys, ScanKey key);extern void index_rescan(IndexScanDesc scan, ScanKey key);extern void index_endscan(IndexScanDesc scan);extern void index_markpos(IndexScanDesc scan);extern void index_restrpos(IndexScanDesc scan);extern HeapTuple index_getnext(IndexScanDesc scan, ScanDirection direction);extern bool index_getnext_indexitem(IndexScanDesc scan,						ScanDirection direction);extern bool index_getmulti(IndexScanDesc scan,			   ItemPointer tids, int32 max_tids,			   int32 *returned_tids);extern IndexBulkDeleteResult *index_bulk_delete(IndexVacuumInfo *info,				  IndexBulkDeleteResult *stats,				  IndexBulkDeleteCallback callback,				  void *callback_state);extern IndexBulkDeleteResult *index_vacuum_cleanup(IndexVacuumInfo *info,					 IndexBulkDeleteResult *stats);extern RegProcedure index_getprocid(Relation irel, AttrNumber attnum,				uint16 procnum);extern FmgrInfo *index_getprocinfo(Relation irel, AttrNumber attnum,				  uint16 procnum);/* * index access method support routines (in genam.c) */extern IndexScanDesc RelationGetIndexScan(Relation indexRelation,					 int nkeys, ScanKey key);extern void IndexScanEnd(IndexScanDesc scan);/* * heap-or-index access to system catalogs (in genam.c) */extern SysScanDesc systable_beginscan(Relation heapRelation,				   Oid indexId,				   bool indexOK,				   Snapshot snapshot,				   int nkeys, ScanKey key);extern HeapTuple systable_getnext(SysScanDesc sysscan);extern void systable_endscan(SysScanDesc sysscan);#endif   /* GENAM_H */

⌨️ 快捷键说明

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