↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

百科 / 扩展钩子 / 日志与函数调用

fmgr_hook

函数调用事件

函数管理器钩子。

当前查看 PostgreSQL 18。

中文定义与说明

函数管理器钩子。

以下中文为本站依据所列 PostgreSQL 源码注释编译的说明。

接口声明

typedef void (*fmgr_hook_type) (FmgrHookEventType event, FmgrInfo *flinfo, Datum *arg);
extern PGDLLIMPORT fmgr_hook_type fmgr_hook;

调用位置

  • src/backend/utils/fmgr/fmgr.c:731
  • src/backend/utils/fmgr/fmgr.c:762
  • src/backend/utils/fmgr/fmgr.c:774

核心调用上下文:src/backend/utils/fmgr/fmgr.c:725–739

									  context, source, GetUserId(),
									  action, true, 0, false);
	}

	/* function manager hook */
	if (fmgr_hook)
		(*fmgr_hook) (FHET_START, &fcache->flinfo, &fcache->arg);

	/*
	 * We don't need to restore GUC or userid settings on error, because the
	 * ensuing xact or subxact abort will do that.  The PG_TRY block is only
	 * needed to clean up the flinfo link.
	 */
	save_flinfo = fcinfo->flinfo;

核心调用上下文:src/backend/utils/fmgr/fmgr.c:756–770

								   ((ReturnSetInfo *) fcinfo->resultinfo)->isDone != ExprMultipleResult));
	}
	PG_CATCH();
	{
		fcinfo->flinfo = save_flinfo;
		if (fmgr_hook)
			(*fmgr_hook) (FHET_ABORT, &fcache->flinfo, &fcache->arg);
		PG_RE_THROW();
	}
	PG_END_TRY();

	fcinfo->flinfo = save_flinfo;

	if (fcache->configNames != NIL)
		AtEOXact_GUC(true, save_nestlevel);

核心调用上下文:src/backend/utils/fmgr/fmgr.c:768–782

	if (fcache->configNames != NIL)
		AtEOXact_GUC(true, save_nestlevel);
	if (OidIsValid(fcache->userid))
		SetUserIdAndSecContext(save_userid, save_sec_context);
	if (fmgr_hook)
		(*fmgr_hook) (FHET_END, &fcache->flinfo, &fcache->arg);

	return result;
}


/*-------------------------------------------------------------------------
 *		Support routines for callers of fmgr-compatible functions
 *-------------------------------------------------------------------------

说明

函数管理器钩子。

接口类型
fmgr_hook_type
声明头文件
src/include/fmgr.h
调用阶段
日志与函数调用
初始值
NULL(未安装钩子)

接口签名

typedef void (*fmgr_hook_type) (FmgrHookEventType event, FmgrInfo *flinfo, Datum *arg);
extern PGDLLIMPORT fmgr_hook_type fmgr_hook;

调用位置

src/backend/utils/fmgr/fmgr.c:731

src/backend/utils/fmgr/fmgr.c:762

src/backend/utils/fmgr/fmgr.c:774

相关条目

文档与源码

查看来源构建
版本
18
构建
REL_18_STABLE
来源指纹
753057e340da8f22e57c9a409ea7a235fd6a46bd

同类条目

返回扩展钩子 · 此条目的收录范围为 PostgreSQL 10 至 20;起点不一定是实际引入版本。