1 /*-------------------------------------------------------------------------
2  *
3  * inval.h
4  *	  POSTGRES cache invalidation dispatcher definitions.
5  *
6  *
7  * Portions Copyright (c) 1996-2016, 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"
18 #include "storage/relfilenode.h"
19 #include "utils/relcache.h"
20 
21 
22 typedef void (*SyscacheCallbackFunction) (Datum arg, int cacheid, uint32 hashvalue);
23 typedef void (*RelcacheCallbackFunction) (Datum arg, Oid relid);
24 
25 
26 extern void AcceptInvalidationMessages(void);
27 
28 extern void AtEOXact_Inval(bool isCommit);
29 
30 extern void AtEOSubXact_Inval(bool isCommit);
31 
32 extern void AtPrepare_Inval(void);
33 
34 extern void PostPrepare_Inval(void);
35 
36 extern void CommandEndInvalidationMessages(void);
37 
38 extern void CacheInvalidateHeapTuple(Relation relation,
39 						 HeapTuple tuple,
40 						 HeapTuple newtuple);
41 
42 extern void CacheInvalidateCatalog(Oid catalogId);
43 
44 extern void CacheInvalidateRelcache(Relation relation);
45 
46 extern void CacheInvalidateRelcacheByTuple(HeapTuple classTuple);
47 
48 extern void CacheInvalidateRelcacheByRelid(Oid relid);
49 
50 extern void CacheInvalidateSmgr(RelFileNodeBackend rnode);
51 
52 extern void CacheInvalidateRelmap(Oid databaseId);
53 
54 extern void CacheRegisterSyscacheCallback(int cacheid,
55 							  SyscacheCallbackFunction func,
56 							  Datum arg);
57 
58 extern void CacheRegisterRelcacheCallback(RelcacheCallbackFunction func,
59 							  Datum arg);
60 
61 extern void CallSyscacheCallbacks(int cacheid, uint32 hashvalue);
62 
63 extern void InvalidateSystemCaches(void);
64 extern void InvalidateSystemCachesExtended(bool debug_discard);
65 #endif   /* INVAL_H */
66