PostgreSQL Source Code git master
inval.h
Go to the documentation of this file.
1/*-------------------------------------------------------------------------
2 *
3 * inval.h
4 * POSTGRES cache invalidation dispatcher 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/inval.h
11 *
12 *-------------------------------------------------------------------------
13 */
14#ifndef INVAL_H
15#define INVAL_H
16
17#include "access/htup.h"
19#include "utils/relcache.h"
20
22
23#define MIN_DEBUG_DISCARD_CACHES 0
24
25#ifdef DISCARD_CACHES_ENABLED
26 /* Set default based on older compile-time-only cache clobber macros */
27#if defined(CLOBBER_CACHE_RECURSIVELY)
28#define DEFAULT_DEBUG_DISCARD_CACHES 3
29#elif defined(CLOBBER_CACHE_ALWAYS)
30#define DEFAULT_DEBUG_DISCARD_CACHES 1
31#else
32#define DEFAULT_DEBUG_DISCARD_CACHES 0
33#endif
34#define MAX_DEBUG_DISCARD_CACHES 5
35#else /* not DISCARD_CACHES_ENABLED */
36#define DEFAULT_DEBUG_DISCARD_CACHES 0
37#define MAX_DEBUG_DISCARD_CACHES 0
38#endif /* not DISCARD_CACHES_ENABLED */
39
40
41typedef void (*SyscacheCallbackFunction) (Datum arg, int cacheid, uint32 hashvalue);
42typedef void (*RelcacheCallbackFunction) (Datum arg, Oid relid);
43typedef void (*RelSyncCallbackFunction) (Datum arg, Oid relid);
44
45
46extern void AcceptInvalidationMessages(void);
47
48extern void AtEOXact_Inval(bool isCommit);
49
50extern void PreInplace_Inval(void);
51extern void AtInplace_Inval(void);
52extern void ForgetInplace_Inval(void);
53
54extern void AtEOSubXact_Inval(bool isCommit);
55
56extern void PostPrepare_Inval(void);
57
58extern void CommandEndInvalidationMessages(void);
59
60extern void CacheInvalidateHeapTuple(Relation relation,
61 HeapTuple tuple,
62 HeapTuple newtuple);
63extern void CacheInvalidateHeapTupleInplace(Relation relation,
64 HeapTuple key_equivalent_tuple);
65
66extern void CacheInvalidateCatalog(Oid catalogId);
67
68extern void CacheInvalidateRelcache(Relation relation);
69
70extern void CacheInvalidateRelcacheAll(void);
71
72extern void CacheInvalidateRelcacheByTuple(HeapTuple classTuple);
73
74extern void CacheInvalidateRelcacheByRelid(Oid relid);
75
76extern void CacheInvalidateRelSync(Oid relid);
77
78extern void CacheInvalidateRelSyncAll(void);
79
80extern void CacheInvalidateSmgr(RelFileLocatorBackend rlocator);
81
82extern void CacheInvalidateRelmap(Oid databaseId);
83
84extern void CacheRegisterSyscacheCallback(int cacheid,
86 Datum arg);
87
89 Datum arg);
90
92 Datum arg);
93
94extern void CallSyscacheCallbacks(int cacheid, uint32 hashvalue);
95
96extern void CallRelSyncCallbacks(Oid relid);
97
98extern void InvalidateSystemCaches(void);
99extern void InvalidateSystemCachesExtended(bool debug_discard);
100
101extern void LogLogicalInvalidations(void);
102#endif /* INVAL_H */
#define PGDLLIMPORT
Definition: c.h:1305
uint32_t uint32
Definition: c.h:552
void PostPrepare_Inval(void)
Definition: inval.c:993
void InvalidateSystemCachesExtended(bool debug_discard)
Definition: inval.c:785
void CallRelSyncCallbacks(Oid relid)
Definition: inval.c:1920
void CacheInvalidateRelSyncAll(void)
Definition: inval.c:1724
void LogLogicalInvalidations(void)
Definition: inval.c:1939
void(* SyscacheCallbackFunction)(Datum arg, int cacheid, uint32 hashvalue)
Definition: inval.h:41
void AcceptInvalidationMessages(void)
Definition: inval.c:930
void CacheInvalidateRelmap(Oid databaseId)
Definition: inval.c:1789
PGDLLIMPORT int debug_discard_caches
Definition: inval.c:260
void CacheInvalidateCatalog(Oid catalogId)
Definition: inval.c:1612
void(* RelcacheCallbackFunction)(Datum arg, Oid relid)
Definition: inval.h:42
void CallSyscacheCallbacks(int cacheid, uint32 hashvalue)
Definition: inval.c:1898
void CacheInvalidateRelcache(Relation relation)
Definition: inval.c:1635
void CacheInvalidateRelcacheByRelid(Oid relid)
Definition: inval.c:1691
void InvalidateSystemCaches(void)
Definition: inval.c:916
void AtEOXact_Inval(bool isCommit)
Definition: inval.c:1199
void(* RelSyncCallbackFunction)(Datum arg, Oid relid)
Definition: inval.h:43
void CacheInvalidateSmgr(RelFileLocatorBackend rlocator)
Definition: inval.c:1755
void AtEOSubXact_Inval(bool isCommit)
Definition: inval.c:1310
void PreInplace_Inval(void)
Definition: inval.c:1250
void CommandEndInvalidationMessages(void)
Definition: inval.c:1409
void CacheInvalidateHeapTupleInplace(Relation relation, HeapTuple key_equivalent_tuple)
Definition: inval.c:1593
void AtInplace_Inval(void)
Definition: inval.c:1263
void CacheRegisterRelcacheCallback(RelcacheCallbackFunction func, Datum arg)
Definition: inval.c:1858
void CacheRegisterRelSyncCallback(RelSyncCallbackFunction func, Datum arg)
Definition: inval.c:1879
void ForgetInplace_Inval(void)
Definition: inval.c:1286
void CacheInvalidateRelSync(Oid relid)
Definition: inval.c:1712
void CacheInvalidateHeapTuple(Relation relation, HeapTuple tuple, HeapTuple newtuple)
Definition: inval.c:1571
void CacheInvalidateRelcacheByTuple(HeapTuple classTuple)
Definition: inval.c:1669
void CacheInvalidateRelcacheAll(void)
Definition: inval.c:1658
void CacheRegisterSyscacheCallback(int cacheid, SyscacheCallbackFunction func, Datum arg)
Definition: inval.c:1816
void * arg
uint64_t Datum
Definition: postgres.h:70
unsigned int Oid
Definition: postgres_ext.h:32