resowner.h
来自「PostgreSQL 8.2中增加了很多企业用户所需要的功能和性能上的提高,其开」· C头文件 代码 · 共 117 行
H
117 行
/*------------------------------------------------------------------------- * * resowner.h * POSTGRES resource owner definitions. * * Query-lifespan resources are tracked by associating them with * ResourceOwner objects. This provides a simple mechanism for ensuring * that such resources are freed at the right time. * See utils/resowner/README for more info. * * * Portions Copyright (c) 1996-2006, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * $PostgreSQL: pgsql/src/include/utils/resowner.h,v 1.9 2006/10/04 00:30:11 momjian Exp $ * *------------------------------------------------------------------------- */#ifndef RESOWNER_H#define RESOWNER_H#include "storage/buf.h"#include "utils/catcache.h"/* * ResourceOwner objects are an opaque data structure known only within * resowner.c. */typedef struct ResourceOwnerData *ResourceOwner;/* * Globally known ResourceOwners */extern DLLIMPORT ResourceOwner CurrentResourceOwner;extern DLLIMPORT ResourceOwner CurTransactionResourceOwner;extern DLLIMPORT ResourceOwner TopTransactionResourceOwner;/* * Resource releasing is done in three phases: pre-locks, locks, and * post-locks. The pre-lock phase must release any resources that are * visible to other backends (such as pinned buffers); this ensures that * when we release a lock that another backend may be waiting on, it will * see us as being fully out of our transaction. The post-lock phase * should be used for backend-internal cleanup. */typedef enum{ RESOURCE_RELEASE_BEFORE_LOCKS, RESOURCE_RELEASE_LOCKS, RESOURCE_RELEASE_AFTER_LOCKS} ResourceReleasePhase;/* * Dynamically loaded modules can get control during ResourceOwnerRelease * by providing a callback of this form. */typedef void (*ResourceReleaseCallback) (ResourceReleasePhase phase, bool isCommit, bool isTopLevel, void *arg);/* * Functions in resowner.c *//* generic routines */extern ResourceOwner ResourceOwnerCreate(ResourceOwner parent, const char *name);extern void ResourceOwnerRelease(ResourceOwner owner, ResourceReleasePhase phase, bool isCommit, bool isTopLevel);extern void ResourceOwnerDelete(ResourceOwner owner);extern ResourceOwner ResourceOwnerGetParent(ResourceOwner owner);extern void ResourceOwnerNewParent(ResourceOwner owner, ResourceOwner newparent);extern void RegisterResourceReleaseCallback(ResourceReleaseCallback callback, void *arg);extern void UnregisterResourceReleaseCallback(ResourceReleaseCallback callback, void *arg);/* support for buffer refcount management */extern void ResourceOwnerEnlargeBuffers(ResourceOwner owner);extern void ResourceOwnerRememberBuffer(ResourceOwner owner, Buffer buffer);extern void ResourceOwnerForgetBuffer(ResourceOwner owner, Buffer buffer);/* support for catcache refcount management */extern void ResourceOwnerEnlargeCatCacheRefs(ResourceOwner owner);extern void ResourceOwnerRememberCatCacheRef(ResourceOwner owner, HeapTuple tuple);extern void ResourceOwnerForgetCatCacheRef(ResourceOwner owner, HeapTuple tuple);extern void ResourceOwnerEnlargeCatCacheListRefs(ResourceOwner owner);extern void ResourceOwnerRememberCatCacheListRef(ResourceOwner owner, CatCList *list);extern void ResourceOwnerForgetCatCacheListRef(ResourceOwner owner, CatCList *list);/* support for relcache refcount management */extern void ResourceOwnerEnlargeRelationRefs(ResourceOwner owner);extern void ResourceOwnerRememberRelationRef(ResourceOwner owner, Relation rel);extern void ResourceOwnerForgetRelationRef(ResourceOwner owner, Relation rel);/* support for tupledesc refcount management */extern void ResourceOwnerEnlargeTupleDescs(ResourceOwner owner);extern void ResourceOwnerRememberTupleDesc(ResourceOwner owner, TupleDesc tupdesc);extern void ResourceOwnerForgetTupleDesc(ResourceOwner owner, TupleDesc tupdesc);#endif /* RESOWNER_H */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?