PostgreSQL Source Code git master
Loading...
Searching...
No Matches
relcache.h
Go to the documentation of this file.
1/*-------------------------------------------------------------------------
2 *
3 * relcache.h
4 * Relation descriptor cache definitions.
5 *
6 *
7 * Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group
8 * Portions Copyright (c) 1994, Regents of the University of California
9 *
10 * src/include/utils/relcache.h
11 *
12 *-------------------------------------------------------------------------
13 */
14#ifndef RELCACHE_H
15#define RELCACHE_H
16
17#include "access/tupdesc.h"
18#include "common/relpath.h"
19#include "nodes/bitmapset.h"
20
21
22/*
23 * Name of relcache init file(s), used to speed up backend startup
24 */
25#define RELCACHE_INIT_FILENAME "pg_internal.init"
26
27typedef struct RelationData *Relation;
28
29/* ----------------
30 * RelationPtr is used in the executor to support index scans
31 * where we have to keep track of several index relations in an
32 * array. -cim 9/10/89
33 * ----------------
34 */
36
37/*
38 * Routines to open (lookup) and close a relcache entry
39 */
40#ifdef USE_ASSERT_CHECKING
41extern void AssertCouldGetRelation(void);
42#else
43static inline void
47#endif
50extern void RelationClose(Relation relation);
51
52/*
53 * Routines to compute/retrieve additional cached information
54 */
55extern List *RelationGetFKeyList(Relation relation);
56extern List *RelationGetIndexList(Relation relation);
57extern List *RelationGetStatExtList(Relation relation);
59extern Oid RelationGetReplicaIndex(Relation relation);
63extern bytea **RelationGetIndexAttOptions(Relation relation, bool copy);
64
65/*
66 * Which set of columns to return by RelationGetIndexAttrBitmap.
67 */
76
79
81
82extern void RelationGetExclusionInfo(Relation indexRelation,
83 Oid **operators,
84 Oid **procs,
86
87extern void RelationInitIndexAccessInfo(Relation relation);
88
89/* caller must include pg_publication.h */
90struct PublicationDesc;
91extern void RelationBuildPublicationDesc(Relation relation,
92 struct PublicationDesc *pubdesc);
93
94extern void RelationInitTableAccessMethod(Relation relation);
95
96/*
97 * Routines to support ereport() reports of relation-related errors
98 */
99extern int errtable(Relation rel);
100extern int errtablecol(Relation rel, int attnum);
101extern int errtablecolname(Relation rel, const char *colname);
102extern int errtableconstraint(Relation rel, const char *conname);
103
104/*
105 * Routines for backend startup
106 */
107extern void RelationCacheInitialize(void);
108extern void RelationCacheInitializePhase2(void);
109extern void RelationCacheInitializePhase3(void);
110
111/*
112 * Routine to create a relcache entry for an about-to-be-created relation
113 */
115 Oid relnamespace,
116 TupleDesc tupDesc,
117 Oid relid,
119 RelFileNumber relfilenumber,
120 Oid reltablespace,
121 bool shared_relation,
122 bool mapped_relation,
123 char relpersistence,
124 char relkind);
125
126/*
127 * Routines to manage assignment of new relfilenumber to a relation
128 */
129extern void RelationSetNewRelfilenumber(Relation relation, char persistence);
130extern void RelationAssumeNewRelfilelocator(Relation relation);
131
132/*
133 * Routines for flushing/rebuilding relcache entries in various scenarios
134 */
135extern void RelationForgetRelation(Oid rid);
136
138
139extern void RelationCacheInvalidate(bool debug_discard);
140
141#ifdef USE_ASSERT_CHECKING
142extern void AssertPendingSyncs_RelationCache(void);
143#else
144#define AssertPendingSyncs_RelationCache() do {} while (0)
145#endif
146extern void AtEOXact_RelationCache(bool isCommit);
149
150/*
151 * Routines to help manage rebuilding of relcache init files
152 */
154extern void RelationCacheInitFilePreInvalidate(void);
156extern void RelationCacheInitFileRemove(void);
157
158/* should be used only by relcache.c and catcache.c */
160
161/* should be used only by relcache.c and postinit.c */
163
164#endif /* RELCACHE_H */
#define PGDLLIMPORT
Definition c.h:1421
uint32 SubTransactionId
Definition c.h:740
uint16_t uint16
Definition c.h:623
int16 attnum
NameData relname
Definition pg_class.h:40
unsigned int Oid
static int fb(int x)
List * RelationGetIndexList(Relation relation)
Definition relcache.c:4837
void RelationCacheInvalidate(bool debug_discard)
Definition relcache.c:2994
struct RelationData * Relation
Definition relcache.h:27
PGDLLIMPORT bool criticalRelcachesBuilt
Definition relcache.c:142
Oid RelationGetPrimaryKeyIndex(Relation relation, bool deferrable_ok)
Definition relcache.c:5048
List * RelationGetDummyIndexExpressions(Relation relation)
Definition relcache.c:5157
int errtableconstraint(Relation rel, const char *conname)
Definition relcache.c:6127
int errtablecol(Relation rel, int attnum)
Definition relcache.c:6090
IndexAttrBitmapKind
Definition relcache.h:69
@ INDEX_ATTR_BITMAP_KEY
Definition relcache.h:70
@ INDEX_ATTR_BITMAP_HOT_BLOCKING
Definition relcache.h:73
@ INDEX_ATTR_BITMAP_PRIMARY_KEY
Definition relcache.h:71
@ INDEX_ATTR_BITMAP_SUMMARIZED
Definition relcache.h:74
@ INDEX_ATTR_BITMAP_IDENTITY_KEY
Definition relcache.h:72
PGDLLIMPORT bool criticalSharedRelcachesBuilt
Definition relcache.c:148
void RelationInitIndexAccessInfo(Relation relation)
Definition relcache.c:1436
List * RelationGetIndexPredicate(Relation relation)
Definition relcache.c:5211
Bitmapset * RelationGetIndexAttrBitmap(Relation relation, IndexAttrBitmapKind attrKind)
Definition relcache.c:5304
void AtEOSubXact_RelationCache(bool isCommit, SubTransactionId mySubid, SubTransactionId parentSubid)
Definition relcache.c:3378
List * RelationGetStatExtList(Relation relation)
Definition relcache.c:4978
void RelationCacheInitFilePostInvalidate(void)
Definition relcache.c:6911
void RelationCacheInitializePhase3(void)
Definition relcache.c:4109
void RelationInitTableAccessMethod(Relation relation)
Definition relcache.c:1820
void RelationBuildPublicationDesc(Relation relation, struct PublicationDesc *pubdesc)
Definition relcache.c:5795
void RelationSetNewRelfilenumber(Relation relation, char persistence)
Definition relcache.c:3775
#define AssertPendingSyncs_RelationCache()
Definition relcache.h:144
List * RelationGetFKeyList(Relation relation)
Definition relcache.c:4732
Oid RelationGetReplicaIndex(Relation relation)
Definition relcache.c:5073
Relation RelationIdGetRelation(Oid relationId)
Definition relcache.c:2089
void AtEOXact_RelationCache(bool isCommit)
Definition relcache.c:3226
void RelationForgetRelation(Oid rid)
Definition relcache.c:2893
void RelationCacheInitialize(void)
Definition relcache.c:4004
void RelationCacheInitFilePreInvalidate(void)
Definition relcache.c:6886
List * RelationGetIndexExpressions(Relation relation)
Definition relcache.c:5098
Relation RelationBuildLocalRelation(const char *relname, Oid relnamespace, TupleDesc tupDesc, Oid relid, Oid accessmtd, RelFileNumber relfilenumber, Oid reltablespace, bool shared_relation, bool mapped_relation, char relpersistence, char relkind)
Definition relcache.c:3515
void RelationAssumeNewRelfilelocator(Relation relation)
Definition relcache.c:3978
void RelationCacheInitFileRemove(void)
Definition relcache.c:6926
int errtablecolname(Relation rel, const char *colname)
Definition relcache.c:6114
void RelationCacheInitializePhase2(void)
Definition relcache.c:4050
bool RelationIdIsInInitFile(Oid relationId)
Definition relcache.c:6846
int errtable(Relation rel)
Definition relcache.c:6073
void RelationCacheInvalidateEntry(Oid relationId)
Definition relcache.c:2938
bytea ** RelationGetIndexAttOptions(Relation relation, bool copy)
Definition relcache.c:6012
Bitmapset * RelationGetIdentityKeyBitmap(Relation relation)
Definition relcache.c:5577
static void AssertCouldGetRelation(void)
Definition relcache.h:44
void RelationGetExclusionInfo(Relation indexRelation, Oid **operators, Oid **procs, uint16 **strategies)
Definition relcache.c:5654
Relation * RelationPtr
Definition relcache.h:35
char * RelationGetQualifiedRelationName(Relation rel)
Definition relcache.c:2142
void RelationClose(Relation relation)
Definition relcache.c:2220
Oid RelFileNumber
Definition relpath.h:25
Definition pg_list.h:54
Definition c.h:776