/*------------------------------------------------------------------------- * * indexing.h * This file provides some definitions to support indexing * on system catalogs * * * Portions Copyright (c) 1996-2021, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/indexing.h * *------------------------------------------------------------------------- */ #ifndef INDEXING_H #define INDEXING_H #include "access/htup.h" #include "nodes/execnodes.h" #include "utils/relcache.h" /* * The state object used by CatalogOpenIndexes and friends is actually the * same as the executor's ResultRelInfo, but we give it another type name * to decouple callers from that fact. */ typedef struct ResultRelInfo *CatalogIndexState; /* * Cap the maximum amount of bytes allocated for multi-inserts with system * catalogs, limiting the number of slots used. */ #define MAX_CATALOG_MULTI_INSERT_BYTES 65535 /* * indexing.c prototypes */ extern CatalogIndexState CatalogOpenIndexes(Relation heapRel); extern void CatalogCloseIndexes(CatalogIndexState indstate); extern void CatalogTupleInsert(Relation heapRel, HeapTuple tup); extern void CatalogTupleInsertWithInfo(Relation heapRel, HeapTuple tup, CatalogIndexState indstate); extern void CatalogTuplesMultiInsertWithInfo(Relation heapRel, TupleTableSlot **slot, int ntuples, CatalogIndexState indstate); extern void CatalogTupleUpdate(Relation heapRel, ItemPointer otid, HeapTuple tup); extern void CatalogTupleUpdateWithInfo(Relation heapRel, ItemPointer otid, HeapTuple tup, CatalogIndexState indstate); extern void CatalogTupleDelete(Relation heapRel, ItemPointer tid); #endif /* INDEXING_H */