1 /*-------------------------------------------------------------------------
2  *
3  * resowner_private.h
4  *	  POSTGRES resource owner private definitions.
5  *
6  * See utils/resowner/README for more info.
7  *
8  *
9  * Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group
10  * Portions Copyright (c) 1994, Regents of the University of California
11  *
12  * src/include/utils/resowner_private.h
13  *
14  *-------------------------------------------------------------------------
15  */
16 #ifndef RESOWNER_PRIVATE_H
17 #define RESOWNER_PRIVATE_H
18 
19 #include "storage/dsm.h"
20 #include "storage/fd.h"
21 #include "storage/lock.h"
22 #include "utils/catcache.h"
23 #include "utils/plancache.h"
24 #include "utils/resowner.h"
25 #include "utils/snapshot.h"
26 
27 
28 /* support for buffer refcount management */
29 extern void ResourceOwnerEnlargeBuffers(ResourceOwner owner);
30 extern void ResourceOwnerRememberBuffer(ResourceOwner owner, Buffer buffer);
31 extern void ResourceOwnerForgetBuffer(ResourceOwner owner, Buffer buffer);
32 
33 /* support for local lock management */
34 extern void ResourceOwnerRememberLock(ResourceOwner owner, LOCALLOCK *locallock);
35 extern void ResourceOwnerForgetLock(ResourceOwner owner, LOCALLOCK *locallock);
36 
37 /* support for catcache refcount management */
38 extern void ResourceOwnerEnlargeCatCacheRefs(ResourceOwner owner);
39 extern void ResourceOwnerRememberCatCacheRef(ResourceOwner owner,
40 								 HeapTuple tuple);
41 extern void ResourceOwnerForgetCatCacheRef(ResourceOwner owner,
42 							   HeapTuple tuple);
43 extern void ResourceOwnerEnlargeCatCacheListRefs(ResourceOwner owner);
44 extern void ResourceOwnerRememberCatCacheListRef(ResourceOwner owner,
45 									 CatCList *list);
46 extern void ResourceOwnerForgetCatCacheListRef(ResourceOwner owner,
47 								   CatCList *list);
48 
49 /* support for relcache refcount management */
50 extern void ResourceOwnerEnlargeRelationRefs(ResourceOwner owner);
51 extern void ResourceOwnerRememberRelationRef(ResourceOwner owner,
52 								 Relation rel);
53 extern void ResourceOwnerForgetRelationRef(ResourceOwner owner,
54 							   Relation rel);
55 
56 /* support for plancache refcount management */
57 extern void ResourceOwnerEnlargePlanCacheRefs(ResourceOwner owner);
58 extern void ResourceOwnerRememberPlanCacheRef(ResourceOwner owner,
59 								  CachedPlan *plan);
60 extern void ResourceOwnerForgetPlanCacheRef(ResourceOwner owner,
61 								CachedPlan *plan);
62 
63 /* support for tupledesc refcount management */
64 extern void ResourceOwnerEnlargeTupleDescs(ResourceOwner owner);
65 extern void ResourceOwnerRememberTupleDesc(ResourceOwner owner,
66 							   TupleDesc tupdesc);
67 extern void ResourceOwnerForgetTupleDesc(ResourceOwner owner,
68 							 TupleDesc tupdesc);
69 
70 /* support for snapshot refcount management */
71 extern void ResourceOwnerEnlargeSnapshots(ResourceOwner owner);
72 extern void ResourceOwnerRememberSnapshot(ResourceOwner owner,
73 							  Snapshot snapshot);
74 extern void ResourceOwnerForgetSnapshot(ResourceOwner owner,
75 							Snapshot snapshot);
76 
77 /* support for temporary file management */
78 extern void ResourceOwnerEnlargeFiles(ResourceOwner owner);
79 extern void ResourceOwnerRememberFile(ResourceOwner owner,
80 						  File file);
81 extern void ResourceOwnerForgetFile(ResourceOwner owner,
82 						File file);
83 
84 /* support for dynamic shared memory management */
85 extern void ResourceOwnerEnlargeDSMs(ResourceOwner owner);
86 extern void ResourceOwnerRememberDSM(ResourceOwner owner,
87 						 dsm_segment *);
88 extern void ResourceOwnerForgetDSM(ResourceOwner owner,
89 					   dsm_segment *);
90 
91 #endif   /* RESOWNER_PRIVATE_H */
92