1 /*-------------------------------------------------------------------------
4 * This file provides some definitions to support indexing
8 * Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group
9 * Portions Copyright (c) 1994, Regents of the University of California
11 * src/include/catalog/indexing.h
13 *-------------------------------------------------------------------------
18 #include "access/htup.h"
19 #include "nodes/execnodes.h"
20 #include "utils/relcache.h"
23 * The state object used by CatalogOpenIndexes and friends is actually the
24 * same as the executor's ResultRelInfo, but we give it another type name
25 * to decouple callers from that fact.
27 typedef struct ResultRelInfo
*CatalogIndexState
;
30 * Cap the maximum amount of bytes allocated for multi-inserts with system
31 * catalogs, limiting the number of slots used.
33 #define MAX_CATALOG_MULTI_INSERT_BYTES 65535
36 * indexing.c prototypes
38 extern CatalogIndexState
CatalogOpenIndexes(Relation heapRel
);
39 extern void CatalogCloseIndexes(CatalogIndexState indstate
);
40 extern void CatalogTupleInsert(Relation heapRel
, HeapTuple tup
);
41 extern void CatalogTupleInsertWithInfo(Relation heapRel
, HeapTuple tup
,
42 CatalogIndexState indstate
);
43 extern void CatalogTuplesMultiInsertWithInfo(Relation heapRel
,
44 TupleTableSlot
**slot
,
46 CatalogIndexState indstate
);
47 extern void CatalogTupleUpdate(Relation heapRel
, ItemPointer otid
,
49 extern void CatalogTupleUpdateWithInfo(Relation heapRel
,
50 ItemPointer otid
, HeapTuple tup
,
51 CatalogIndexState indstate
);
52 extern void CatalogTupleDelete(Relation heapRel
, ItemPointer tid
);
54 #endif /* INDEXING_H */