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 + -
显示快捷键?