⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 resowner.h

📁 PostgreSQL 8.1.4的源码 适用于Linux下的开源数据库系统
💻 H
字号:
/*------------------------------------------------------------------------- * * 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-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * $PostgreSQL: pgsql/src/include/utils/resowner.h,v 1.5 2004/12/31 22:03:46 pgsql Exp $ * *------------------------------------------------------------------------- */#ifndef RESOWNER_H#define RESOWNER_H#include "storage/buf.h"#include "utils/catcache.h"#include "utils/rel.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);#endif   /* RESOWNER_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -