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 + -
显示快捷键?