1. 索引访问方法结构体 (IndexAmRoutine):
IndexAmRoutine 结构体是索引访问方法的主要定义,包含了索引访问方法的一系列函数指针。这些函数指针定义了对索引进行操作的方法,如开始扫描、重新扫描、插入、删除等。
typedef struct IndexAmRoutine
{
/* 索引扫描函数指针 */
IndexScanDesc (*ambeginscan) (Relation indexRelation,
int nkeys, int norderbys);
/* 索引扫描结束函数指针 */
void (*amrescan) (IndexScanDesc scan, ScanKey scankey,
int nscankeys, ScanKey orderbys, int norderbys);
/* 索引插入函数指针 */
IndexTuple (*aminsert) (Relation indexRelation,
Datum *values, bool *isnull,
ItemPointer ht_ctid,
Relation heapRelation,
IndexUniqueCheck checkUnique);
/* 更多函数指针... */
} IndexAmRoutine;
2. 索引扫描描述符结构体 (IndexScanDesc):
IndexScanDesc 结构体用于描述索引扫描的状态,包含了扫描相关的信息,如扫描键、当前扫描位置等。
typedef struct IndexScanDescData
{
Relation indexRelation; /* 索引关系 */
/* 更多扫描相关的字段... */
} IndexScanDescData;
3. 索引条目结构体 (IndexTuple):
IndexTuple 结构体表示索引中的一个条目,包含了索引键和对应的元组位置信息。
typedef struct IndexTupleData
{
/* 索引键和元组位置信息... */
} IndexTupleData;
4. 索引操作符类结构体 (OidFunctionCallInfo):
OidFunctionCallInfo 结构体用于表示索引操作符类,包含了用于执行索引操作符的函数指针等信息。
typedef struct OidFunctionCallInfoData
{
/* 函数指针等信息... */
} OidFunctionCallInfoData;
这些结构体和相关的函数定义在 PostgreSQL 源代码中的头文件中,例如 access/amapi.h、access/genam.h 等。
转载请注明出处:http://www.zyzy.cn/article/detail/8933/PostgreSQL