{"kind": "hook", "major": "18", "item": {"slug": "fmgr_hook", "name": "fmgr_hook", "name_zh": "fmgr_hook", "category": "Logging and function calls", "summary": "function manager hook", "aliases": [], "versions": {"10": {"facts": [{"label": "Interface type", "value": "fmgr_hook_type"}, {"label": "Header", "value": "src/include/fmgr.h"}, {"label": "Subsystem", "value": "Logging and function calls"}, {"label": "Initial value", "value": "NULL (no hook installed)"}], "related": [], "release": {"ref": "REL_10_STABLE", "label": "10", "major": "10", "channel": "historical", "revision": "f4e8f137bfb08a664c8288824c1e36b5143ac875"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/f4e8f137bfb08a664c8288824c1e36b5143ac875/src/include/fmgr.h#L727", "path": "src/include/fmgr.h", "label": "Interface declaration", "sha256": "df17c150409e6e8722ca759fe4180a8749cf780229068e62361b1175b58999ea"}, {"url": "https://github.com/postgres/postgres/blob/f4e8f137bfb08a664c8288824c1e36b5143ac875/src/backend/utils/fmgr/fmgr.c#L37", "path": "src/backend/utils/fmgr/fmgr.c", "label": "Core definition", "sha256": "a5788568f1147d2aad197271942da0ea489f52d03b8b753555a21dee8fef562e"}, {"url": "https://github.com/postgres/postgres/blob/f4e8f137bfb08a664c8288824c1e36b5143ac875/src/backend/utils/fmgr/fmgr.c#L646", "path": "src/backend/utils/fmgr/fmgr.c", "label": "Call sites", "sha256": "a5788568f1147d2aad197271942da0ea489f52d03b8b753555a21dee8fef562e"}], "sections": [{"title": "Call sites", "paragraphs": ["src/backend/utils/fmgr/fmgr.c:646", "src/backend/utils/fmgr/fmgr.c:677", "src/backend/utils/fmgr/fmgr.c:689"]}, {"code": "\t\t\t\t\t\tPGC_S_SESSION,\n\t\t\t\t\t\tGUC_ACTION_SAVE);\n\t}\n\n\t/* function manager hook */\n\tif (fmgr_hook)\n\t\t(*fmgr_hook) (FHET_START, &fcache->flinfo, &fcache->arg);\n\n\t/*\n\t * We don't need to restore GUC or userid settings on error, because the\n\t * ensuing xact or subxact abort will do that.  The PG_TRY block is only\n\t * needed to clean up the flinfo link.\n\t */\n\tsave_flinfo = fcinfo->flinfo;\n", "title": "Core call context: src/backend/utils/fmgr/fmgr.c:640\u2013654", "paragraphs": []}, {"code": "\t\t\t\t\t\t\t\t   ((ReturnSetInfo *) fcinfo->resultinfo)->isDone != ExprMultipleResult));\n\t}\n\tPG_CATCH();\n\t{\n\t\tfcinfo->flinfo = save_flinfo;\n\t\tif (fmgr_hook)\n\t\t\t(*fmgr_hook) (FHET_ABORT, &fcache->flinfo, &fcache->arg);\n\t\tPG_RE_THROW();\n\t}\n\tPG_END_TRY();\n\n\tfcinfo->flinfo = save_flinfo;\n\n\tif (fcache->proconfig)\n\t\tAtEOXact_GUC(true, save_nestlevel);", "title": "Core call context: src/backend/utils/fmgr/fmgr.c:671\u2013685", "paragraphs": []}, {"code": "\n\tif (fcache->proconfig)\n\t\tAtEOXact_GUC(true, save_nestlevel);\n\tif (OidIsValid(fcache->userid))\n\t\tSetUserIdAndSecContext(save_userid, save_sec_context);\n\tif (fmgr_hook)\n\t\t(*fmgr_hook) (FHET_END, &fcache->flinfo, &fcache->arg);\n\n\treturn result;\n}\n\n\n/*-------------------------------------------------------------------------\n *\t\tSupport routines for callers of fmgr-compatible functions\n *-------------------------------------------------------------------------", "title": "Core call context: src/backend/utils/fmgr/fmgr.c:683\u2013697", "paragraphs": []}], "signature": "typedef void (*fmgr_hook_type) (FmgrHookEventType event, FmgrInfo *flinfo, Datum *arg);\nextern PGDLLIMPORT fmgr_hook_type fmgr_hook;", "description": ["function manager hook"]}, "11": {"facts": [{"label": "Interface type", "value": "fmgr_hook_type"}, {"label": "Header", "value": "src/include/fmgr.h"}, {"label": "Subsystem", "value": "Logging and function calls"}, {"label": "Initial value", "value": "NULL (no hook installed)"}], "related": [], "release": {"ref": "REL_11_STABLE", "label": "11", "major": "11", "channel": "historical", "revision": "170e416034ec0231d9e9238f2577eeb76ca8d181"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/170e416034ec0231d9e9238f2577eeb76ca8d181/src/include/fmgr.h#L734", "path": "src/include/fmgr.h", "label": "Interface declaration", "sha256": "c190e4895547ea11f1a94bf88627378adb93b964dbe6cbde649813befaca7892"}, {"url": "https://github.com/postgres/postgres/blob/170e416034ec0231d9e9238f2577eeb76ca8d181/src/backend/utils/fmgr/fmgr.c#L37", "path": "src/backend/utils/fmgr/fmgr.c", "label": "Core definition", "sha256": "6d1dd1f91eeece4053ff17f40f5df44e4cf08d0a7dd87d03a36cf8e2afcbf455"}, {"url": "https://github.com/postgres/postgres/blob/170e416034ec0231d9e9238f2577eeb76ca8d181/src/backend/utils/fmgr/fmgr.c#L732", "path": "src/backend/utils/fmgr/fmgr.c", "label": "Call sites", "sha256": "6d1dd1f91eeece4053ff17f40f5df44e4cf08d0a7dd87d03a36cf8e2afcbf455"}], "sections": [{"title": "Call sites", "paragraphs": ["src/backend/utils/fmgr/fmgr.c:732", "src/backend/utils/fmgr/fmgr.c:763", "src/backend/utils/fmgr/fmgr.c:775"]}, {"code": "\t\t\t\t\t\tPGC_S_SESSION,\n\t\t\t\t\t\tGUC_ACTION_SAVE);\n\t}\n\n\t/* function manager hook */\n\tif (fmgr_hook)\n\t\t(*fmgr_hook) (FHET_START, &fcache->flinfo, &fcache->arg);\n\n\t/*\n\t * We don't need to restore GUC or userid settings on error, because the\n\t * ensuing xact or subxact abort will do that.  The PG_TRY block is only\n\t * needed to clean up the flinfo link.\n\t */\n\tsave_flinfo = fcinfo->flinfo;\n", "title": "Core call context: src/backend/utils/fmgr/fmgr.c:726\u2013740", "paragraphs": []}, {"code": "\t\t\t\t\t\t\t\t   ((ReturnSetInfo *) fcinfo->resultinfo)->isDone != ExprMultipleResult));\n\t}\n\tPG_CATCH();\n\t{\n\t\tfcinfo->flinfo = save_flinfo;\n\t\tif (fmgr_hook)\n\t\t\t(*fmgr_hook) (FHET_ABORT, &fcache->flinfo, &fcache->arg);\n\t\tPG_RE_THROW();\n\t}\n\tPG_END_TRY();\n\n\tfcinfo->flinfo = save_flinfo;\n\n\tif (fcache->proconfig)\n\t\tAtEOXact_GUC(true, save_nestlevel);", "title": "Core call context: src/backend/utils/fmgr/fmgr.c:757\u2013771", "paragraphs": []}, {"code": "\n\tif (fcache->proconfig)\n\t\tAtEOXact_GUC(true, save_nestlevel);\n\tif (OidIsValid(fcache->userid))\n\t\tSetUserIdAndSecContext(save_userid, save_sec_context);\n\tif (fmgr_hook)\n\t\t(*fmgr_hook) (FHET_END, &fcache->flinfo, &fcache->arg);\n\n\treturn result;\n}\n\n\n/*-------------------------------------------------------------------------\n *\t\tSupport routines for callers of fmgr-compatible functions\n *-------------------------------------------------------------------------", "title": "Core call context: src/backend/utils/fmgr/fmgr.c:769\u2013783", "paragraphs": []}], "signature": "typedef void (*fmgr_hook_type) (FmgrHookEventType event, FmgrInfo *flinfo, Datum *arg);\nextern PGDLLIMPORT fmgr_hook_type fmgr_hook;", "description": ["function manager hook"]}, "12": {"facts": [{"label": "Interface type", "value": "fmgr_hook_type"}, {"label": "Header", "value": "src/include/fmgr.h"}, {"label": "Subsystem", "value": "Logging and function calls"}, {"label": "Initial value", "value": "NULL (no hook installed)"}], "related": [], "release": {"ref": "REL_12_STABLE", "label": "12", "major": "12", "channel": "historical", "revision": "3f302f0ed06f69c5ebd33d4df95895323a3cbef6"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/3f302f0ed06f69c5ebd33d4df95895323a3cbef6/src/include/fmgr.h#L760", "path": "src/include/fmgr.h", "label": "Interface declaration", "sha256": "6de795177b2711bfbb68a2658f2b479a18948f5678309c922ceaee3df4c1814b"}, {"url": "https://github.com/postgres/postgres/blob/3f302f0ed06f69c5ebd33d4df95895323a3cbef6/src/backend/utils/fmgr/fmgr.c#L37", "path": "src/backend/utils/fmgr/fmgr.c", "label": "Core definition", "sha256": "00f4202032df1dbace13d8d98b79938cd2c6f544104d13522f8bc30d180e1d68"}, {"url": "https://github.com/postgres/postgres/blob/3f302f0ed06f69c5ebd33d4df95895323a3cbef6/src/backend/utils/fmgr/fmgr.c#L732", "path": "src/backend/utils/fmgr/fmgr.c", "label": "Call sites", "sha256": "00f4202032df1dbace13d8d98b79938cd2c6f544104d13522f8bc30d180e1d68"}], "sections": [{"title": "Call sites", "paragraphs": ["src/backend/utils/fmgr/fmgr.c:732", "src/backend/utils/fmgr/fmgr.c:763", "src/backend/utils/fmgr/fmgr.c:775"]}, {"code": "\t\t\t\t\t\tPGC_S_SESSION,\n\t\t\t\t\t\tGUC_ACTION_SAVE);\n\t}\n\n\t/* function manager hook */\n\tif (fmgr_hook)\n\t\t(*fmgr_hook) (FHET_START, &fcache->flinfo, &fcache->arg);\n\n\t/*\n\t * We don't need to restore GUC or userid settings on error, because the\n\t * ensuing xact or subxact abort will do that.  The PG_TRY block is only\n\t * needed to clean up the flinfo link.\n\t */\n\tsave_flinfo = fcinfo->flinfo;\n", "title": "Core call context: src/backend/utils/fmgr/fmgr.c:726\u2013740", "paragraphs": []}, {"code": "\t\t\t\t\t\t\t\t   ((ReturnSetInfo *) fcinfo->resultinfo)->isDone != ExprMultipleResult));\n\t}\n\tPG_CATCH();\n\t{\n\t\tfcinfo->flinfo = save_flinfo;\n\t\tif (fmgr_hook)\n\t\t\t(*fmgr_hook) (FHET_ABORT, &fcache->flinfo, &fcache->arg);\n\t\tPG_RE_THROW();\n\t}\n\tPG_END_TRY();\n\n\tfcinfo->flinfo = save_flinfo;\n\n\tif (fcache->proconfig)\n\t\tAtEOXact_GUC(true, save_nestlevel);", "title": "Core call context: src/backend/utils/fmgr/fmgr.c:757\u2013771", "paragraphs": []}, {"code": "\n\tif (fcache->proconfig)\n\t\tAtEOXact_GUC(true, save_nestlevel);\n\tif (OidIsValid(fcache->userid))\n\t\tSetUserIdAndSecContext(save_userid, save_sec_context);\n\tif (fmgr_hook)\n\t\t(*fmgr_hook) (FHET_END, &fcache->flinfo, &fcache->arg);\n\n\treturn result;\n}\n\n\n/*-------------------------------------------------------------------------\n *\t\tSupport routines for callers of fmgr-compatible functions\n *-------------------------------------------------------------------------", "title": "Core call context: src/backend/utils/fmgr/fmgr.c:769\u2013783", "paragraphs": []}], "signature": "typedef void (*fmgr_hook_type) (FmgrHookEventType event, FmgrInfo *flinfo, Datum *arg);\nextern PGDLLIMPORT fmgr_hook_type fmgr_hook;", "description": ["function manager hook"]}, "13": {"facts": [{"label": "Interface type", "value": "fmgr_hook_type"}, {"label": "Header", "value": "src/include/fmgr.h"}, {"label": "Subsystem", "value": "Logging and function calls"}, {"label": "Initial value", "value": "NULL (no hook installed)"}], "related": [], "release": {"ref": "REL_13_STABLE", "label": "13", "major": "13", "channel": "historical", "revision": "05f6c9ec2c475fae8fdd56ae40bd01afcf70d1f2"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/05f6c9ec2c475fae8fdd56ae40bd01afcf70d1f2/src/include/fmgr.h#L766", "path": "src/include/fmgr.h", "label": "Interface declaration", "sha256": "caf6e9e4fd92e46ee76ef614bd2898b2dae868d078e20ba9f4dec2e26ada9601"}, {"url": "https://github.com/postgres/postgres/blob/05f6c9ec2c475fae8fdd56ae40bd01afcf70d1f2/src/backend/utils/fmgr/fmgr.c#L39", "path": "src/backend/utils/fmgr/fmgr.c", "label": "Core definition", "sha256": "0ac71fc4f7f23b8ce489c2e56fd2f5a65bf55375da29c46ada7ad47a693504ea"}, {"url": "https://github.com/postgres/postgres/blob/05f6c9ec2c475fae8fdd56ae40bd01afcf70d1f2/src/backend/utils/fmgr/fmgr.c#L734", "path": "src/backend/utils/fmgr/fmgr.c", "label": "Call sites", "sha256": "0ac71fc4f7f23b8ce489c2e56fd2f5a65bf55375da29c46ada7ad47a693504ea"}], "sections": [{"title": "Call sites", "paragraphs": ["src/backend/utils/fmgr/fmgr.c:734", "src/backend/utils/fmgr/fmgr.c:765", "src/backend/utils/fmgr/fmgr.c:777"]}, {"code": "\t\t\t\t\t\tPGC_S_SESSION,\n\t\t\t\t\t\tGUC_ACTION_SAVE);\n\t}\n\n\t/* function manager hook */\n\tif (fmgr_hook)\n\t\t(*fmgr_hook) (FHET_START, &fcache->flinfo, &fcache->arg);\n\n\t/*\n\t * We don't need to restore GUC or userid settings on error, because the\n\t * ensuing xact or subxact abort will do that.  The PG_TRY block is only\n\t * needed to clean up the flinfo link.\n\t */\n\tsave_flinfo = fcinfo->flinfo;\n", "title": "Core call context: src/backend/utils/fmgr/fmgr.c:728\u2013742", "paragraphs": []}, {"code": "\t\t\t\t\t\t\t\t   ((ReturnSetInfo *) fcinfo->resultinfo)->isDone != ExprMultipleResult));\n\t}\n\tPG_CATCH();\n\t{\n\t\tfcinfo->flinfo = save_flinfo;\n\t\tif (fmgr_hook)\n\t\t\t(*fmgr_hook) (FHET_ABORT, &fcache->flinfo, &fcache->arg);\n\t\tPG_RE_THROW();\n\t}\n\tPG_END_TRY();\n\n\tfcinfo->flinfo = save_flinfo;\n\n\tif (fcache->proconfig)\n\t\tAtEOXact_GUC(true, save_nestlevel);", "title": "Core call context: src/backend/utils/fmgr/fmgr.c:759\u2013773", "paragraphs": []}, {"code": "\n\tif (fcache->proconfig)\n\t\tAtEOXact_GUC(true, save_nestlevel);\n\tif (OidIsValid(fcache->userid))\n\t\tSetUserIdAndSecContext(save_userid, save_sec_context);\n\tif (fmgr_hook)\n\t\t(*fmgr_hook) (FHET_END, &fcache->flinfo, &fcache->arg);\n\n\treturn result;\n}\n\n\n/*-------------------------------------------------------------------------\n *\t\tSupport routines for callers of fmgr-compatible functions\n *-------------------------------------------------------------------------", "title": "Core call context: src/backend/utils/fmgr/fmgr.c:771\u2013785", "paragraphs": []}], "signature": "typedef void (*fmgr_hook_type) (FmgrHookEventType event, FmgrInfo *flinfo, Datum *arg);\nextern PGDLLIMPORT fmgr_hook_type fmgr_hook;", "description": ["function manager hook"]}, "14": {"facts": [{"label": "Interface type", "value": "fmgr_hook_type"}, {"label": "Header", "value": "src/include/fmgr.h"}, {"label": "Subsystem", "value": "Logging and function calls"}, {"label": "Initial value", "value": "NULL (no hook installed)"}], "related": [], "release": {"ref": "REL_14_STABLE", "label": "14", "major": "14", "channel": "stable", "revision": "fba35c7c28a567839faba867db0808564c0a66db"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/fba35c7c28a567839faba867db0808564c0a66db/src/include/fmgr.h#L768", "path": "src/include/fmgr.h", "label": "Interface declaration", "sha256": "4f5e2b234597a61d39718dbaa8adc29399275ff192ddf3263482eb941dfc44b4"}, {"url": "https://github.com/postgres/postgres/blob/fba35c7c28a567839faba867db0808564c0a66db/src/backend/utils/fmgr/fmgr.c#L39", "path": "src/backend/utils/fmgr/fmgr.c", "label": "Core definition", "sha256": "5606683a0658941ad4de9d56cc80f19873fd1260830d9955118002dffee38759"}, {"url": "https://github.com/postgres/postgres/blob/fba35c7c28a567839faba867db0808564c0a66db/src/backend/utils/fmgr/fmgr.c#L730", "path": "src/backend/utils/fmgr/fmgr.c", "label": "Call sites", "sha256": "5606683a0658941ad4de9d56cc80f19873fd1260830d9955118002dffee38759"}], "sections": [{"title": "Call sites", "paragraphs": ["src/backend/utils/fmgr/fmgr.c:730", "src/backend/utils/fmgr/fmgr.c:761", "src/backend/utils/fmgr/fmgr.c:773"]}, {"code": "\t\t\t\t\t\tPGC_S_SESSION,\n\t\t\t\t\t\tGUC_ACTION_SAVE);\n\t}\n\n\t/* function manager hook */\n\tif (fmgr_hook)\n\t\t(*fmgr_hook) (FHET_START, &fcache->flinfo, &fcache->arg);\n\n\t/*\n\t * We don't need to restore GUC or userid settings on error, because the\n\t * ensuing xact or subxact abort will do that.  The PG_TRY block is only\n\t * needed to clean up the flinfo link.\n\t */\n\tsave_flinfo = fcinfo->flinfo;\n", "title": "Core call context: src/backend/utils/fmgr/fmgr.c:724\u2013738", "paragraphs": []}, {"code": "\t\t\t\t\t\t\t\t   ((ReturnSetInfo *) fcinfo->resultinfo)->isDone != ExprMultipleResult));\n\t}\n\tPG_CATCH();\n\t{\n\t\tfcinfo->flinfo = save_flinfo;\n\t\tif (fmgr_hook)\n\t\t\t(*fmgr_hook) (FHET_ABORT, &fcache->flinfo, &fcache->arg);\n\t\tPG_RE_THROW();\n\t}\n\tPG_END_TRY();\n\n\tfcinfo->flinfo = save_flinfo;\n\n\tif (fcache->proconfig)\n\t\tAtEOXact_GUC(true, save_nestlevel);", "title": "Core call context: src/backend/utils/fmgr/fmgr.c:755\u2013769", "paragraphs": []}, {"code": "\n\tif (fcache->proconfig)\n\t\tAtEOXact_GUC(true, save_nestlevel);\n\tif (OidIsValid(fcache->userid))\n\t\tSetUserIdAndSecContext(save_userid, save_sec_context);\n\tif (fmgr_hook)\n\t\t(*fmgr_hook) (FHET_END, &fcache->flinfo, &fcache->arg);\n\n\treturn result;\n}\n\n\n/*-------------------------------------------------------------------------\n *\t\tSupport routines for callers of fmgr-compatible functions\n *-------------------------------------------------------------------------", "title": "Core call context: src/backend/utils/fmgr/fmgr.c:767\u2013781", "paragraphs": []}], "signature": "typedef void (*fmgr_hook_type) (FmgrHookEventType event, FmgrInfo *flinfo, Datum *arg);\nextern PGDLLIMPORT fmgr_hook_type fmgr_hook;", "description": ["function manager hook"]}, "15": {"facts": [{"label": "Interface type", "value": "fmgr_hook_type"}, {"label": "Header", "value": "src/include/fmgr.h"}, {"label": "Subsystem", "value": "Logging and function calls"}, {"label": "Initial value", "value": "NULL (no hook installed)"}], "related": [], "release": {"ref": "REL_15_STABLE", "label": "15", "major": "15", "channel": "stable", "revision": "0351991b8e7c7b64382e2f30ce581a8f276590a6"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/0351991b8e7c7b64382e2f30ce581a8f276590a6/src/include/fmgr.h#L772", "path": "src/include/fmgr.h", "label": "Interface declaration", "sha256": "b56a1b91b4076f32336da5eb5d33591d22718be5559c40badc565620bc2feb4e"}, {"url": "https://github.com/postgres/postgres/blob/0351991b8e7c7b64382e2f30ce581a8f276590a6/src/backend/utils/fmgr/fmgr.c#L39", "path": "src/backend/utils/fmgr/fmgr.c", "label": "Core definition", "sha256": "f457cfce513c0ef2a5aefa69e29607f997039fb09dcbf8b26a36866bfdd9f2c4"}, {"url": "https://github.com/postgres/postgres/blob/0351991b8e7c7b64382e2f30ce581a8f276590a6/src/backend/utils/fmgr/fmgr.c#L716", "path": "src/backend/utils/fmgr/fmgr.c", "label": "Call sites", "sha256": "f457cfce513c0ef2a5aefa69e29607f997039fb09dcbf8b26a36866bfdd9f2c4"}], "sections": [{"title": "Call sites", "paragraphs": ["src/backend/utils/fmgr/fmgr.c:716", "src/backend/utils/fmgr/fmgr.c:747", "src/backend/utils/fmgr/fmgr.c:759"]}, {"code": "\t\t\t\t\t\tPGC_S_SESSION,\n\t\t\t\t\t\tGUC_ACTION_SAVE);\n\t}\n\n\t/* function manager hook */\n\tif (fmgr_hook)\n\t\t(*fmgr_hook) (FHET_START, &fcache->flinfo, &fcache->arg);\n\n\t/*\n\t * We don't need to restore GUC or userid settings on error, because the\n\t * ensuing xact or subxact abort will do that.  The PG_TRY block is only\n\t * needed to clean up the flinfo link.\n\t */\n\tsave_flinfo = fcinfo->flinfo;\n", "title": "Core call context: src/backend/utils/fmgr/fmgr.c:710\u2013724", "paragraphs": []}, {"code": "\t\t\t\t\t\t\t\t   ((ReturnSetInfo *) fcinfo->resultinfo)->isDone != ExprMultipleResult));\n\t}\n\tPG_CATCH();\n\t{\n\t\tfcinfo->flinfo = save_flinfo;\n\t\tif (fmgr_hook)\n\t\t\t(*fmgr_hook) (FHET_ABORT, &fcache->flinfo, &fcache->arg);\n\t\tPG_RE_THROW();\n\t}\n\tPG_END_TRY();\n\n\tfcinfo->flinfo = save_flinfo;\n\n\tif (fcache->proconfig)\n\t\tAtEOXact_GUC(true, save_nestlevel);", "title": "Core call context: src/backend/utils/fmgr/fmgr.c:741\u2013755", "paragraphs": []}, {"code": "\n\tif (fcache->proconfig)\n\t\tAtEOXact_GUC(true, save_nestlevel);\n\tif (OidIsValid(fcache->userid))\n\t\tSetUserIdAndSecContext(save_userid, save_sec_context);\n\tif (fmgr_hook)\n\t\t(*fmgr_hook) (FHET_END, &fcache->flinfo, &fcache->arg);\n\n\treturn result;\n}\n\n\n/*-------------------------------------------------------------------------\n *\t\tSupport routines for callers of fmgr-compatible functions\n *-------------------------------------------------------------------------", "title": "Core call context: src/backend/utils/fmgr/fmgr.c:753\u2013767", "paragraphs": []}], "signature": "typedef void (*fmgr_hook_type) (FmgrHookEventType event, FmgrInfo *flinfo, Datum *arg);\nextern PGDLLIMPORT fmgr_hook_type fmgr_hook;", "description": ["function manager hook"]}, "16": {"facts": [{"label": "Interface type", "value": "fmgr_hook_type"}, {"label": "Header", "value": "src/include/fmgr.h"}, {"label": "Subsystem", "value": "Logging and function calls"}, {"label": "Initial value", "value": "NULL (no hook installed)"}], "related": [], "release": {"ref": "REL_16_STABLE", "label": "16", "major": "16", "channel": "stable", "revision": "dcc37b7099a9f3cf2c75167d8dc92e75f96bc1fa"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/dcc37b7099a9f3cf2c75167d8dc92e75f96bc1fa/src/include/fmgr.h#L791", "path": "src/include/fmgr.h", "label": "Interface declaration", "sha256": "fd781147ec3f936a4628b97c5df595b60cb06ea1756ac9966f5f3fc118827135"}, {"url": "https://github.com/postgres/postgres/blob/dcc37b7099a9f3cf2c75167d8dc92e75f96bc1fa/src/backend/utils/fmgr/fmgr.c#L40", "path": "src/backend/utils/fmgr/fmgr.c", "label": "Core definition", "sha256": "bbd18adf8af5806d03cc5cbbf1e7ec211dac6da0bc2f10dc03c0dc091efc831b"}, {"url": "https://github.com/postgres/postgres/blob/dcc37b7099a9f3cf2c75167d8dc92e75f96bc1fa/src/backend/utils/fmgr/fmgr.c#L702", "path": "src/backend/utils/fmgr/fmgr.c", "label": "Call sites", "sha256": "bbd18adf8af5806d03cc5cbbf1e7ec211dac6da0bc2f10dc03c0dc091efc831b"}], "sections": [{"title": "Call sites", "paragraphs": ["src/backend/utils/fmgr/fmgr.c:702", "src/backend/utils/fmgr/fmgr.c:733", "src/backend/utils/fmgr/fmgr.c:745"]}, {"code": "\t\t\t\t\t\tPGC_S_SESSION,\n\t\t\t\t\t\tGUC_ACTION_SAVE);\n\t}\n\n\t/* function manager hook */\n\tif (fmgr_hook)\n\t\t(*fmgr_hook) (FHET_START, &fcache->flinfo, &fcache->arg);\n\n\t/*\n\t * We don't need to restore GUC or userid settings on error, because the\n\t * ensuing xact or subxact abort will do that.  The PG_TRY block is only\n\t * needed to clean up the flinfo link.\n\t */\n\tsave_flinfo = fcinfo->flinfo;\n", "title": "Core call context: src/backend/utils/fmgr/fmgr.c:696\u2013710", "paragraphs": []}, {"code": "\t\t\t\t\t\t\t\t   ((ReturnSetInfo *) fcinfo->resultinfo)->isDone != ExprMultipleResult));\n\t}\n\tPG_CATCH();\n\t{\n\t\tfcinfo->flinfo = save_flinfo;\n\t\tif (fmgr_hook)\n\t\t\t(*fmgr_hook) (FHET_ABORT, &fcache->flinfo, &fcache->arg);\n\t\tPG_RE_THROW();\n\t}\n\tPG_END_TRY();\n\n\tfcinfo->flinfo = save_flinfo;\n\n\tif (fcache->proconfig)\n\t\tAtEOXact_GUC(true, save_nestlevel);", "title": "Core call context: src/backend/utils/fmgr/fmgr.c:727\u2013741", "paragraphs": []}, {"code": "\n\tif (fcache->proconfig)\n\t\tAtEOXact_GUC(true, save_nestlevel);\n\tif (OidIsValid(fcache->userid))\n\t\tSetUserIdAndSecContext(save_userid, save_sec_context);\n\tif (fmgr_hook)\n\t\t(*fmgr_hook) (FHET_END, &fcache->flinfo, &fcache->arg);\n\n\treturn result;\n}\n\n\n/*-------------------------------------------------------------------------\n *\t\tSupport routines for callers of fmgr-compatible functions\n *-------------------------------------------------------------------------", "title": "Core call context: src/backend/utils/fmgr/fmgr.c:739\u2013753", "paragraphs": []}], "signature": "typedef void (*fmgr_hook_type) (FmgrHookEventType event, FmgrInfo *flinfo, Datum *arg);\nextern PGDLLIMPORT fmgr_hook_type fmgr_hook;", "description": ["function manager hook"]}, "17": {"facts": [{"label": "Interface type", "value": "fmgr_hook_type"}, {"label": "Header", "value": "src/include/fmgr.h"}, {"label": "Subsystem", "value": "Logging and function calls"}, {"label": "Initial value", "value": "NULL (no hook installed)"}], "related": [], "release": {"ref": "REL_17_STABLE", "label": "17", "major": "17", "channel": "stable", "revision": "163288afd32a448244c8df75b3c33181aadd7f20"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/163288afd32a448244c8df75b3c33181aadd7f20/src/include/fmgr.h#L791", "path": "src/include/fmgr.h", "label": "Interface declaration", "sha256": "30fbfb8334403e5a33e9415def77c0c72e77b9765e04e0931d717578768338fc"}, {"url": "https://github.com/postgres/postgres/blob/163288afd32a448244c8df75b3c33181aadd7f20/src/backend/utils/fmgr/fmgr.c#L40", "path": "src/backend/utils/fmgr/fmgr.c", "label": "Core definition", "sha256": "faddb12f2f442ba4e932bc1991ca1bce96413e0b80f95b9a147fa46f5a704376"}, {"url": "https://github.com/postgres/postgres/blob/163288afd32a448244c8df75b3c33181aadd7f20/src/backend/utils/fmgr/fmgr.c#L731", "path": "src/backend/utils/fmgr/fmgr.c", "label": "Call sites", "sha256": "faddb12f2f442ba4e932bc1991ca1bce96413e0b80f95b9a147fa46f5a704376"}], "sections": [{"title": "Call sites", "paragraphs": ["src/backend/utils/fmgr/fmgr.c:731", "src/backend/utils/fmgr/fmgr.c:762", "src/backend/utils/fmgr/fmgr.c:774"]}, {"code": "\t\t\t\t\t\t\t\t\t  context, source, GetUserId(),\n\t\t\t\t\t\t\t\t\t  action, true, 0, false);\n\t}\n\n\t/* function manager hook */\n\tif (fmgr_hook)\n\t\t(*fmgr_hook) (FHET_START, &fcache->flinfo, &fcache->arg);\n\n\t/*\n\t * We don't need to restore GUC or userid settings on error, because the\n\t * ensuing xact or subxact abort will do that.  The PG_TRY block is only\n\t * needed to clean up the flinfo link.\n\t */\n\tsave_flinfo = fcinfo->flinfo;\n", "title": "Core call context: src/backend/utils/fmgr/fmgr.c:725\u2013739", "paragraphs": []}, {"code": "\t\t\t\t\t\t\t\t   ((ReturnSetInfo *) fcinfo->resultinfo)->isDone != ExprMultipleResult));\n\t}\n\tPG_CATCH();\n\t{\n\t\tfcinfo->flinfo = save_flinfo;\n\t\tif (fmgr_hook)\n\t\t\t(*fmgr_hook) (FHET_ABORT, &fcache->flinfo, &fcache->arg);\n\t\tPG_RE_THROW();\n\t}\n\tPG_END_TRY();\n\n\tfcinfo->flinfo = save_flinfo;\n\n\tif (fcache->configNames != NIL)\n\t\tAtEOXact_GUC(true, save_nestlevel);", "title": "Core call context: src/backend/utils/fmgr/fmgr.c:756\u2013770", "paragraphs": []}, {"code": "\n\tif (fcache->configNames != NIL)\n\t\tAtEOXact_GUC(true, save_nestlevel);\n\tif (OidIsValid(fcache->userid))\n\t\tSetUserIdAndSecContext(save_userid, save_sec_context);\n\tif (fmgr_hook)\n\t\t(*fmgr_hook) (FHET_END, &fcache->flinfo, &fcache->arg);\n\n\treturn result;\n}\n\n\n/*-------------------------------------------------------------------------\n *\t\tSupport routines for callers of fmgr-compatible functions\n *-------------------------------------------------------------------------", "title": "Core call context: src/backend/utils/fmgr/fmgr.c:768\u2013782", "paragraphs": []}], "signature": "typedef void (*fmgr_hook_type) (FmgrHookEventType event, FmgrInfo *flinfo, Datum *arg);\nextern PGDLLIMPORT fmgr_hook_type fmgr_hook;", "description": ["function manager hook"]}, "18": {"facts": [{"label": "Interface type", "value": "fmgr_hook_type"}, {"label": "Header", "value": "src/include/fmgr.h"}, {"label": "Subsystem", "value": "Logging and function calls"}, {"label": "Initial value", "value": "NULL (no hook installed)"}], "related": [], "release": {"ref": "REL_18_STABLE", "label": "18", "major": "18", "channel": "stable", "revision": "753057e340da8f22e57c9a409ea7a235fd6a46bd"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/include/fmgr.h#L842", "path": "src/include/fmgr.h", "label": "Interface declaration", "sha256": "9ae7c92915f702ee93be2b6aed3574edfeb7fb2effae8beb256665f307db961b"}, {"url": "https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/utils/fmgr/fmgr.c#L40", "path": "src/backend/utils/fmgr/fmgr.c", "label": "Core definition", "sha256": "6cec6e3c08f69e71bfaa67294ac6889c9278a7963e2c676de709782c0c594e75"}, {"url": "https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/utils/fmgr/fmgr.c#L731", "path": "src/backend/utils/fmgr/fmgr.c", "label": "Call sites", "sha256": "6cec6e3c08f69e71bfaa67294ac6889c9278a7963e2c676de709782c0c594e75"}], "sections": [{"title": "Call sites", "paragraphs": ["src/backend/utils/fmgr/fmgr.c:731", "src/backend/utils/fmgr/fmgr.c:762", "src/backend/utils/fmgr/fmgr.c:774"]}, {"code": "\t\t\t\t\t\t\t\t\t  context, source, GetUserId(),\n\t\t\t\t\t\t\t\t\t  action, true, 0, false);\n\t}\n\n\t/* function manager hook */\n\tif (fmgr_hook)\n\t\t(*fmgr_hook) (FHET_START, &fcache->flinfo, &fcache->arg);\n\n\t/*\n\t * We don't need to restore GUC or userid settings on error, because the\n\t * ensuing xact or subxact abort will do that.  The PG_TRY block is only\n\t * needed to clean up the flinfo link.\n\t */\n\tsave_flinfo = fcinfo->flinfo;\n", "title": "Core call context: src/backend/utils/fmgr/fmgr.c:725\u2013739", "paragraphs": []}, {"code": "\t\t\t\t\t\t\t\t   ((ReturnSetInfo *) fcinfo->resultinfo)->isDone != ExprMultipleResult));\n\t}\n\tPG_CATCH();\n\t{\n\t\tfcinfo->flinfo = save_flinfo;\n\t\tif (fmgr_hook)\n\t\t\t(*fmgr_hook) (FHET_ABORT, &fcache->flinfo, &fcache->arg);\n\t\tPG_RE_THROW();\n\t}\n\tPG_END_TRY();\n\n\tfcinfo->flinfo = save_flinfo;\n\n\tif (fcache->configNames != NIL)\n\t\tAtEOXact_GUC(true, save_nestlevel);", "title": "Core call context: src/backend/utils/fmgr/fmgr.c:756\u2013770", "paragraphs": []}, {"code": "\n\tif (fcache->configNames != NIL)\n\t\tAtEOXact_GUC(true, save_nestlevel);\n\tif (OidIsValid(fcache->userid))\n\t\tSetUserIdAndSecContext(save_userid, save_sec_context);\n\tif (fmgr_hook)\n\t\t(*fmgr_hook) (FHET_END, &fcache->flinfo, &fcache->arg);\n\n\treturn result;\n}\n\n\n/*-------------------------------------------------------------------------\n *\t\tSupport routines for callers of fmgr-compatible functions\n *-------------------------------------------------------------------------", "title": "Core call context: src/backend/utils/fmgr/fmgr.c:768\u2013782", "paragraphs": []}], "signature": "typedef void (*fmgr_hook_type) (FmgrHookEventType event, FmgrInfo *flinfo, Datum *arg);\nextern PGDLLIMPORT fmgr_hook_type fmgr_hook;", "description": ["function manager hook"]}, "19": {"facts": [{"label": "Interface type", "value": "fmgr_hook_type"}, {"label": "Header", "value": "src/include/fmgr.h"}, {"label": "Subsystem", "value": "Logging and function calls"}, {"label": "Initial value", "value": "NULL (no hook installed)"}], "related": [], "release": {"ref": "REL_19_BETA4", "label": "19 Beta 4", "major": "19", "channel": "preview", "revision": "b73d13c32c834a2c8e1c60cb92f79530376cedf1"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/b73d13c32c834a2c8e1c60cb92f79530376cedf1/src/include/fmgr.h#L848", "path": "src/include/fmgr.h", "label": "Interface declaration", "sha256": "463896e0eff1b6376a90e00797cff2713a3afe093876efc8023ec11aa7021150"}, {"url": "https://github.com/postgres/postgres/blob/b73d13c32c834a2c8e1c60cb92f79530376cedf1/src/backend/utils/fmgr/fmgr.c#L42", "path": "src/backend/utils/fmgr/fmgr.c", "label": "Core definition", "sha256": "f4fa54b31f33083c137aac63f84702aa008fe8cea88d6bf51e90fff4d1cef28a"}, {"url": "https://github.com/postgres/postgres/blob/b73d13c32c834a2c8e1c60cb92f79530376cedf1/src/backend/utils/fmgr/fmgr.c#L733", "path": "src/backend/utils/fmgr/fmgr.c", "label": "Call sites", "sha256": "f4fa54b31f33083c137aac63f84702aa008fe8cea88d6bf51e90fff4d1cef28a"}], "sections": [{"title": "Call sites", "paragraphs": ["src/backend/utils/fmgr/fmgr.c:733", "src/backend/utils/fmgr/fmgr.c:764", "src/backend/utils/fmgr/fmgr.c:776"]}, {"code": "\t\t\t\t\t\t\t\t\t  context, source, GetUserId(),\n\t\t\t\t\t\t\t\t\t  action, true, 0, false);\n\t}\n\n\t/* function manager hook */\n\tif (fmgr_hook)\n\t\t(*fmgr_hook) (FHET_START, &fcache->flinfo, &fcache->arg);\n\n\t/*\n\t * We don't need to restore GUC or userid settings on error, because the\n\t * ensuing xact or subxact abort will do that.  The PG_TRY block is only\n\t * needed to clean up the flinfo link.\n\t */\n\tsave_flinfo = fcinfo->flinfo;\n", "title": "Core call context: src/backend/utils/fmgr/fmgr.c:727\u2013741", "paragraphs": []}, {"code": "\t\t\t\t\t\t\t\t   ((ReturnSetInfo *) fcinfo->resultinfo)->isDone != ExprMultipleResult));\n\t}\n\tPG_CATCH();\n\t{\n\t\tfcinfo->flinfo = save_flinfo;\n\t\tif (fmgr_hook)\n\t\t\t(*fmgr_hook) (FHET_ABORT, &fcache->flinfo, &fcache->arg);\n\t\tPG_RE_THROW();\n\t}\n\tPG_END_TRY();\n\n\tfcinfo->flinfo = save_flinfo;\n\n\tif (fcache->configNames != NIL)\n\t\tAtEOXact_GUC(true, save_nestlevel);", "title": "Core call context: src/backend/utils/fmgr/fmgr.c:758\u2013772", "paragraphs": []}, {"code": "\n\tif (fcache->configNames != NIL)\n\t\tAtEOXact_GUC(true, save_nestlevel);\n\tif (OidIsValid(fcache->userid))\n\t\tSetUserIdAndSecContext(save_userid, save_sec_context);\n\tif (fmgr_hook)\n\t\t(*fmgr_hook) (FHET_END, &fcache->flinfo, &fcache->arg);\n\n\treturn result;\n}\n\n\n/*-------------------------------------------------------------------------\n *\t\tSupport routines for callers of fmgr-compatible functions\n *-------------------------------------------------------------------------", "title": "Core call context: src/backend/utils/fmgr/fmgr.c:770\u2013784", "paragraphs": []}], "signature": "typedef void (*fmgr_hook_type) (FmgrHookEventType event, FmgrInfo *flinfo, Datum *arg);\nextern PGDLLIMPORT fmgr_hook_type fmgr_hook;", "description": ["function manager hook"]}, "20": {"facts": [{"label": "Interface type", "value": "fmgr_hook_type"}, {"label": "Header", "value": "src/include/fmgr.h"}, {"label": "Subsystem", "value": "Logging and function calls"}, {"label": "Initial value", "value": "NULL (no hook installed)"}], "related": [], "release": {"ref": "master", "label": "20 devel", "major": "20", "channel": "devel", "revision": "2c10c2ce4d7bcd57543a49ab402af02a39724e0a"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/2c10c2ce4d7bcd57543a49ab402af02a39724e0a/src/include/fmgr.h#L848", "path": "src/include/fmgr.h", "label": "Interface declaration", "sha256": "0cf665ac5d9971af06c92d1227d08b9b720ed9d650062f7d826164d72d4dc9aa"}, {"url": "https://github.com/postgres/postgres/blob/2c10c2ce4d7bcd57543a49ab402af02a39724e0a/src/backend/utils/fmgr/fmgr.c#L42", "path": "src/backend/utils/fmgr/fmgr.c", "label": "Core definition", "sha256": "98da7c443110c5d71726341881ff36e42ee5d14feb4161a93ebece60af3b677f"}, {"url": "https://github.com/postgres/postgres/blob/2c10c2ce4d7bcd57543a49ab402af02a39724e0a/src/backend/utils/fmgr/fmgr.c#L733", "path": "src/backend/utils/fmgr/fmgr.c", "label": "Call sites", "sha256": "98da7c443110c5d71726341881ff36e42ee5d14feb4161a93ebece60af3b677f"}], "sections": [{"title": "Call sites", "paragraphs": ["src/backend/utils/fmgr/fmgr.c:733", "src/backend/utils/fmgr/fmgr.c:764", "src/backend/utils/fmgr/fmgr.c:776"]}, {"code": "\t\t\t\t\t\t\t\t\t  context, source, GetUserId(),\n\t\t\t\t\t\t\t\t\t  action, true, 0, false);\n\t}\n\n\t/* function manager hook */\n\tif (fmgr_hook)\n\t\t(*fmgr_hook) (FHET_START, &fcache->flinfo, &fcache->arg);\n\n\t/*\n\t * We don't need to restore GUC or userid settings on error, because the\n\t * ensuing xact or subxact abort will do that.  The PG_TRY block is only\n\t * needed to clean up the flinfo link.\n\t */\n\tsave_flinfo = fcinfo->flinfo;\n", "title": "Core call context: src/backend/utils/fmgr/fmgr.c:727\u2013741", "paragraphs": []}, {"code": "\t\t\t\t\t\t\t\t   ((ReturnSetInfo *) fcinfo->resultinfo)->isDone != ExprMultipleResult));\n\t}\n\tPG_CATCH();\n\t{\n\t\tfcinfo->flinfo = save_flinfo;\n\t\tif (fmgr_hook)\n\t\t\t(*fmgr_hook) (FHET_ABORT, &fcache->flinfo, &fcache->arg);\n\t\tPG_RE_THROW();\n\t}\n\tPG_END_TRY();\n\n\tfcinfo->flinfo = save_flinfo;\n\n\tif (fcache->configNames != NIL)\n\t\tAtEOXact_GUC(true, save_nestlevel);", "title": "Core call context: src/backend/utils/fmgr/fmgr.c:758\u2013772", "paragraphs": []}, {"code": "\n\tif (fcache->configNames != NIL)\n\t\tAtEOXact_GUC(true, save_nestlevel);\n\tif (OidIsValid(fcache->userid))\n\t\tSetUserIdAndSecContext(save_userid, save_sec_context);\n\tif (fmgr_hook)\n\t\t(*fmgr_hook) (FHET_END, &fcache->flinfo, &fcache->arg);\n\n\treturn result;\n}\n\n\n/*-------------------------------------------------------------------------\n *\t\tSupport routines for callers of fmgr-compatible functions\n *-------------------------------------------------------------------------", "title": "Core call context: src/backend/utils/fmgr/fmgr.c:770\u2013784", "paragraphs": []}], "signature": "typedef void (*fmgr_hook_type) (FmgrHookEventType event, FmgrInfo *flinfo, Datum *arg);\nextern PGDLLIMPORT fmgr_hook_type fmgr_hook;", "description": ["function manager hook"]}}, "content_hash": "4a575546e6f51fba9d5c8867a180462172240e1ba692cebdba7656cd970a59bb", "imported_at": "2026-09-27T09:57:58.842"}, "snapshot": {"facts": [{"label": "Interface type", "value": "fmgr_hook_type"}, {"label": "Header", "value": "src/include/fmgr.h"}, {"label": "Subsystem", "value": "Logging and function calls"}, {"label": "Initial value", "value": "NULL (no hook installed)"}], "related": [], "release": {"ref": "REL_18_STABLE", "label": "18", "major": "18", "channel": "stable", "revision": "753057e340da8f22e57c9a409ea7a235fd6a46bd"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/include/fmgr.h#L842", "path": "src/include/fmgr.h", "label": "Interface declaration", "sha256": "9ae7c92915f702ee93be2b6aed3574edfeb7fb2effae8beb256665f307db961b"}, {"url": "https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/utils/fmgr/fmgr.c#L40", "path": "src/backend/utils/fmgr/fmgr.c", "label": "Core definition", "sha256": "6cec6e3c08f69e71bfaa67294ac6889c9278a7963e2c676de709782c0c594e75"}, {"url": "https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/utils/fmgr/fmgr.c#L731", "path": "src/backend/utils/fmgr/fmgr.c", "label": "Call sites", "sha256": "6cec6e3c08f69e71bfaa67294ac6889c9278a7963e2c676de709782c0c594e75"}], "sections": [{"title": "Call sites", "paragraphs": ["src/backend/utils/fmgr/fmgr.c:731", "src/backend/utils/fmgr/fmgr.c:762", "src/backend/utils/fmgr/fmgr.c:774"]}, {"code": "\t\t\t\t\t\t\t\t\t  context, source, GetUserId(),\n\t\t\t\t\t\t\t\t\t  action, true, 0, false);\n\t}\n\n\t/* function manager hook */\n\tif (fmgr_hook)\n\t\t(*fmgr_hook) (FHET_START, &fcache->flinfo, &fcache->arg);\n\n\t/*\n\t * We don't need to restore GUC or userid settings on error, because the\n\t * ensuing xact or subxact abort will do that.  The PG_TRY block is only\n\t * needed to clean up the flinfo link.\n\t */\n\tsave_flinfo = fcinfo->flinfo;\n", "title": "Core call context: src/backend/utils/fmgr/fmgr.c:725\u2013739", "paragraphs": []}, {"code": "\t\t\t\t\t\t\t\t   ((ReturnSetInfo *) fcinfo->resultinfo)->isDone != ExprMultipleResult));\n\t}\n\tPG_CATCH();\n\t{\n\t\tfcinfo->flinfo = save_flinfo;\n\t\tif (fmgr_hook)\n\t\t\t(*fmgr_hook) (FHET_ABORT, &fcache->flinfo, &fcache->arg);\n\t\tPG_RE_THROW();\n\t}\n\tPG_END_TRY();\n\n\tfcinfo->flinfo = save_flinfo;\n\n\tif (fcache->configNames != NIL)\n\t\tAtEOXact_GUC(true, save_nestlevel);", "title": "Core call context: src/backend/utils/fmgr/fmgr.c:756\u2013770", "paragraphs": []}, {"code": "\n\tif (fcache->configNames != NIL)\n\t\tAtEOXact_GUC(true, save_nestlevel);\n\tif (OidIsValid(fcache->userid))\n\t\tSetUserIdAndSecContext(save_userid, save_sec_context);\n\tif (fmgr_hook)\n\t\t(*fmgr_hook) (FHET_END, &fcache->flinfo, &fcache->arg);\n\n\treturn result;\n}\n\n\n/*-------------------------------------------------------------------------\n *\t\tSupport routines for callers of fmgr-compatible functions\n *-------------------------------------------------------------------------", "title": "Core call context: src/backend/utils/fmgr/fmgr.c:768\u2013782", "paragraphs": []}], "signature": "typedef void (*fmgr_hook_type) (FmgrHookEventType event, FmgrInfo *flinfo, Datum *arg);\nextern PGDLLIMPORT fmgr_hook_type fmgr_hook;", "description": ["function manager hook"]}, "comparison": {"left": "17", "right": "18", "status": "unchanged", "diff": ""}}